Should I go to UC Berkeley for 75k a year and take on the debt?
I’m a computer science professor, I hold a PhD, and I live in California. If I had a bright, hardworking child who wanted to study STEM, while I would support their preference, I would strongly discourage them from attending UC Berkeley.
The class sizes are outrageous, especially in CS. The intro class holds up to 2,000 students in the fall.
If you’re impressed by research, realize that it’s much harder to get into a lab as an undergraduate, and if you do, you’ll likely be mentored by a more senior undergraduate who is themselves being mentored by a grad student who will occasionally meet with the professor.
Living in Berkeley is absurd. The cost is high, the competition for apartments is intense, and much of the housing is low quality.
I get the appeal, and perhaps I’d have a different opinion for the humanities and social sciences, but for STEM, I’d choose an academically more conducive environment.
Now if you’re taking on $75,000 a year in debt, that’s just nonsense. Absolute nonsense. That’s so far beyond the scope of reason that it should be an entrance test; if you’re willing to do so, you should not be at Berkeley.
中文翻译
我应该每年花费7.5万美元去加州大学伯克利分校,并承担债务吗? 我是一名计算机科学教授,拥有博士学位,居住在加利福尼亚。如果我有一个聪明、勤奋的孩子想要学习STEM(科学、技术、工程和数学),虽然我会支持他们的选择,但我会强烈劝阻他们不要去加州大学伯克利分校。
课程规模太庞大,特别是在计算机科学领域。入门课程在秋季学期最多容纳2,000名学生。
如果你对研究印象深刻,要意识到作为本科生要进入实验室会更加困难,如果成功进入,你可能会由一名更高年级的本科生指导,而他们自己则是一名研究生生导师的学生,偶尔会与教授见面。
住在伯克利是荒谬的。成本高昂,公寓竞争激烈,而且大部分住房质量较低。
我理解其吸引力,也许我对人文和社会科学有不同的看法,但对于STEM来说,我会选择一个学术环境更有利的地方。
现在,如果你每年承担7.5万美元的债务,那就太荒谬了。绝对的荒谬。这已经远远超出了合理范围,应该成为一个入学考试;如果你愿意这样做,那么你不应该选择伯克利。
The question “Kubernetes vs. Docker?” in itself is rather absurd, like comparing apples to oranges. One isn’t an alternative to the other. Quite the contrary, Kubernetes can run without Docker and Docker can function without Kubernetes. But Kubernetes can (and does) benefit greatly from Docker and vice versa.
中文翻译
"“Kubernetes vs. Docker?”这个问题本身相当荒谬,就像比较苹果和橙子一样。它们不是相互替代的。恰恰相反,Kubernetes 可以在没有 Docker 的情况下运行,而 Docker 也可以在没有 Kubernetes 的情况下工作。但 Kubernetes 可以(并且确实)从 Docker 获得很大的好处,反之亦然。"
Docker is a standalone application which can be installed on any computer to run containerized applications. Containerization is an approach of running applications on an OS such that the application is isolated from the rest of the system. You create an illusion for your application that it is getting its very own OS instance, although there may be other containers running on the same system. Docker is what enables us to run, create and manage containers on a single operating system.
中文翻译
Docker 是一个独立的应用程序,可以安装在任何计算机上,用于运行容器化应用程序。容器化是一种在操作系统上运行应用程序的方法,使应用程序与系统的其余部分隔离开来。您为您的应用程序创建了一个假象,让它认为它有自己的操作系统实例,尽管可能在同一系统上运行其他容器。Docker 是让我们能够在单个操作系统上运行、创建和管理容器的工具。
Kubernetes turns it up to eleven. If you have Docker installed on a bunch of hosts (different operating systems), you can leverage Kubernetes. These nodes or Docker hosts can be bare metal servers or virtual machines. Kubernetes can then allow you to automate container provisioning, networking, load-balancing, security and scaling across all these nodes from a single command-line or dashboard. A collection of nodes that are managed by a single Kubernetes instance is referred to as a Kubernetes cluster.
中文翻译
Kubernetes 把它推向了更高级别。如果您在一堆主机上安装了 Docker(不同的操作系统),您可以利用 Kubernetes。这些节点或 Docker 主机可以是裸机服务器或虚拟机。然后,Kubernetes 可以允许您从单个命令行或仪表板自动化容器的配置、网络、负载均衡、安全性和扩展,跨所有这些节点。由单个 Kubernetes 实例管理的一组节点被称为 Kubernetes 集群。
Now, why would you need to have multiple nodes in the first place? The two main motivations behind it are:
中文翻译
那么,为什么首先需要多个节点呢?背后的两个主要动机是
To make the infrastructure more robust — Your application will be online, even if some of the nodes go offline, i.e, High Availability. To make your application more scalable — If workload increases simply spawn more containers and/or add more nodes to your Kubernetes cluster. “Kubernetes automates the process of scaling, managing, updating and removing containers. In other words, it is a container orchestration platform. While Docker is at the heart of the containerization, it enables us to have containers in the first place.
中文翻译
为了使基础设施更加健壮 — 即使一些节点下线,您的应用程序也将在线运行,即实现高可用性。为了使您的应用程序更加可扩展 — 如果工作负载增加,只需生成更多容器和/或添加更多节点到您的 Kubernetes 集群。 "Kubernetes 自动化了扩展、管理、更新和删除容器的过程。换句话说,它是一个容器编排平台。虽然 Docker 是容器化的核心,它使我们能够首次使用容器。
In principle, Kubernetes can work with any containerization technology. Two of the most popular options that Kubernetes can integrate with are rkt and Docker. However, Docker has won the greatest market segment and that has led to a lot of effort in perfecting the integration between Docker and Kubernetes, more than any other containerization technology.
中文翻译
原则上,Kubernetes 可以与任何容器化技术一起使用。Kubernetes 可以与最流行的两种选项集成,分别是 rkt 和 Docker。然而,Docker 赢得了最大的市场份额,这导致了在 Docker 和 Kubernetes 之间完善集成的许多努力,超过了任何其他容器化技术。
Similarly, Docker Inc., the company behind Docker, offers their own container orchestration engine, named Docker Swarm. But even they realized the fact that Kubernetes has risen to the point that even Docker for Desktop (MacOS and Windows) comes with its own Kubernetes distribution.
中文翻译
同样地,Docker Inc.,即 Docker 背后的公司,提供了他们自己的容器编排引擎,名为 Docker Swarm。但即使他们也意识到 Kubernetes 已经崭露头角,以至于即使是 Docker for Desktop(适用于 MacOS 和 Windows)也附带了自己的 Kubernetes 发行版。
If anyone was nervous about adopting Kubernetes for their Docker-based product, that last point would get rid of all of the doubts. Both projects have wholeheartedly embraced each other and have benefited tremendously from this symbiosis.
中文翻译
如果有人对于在其基于 Docker 的产品中采用 Kubernetes 感到紧张,那么最后一点将消除所有疑虑。这两个项目都全力拥抱了彼此,并从这种共生关系中获得了巨大的好处。
These projects are more than technologies, they are a community of people, who, despite their differences, are is composed of some of the brightest minds in the industry. When like-minded individuals collaborate, they exchange bright ideas and learn best practices from one another.
These are some of such ideas that both, Kubernetes and Docker, share:
中文翻译
这些项目不仅仅是技术,它们是一群人的社区,尽管他们之间存在差异,但组成这些社区的人才是该行业中最杰出的一些人。当志同道合的个体合作时,他们交流睿智的思想,并从彼此那里学习最佳实践。
以下是该段话中的关键单词的中文意思:
Their love for microservice based architecture (more on this later). Their love for open source community. Both are largely open source projects. They are largely written in Go which allows them to be shipped as small lightweight binaries. They use human-readable YAML files to specify application stacks and their deployments. In theory, you can learn about one without having a clue about the other. But keep in mind that in practice you will benefit a lot more if you start with the simple case of Docker running on a single machine, and then gradually understand how Kubernetes comes into play.
中文翻译
他们对微服务架构的热爱(稍后会详细介绍)。 他们对开源社区的热爱。它们都是大规模的开源项目。 它们主要是用 Go 语言编写的,这使它们能够作为小型轻量级二进制文件进行发布。 它们使用人类可读的 YAML 文件来指定应用程序堆栈及其部署。 从理论上讲,您可以了解其中一个而对另一个一无所知。但请记住,在实践中,如果您从单台机器上运行 Docker 的简单情况开始,然后逐渐了解 Kubernetes 如何运作,您将受益良多。
Containers are amazing! They allow us to think about services and systems in a completely new and digital way. Both Docker and Kubernetes are here to stay. They are continuously changing to transform themselves into something better in the future. Keep your company involved in the Technology era and implement the containers that your infrastructure needs the most.
中文翻译
容器是令人惊奇的!它们使我们能够以全新的数字方式思考服务和系统。Docker 和 Kubernetes 都将继续存在。它们正在不断变化,以将自己转变为未来更好的东西。让您的公司参与科技时代,并实施您的基础设施最需要的容器。
Designing newer software for a container-centric platform would not only make your apps more scalable but also more future-proof. Sticking to the old VMs might work for now, but a few years down the line you will eventually have to either bear the heavy cost of migrating everything into containers or abandon your projects altogether. Hopefully, now if someone brings up the topic of “Kubernetes vs Docker” you won’t get swept away by jargons.
中文翻译
为容器为中心的平台设计新的软件不仅会使您的应用程序更具可扩展性,而且更具未来可塑性。坚持使用旧的虚拟机可能暂时有效,但几年后,您最终将不得不承担将所有内容迁移到容器中的巨大成本,或者完全放弃您的项目。希望现在如果有人提出“Kubernetes vs Docker”的话题,您不会被术语所迷惑。
Is going to college for computer science with a focus of software engineering still worth it in 2023? I just finished my freshman year of college.
中文翻译
在2023年,选择攻读计算机科学专业,专注于软件工程方向,是否仍然值得?我刚刚完成大学一年级。
You have three choices:
1.Continue in computer science.
2.Change to a different major.
3.Drop out of college.
Each of these carries risk and potential rewards. If you're only pursuing CS because you dream of making $150k
right after graduating college, I think you should choose something else. The market has shifted and that was not a sustainable reality. I warned that it would come to an end. There will be great opportunities, but making $300k 3–4 years out of college will be reserved for exceptional talent.
But if you stay, you will get a solid education that balances theory and practice. I don't know what the job market will look like in two years when you start applying for post-grad jobs, but there will be computing jobs.
中文翻译
你有三个选择:
每个选择都有风险和潜在回报。如果你只是追求计算机科学专业,因为你梦想着在大学毕业后能够赚取15万美元,我认为你应该选择其他专业。市场已经发生了变化,那并不是一个可持续的现实。我曾警告过这种情况会结束。将来会有很好的机会,但赚取30万美元的机会将仅限于非凡的人才。
但是,如果你选择留下来,你将得到一种理论与实践相结合的扎实教育。我不知道两年后你开始申请毕业后的工作时,就业市场会是什么样子,但计算机相关的工作机会将会存在。
As a computer science educator if you can teach only one thing to your students what would it be?
中文翻译
作为一名计算机科学教育者,如果你只能教授一件事给你的学生,那会是什么?
Algorithmic thinking. There's a lot that underlies that, but you fundamentally need to be able to learn how to break problems down in to smaller solvable tasks, and apply tightly constrained instructions to solve those tasks. The rest is just syntactic sugar and math. Really, really important math.
中文翻译
Algorithmic thinking(算法思维)是一种重要的思维方式,它需要学会将问题分解为可解决的小任务,并应用严格限定的指令来解决这些任务。除此之外,算法思维还涉及到一些基础的数学知识。算法思维是计算机科学中的核心概念,它帮助我们设计和实现高效的解决方案。除了语法和数学知识外,算法思维是非常重要的。
I want to teach my students how to fail. Part of learning to fail is simple programming practice. It's fundiversión to write code, and the temptation is to write dozens of lines of code at a time. It's much less fun to debug code, and when your dozens of lines fails in strange ways you've made your life far more difficult than it needs to be. So take baby steps: write the smallest number of lines that can be tested, then stop and test it. That code will fail, too, but debugging it will be a relatively pain-free process and you get the psychological boost of solving lots of small failures relatively quickly.
中文翻译
"我想教我的学生如何失败。学习失败的一部分是简单的编程实践。编写代码很有趣,很容易一次写下几十行代码。但调试代码就没那么有趣了,当你的几十行代码以奇怪的方式失败时,你让自己的生活变得比必要的困难得多。所以要采取小步骤:写下最少的可以测试的代码行,然后停下来进行测试。那段代码也会失败,但调试起来相对轻松,而且你会获得在相对短的时间内成功解决许多小失败的心理推动。"
Source control also has a role to play here. If you commit often, you can occasionally take larger risks secure in knowing that if it doesn't work out, one command will bring you back to a known state.
中文翻译
"版本控制在这方面也起着重要作用。如果经常提交代码,你可以偶尔冒一些较大的风险,因为你知道如果不成功,只需一个命令就能将代码还原到已知状态。"
The deeper lesson is divorcing code that fails from the feeling of failure. If your code X produced state Y and you wanted state Z, and you take this personally, you're in for a long semester. If, on the other hand, I can convince you that you've now learned something you didn't know before about code X, then you're much less likely to feel helpless. If you're not feeling helpless, it's a lot easier to try something different and eventually (after visiting states P, D, Q, and aleph-1) getting to Z.
中文翻译
"更深层次的教训是将失败的代码与失败的感觉分离开来。如果你的代码 X 产生了状态 Y,而你想要的是状态 Z,如果你将此视为个人失败,那么你将度过漫长的学期。另一方面,如果我能够说服你,让你相信你现在学到了关于代码 X 的一些以前不知道的东西,那么你就不太可能感到无助。如果你不感到无助,尝试不同的方法就会容易得多,最终(在经历了状态 P、D、Q 和 aleph-1 之后)达到状态 Z。"
Once you've learned how to do controlled failures and divorce programming failure from the emotion of failure, programming starts to become pretty enjoyable and your learning rate goes up by an order of magnitude.
中文翻译
"一旦你学会了如何进行可控的失败,并将编程失败与情绪分离开来,编程就会变得非常有乐趣,你的学习速度将提高一个数量级。"