正规学位与算法问题解决能力就是答案。一直以来都是如此。
A formal degree and algorithmic problem-solving is the answer. Always has been

原始链接: https://zaksa.zip/blog/formal-education-is-the-answer/

作者将软件工程比作外科手术,认为其需要严格的纪律和深厚的理论基础。尽管目前行业内存在轻视正规计算机科学教育和算法面试(如“LeetCode”)的趋势,但作者主张,这些基础知识对于长期的职业成功和技术能力至关重要。 文章指出,许多自学成才或走捷径的工程师往往表现得较为“浅薄”,他们倾向于纠结语法争议或框架偏好等琐碎问题,却忽略了核心的系统架构、测试和调试。作者观察到,那些跳过严格训练的人往往缺乏深度,无法处理复杂问题,一旦技术转型便会陷入困境。 在人工智能时代,作者认为深入理解计算机系统和解决算法问题的能力已不再是选修课,而是职业生存和保持竞争优势的关键。尽管作者承认教育存在经济门槛以及某些学术机构的精英主义,但仍总结道,有抱负的工程师应当拥抱正规学习并勤于磨练解决问题的能力,这不仅是为了工作,更是出于对技术的“热爱”。成功需要克服天真,并投身于深入掌握这门技艺的艰苦磨练之中。

```Hacker News 最新 | 过往 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 正式学位和算法问题解决能力就是答案。一直以来都是如此 (zaksa.zip) 4 分,作者:zaksa,2 小时前 | 隐藏 | 过往 | 收藏 | 2 条评论 帮助 hellisothers 3 分钟前 | 下一条 [–] 典型的守门员论调,坚持认为必须有计算机科学(CS)学位才能写出好的软件。我没有学位,但有 20 多年的成功职业生涯并获得过嘉奖,我知道很多同行也是如此。显然,有 CS 学位的人也同样成功,反之亦然。我和拥有或没有 CS 学位的糟糕工程师都共事过。 这只是一个信号,而不是唯一的信号。 回复 herdrick 7 分钟前 | 上一条 [–] 写得很好。我的背景与你相似,我同意你大部分的观察和结论。不过,关于名牌大学迎合“富家子弟”的那部分,我不太同意,至少在理工科(STEM)系不是这样。 回复 准则 | 常见问题 | 列表 | API | 安全 | 法律 | 申请 YC | 联系 搜索: ```
相关文章

原文

Have you ever handled a surgical scalpel? It’s an incredible tool - small, light and sharper than anything of its size and purpose. It takes thousands of hours of practice before someone is authorized to use it on human skin, and mastering it takes a lifetime.

You don’t want to give this tool to the wrong person. No matter how motivated, open to learning, well-meaning and hard-working they are, they will mess things up. They might be a chef, a hairdresser or any other professional handler of a cutting tool. Despite their adjacent experience, they will mess up. Handling a scalpel for the purpose of surgery is a difficult job with high responsibility.

I like to use this analogy when thinking about the current state of software. We need a hard filter for people who want to use AI on a computer for the purpose of programming it. It’s a bittersweet statement to make from someone who is both qualified and not qualified to make such an argument:

For the majority of my career, I neither had a formal, rigorous computer science education, nor I bothered to invest time in “leetcoding”. I did well nevertheless. I was and still am a person who builds software to solve problems. I don’t always do it for money, I do it because I always wanted to do it. At the same time, I’ve got a wealth of experience working with bootcamp developers, former physicists, engineers who either never finished or never got particularly far in their education. Experience has shown that, things rarely work out in the long-term if you aim to have a successful career without a degree or by skirting coding interviews. Lacking these skills in the current conditions might be career-ending.

Some anecdotes:

I once worked at a startup where there was a senior engineer who’d force everyone on the team to order their file imports alphabetically. He also had the craziest linting rules ever, and whatever he could not codify in linting, he’d make up with comments in pull requests. Ironically, that same startup had zero unit or e2e tests for the application layer, and a small bunch of smoke tests for the backend services. Testing and deployment was absolute hell that took weekends. They sure had their priorities straight.

At another gig, there was a person who’d spent hours arguing about the length of the maximum symbols before wrapping text in an IDE, had a strong opinion on the “tabs versus spaces” debate, and also had custom-built everything, including an email service that would always hang and lose scheduled emails once we started onboarding more customers. Accept that your magnus opus of software is garbage and use a third-party service that doesn’t churn customers.

I’ve also endured language and framework experts. They’re the type of developers who’re relatively good in a very small subset of technologies, but completely lost in anything adjacent to them, and also are completely clueless about the fundamentals. These are the people who live in constant paranoia that the company they work for will make the framework they’re expert in obsolete, and force them to learn something new. It is honestly tiring to hear a hour-long tirade of how great Angular in comparison to the mediocrity of React, or the inferiority of Kotlin in comparison to Java. Just suck it up and use whatever solves the problem best.

There are also completely clueless people who somehow slip through cracks, mostly in corporate environments. There was this person who touted to be a Linux expert who I asked for advice on my homelab setup. His initial spiel was good, explaining me a bunch of fun facts about the different distros and systemd, but after a few weeks of discussions, his suggestions stopped adding up, so I became suspicious. After prodding him with some fundamental questions about operating systems and networking, it turned out that he has a very surface-level knowledge and my homelab setup was the most complicated thing he’d ever seen. There was also a similar situation where a particular piece of functionality wasn’t working, and since I didn’t consider myself good at the particular piece of technology stack, the person who wrote it and owned it turned out not being able to read and debug his own work.

Most of the people mentioned above held more senior positions than me at the time I worked with them, and all of them considered a formal education and computer science and skills in algorithmic problem-solving to not be important for a successful career. That mindset was either condoned or celebrated at many places I worked in. The people I wrote above weren’t considered bad performers.

If I had to categorize the “no need for education, no need for algorithms” crowd of our field, they’d fall into three categories: They either focus on the wrong things when developing software, they have a very shallow knowledge and lack of regard of how difficult good engineering is, or they’re utterly clueless and rely on good soft skills and politics.

Perhaps I’ve grown too resentful of dealing with people who take shortcuts where shortcuts are not supposed to be taken.

A computer science degree at a reputable university gives a student, at the very worst, an overview of how a computer works and what it can do. For the more motivated, it also offers an opportunity to have an appreciation of the depth and complexity of computer systems. I believe that it is genuinely difficult to obtain that level of understanding and appreciation by just working at a job, particularly in a post-AI world.

“Grinding leetcode” is supposed to be a pleasant past time, when not done for the purpose of securing a job. It nurtures a particular type of thinking that aids engineers to visualize problems in their heads, solve well-defined problems with code and get a decent hang of a programming language. Problem-solving for fun doesn’t make coding interviews less stressful… it’s a competition, after all. Competitions re supposed to push people to prepare well and bring the best out of themselves. This is inherently stressful. Besides, there are hardly any economically viable ways to filter thousands of candidates who are all very smart and want earn a high salary.

Neither the prestigious degree nor the good proficiency in algorithmic problem-solving guarantee a career success. They are factors that make statistics work in the favor of the candidate. In a rough market like today’s, they provide security. In the post-AI age, they will offer an immense competitive advantage because they provide a great opportunity for skill retention and development.

There are also the outliers, the edge-cases who went into it for the money and made it far, but I haven’t met anyone who’s not incredibly miserable and sour with their job, so they’re not worth my keystrokes.

For many of us who made it from nothing, there’s also the financial aspect of making it to the high echelons of software engineering. Before being able to afford a prestigious education and time to indulge in algorithmic problem-solving, I wrote software to survive. Furthermore O regard the education system in the larger part of the world to be outrageously perverted. Prestigious universities tend to rich kids, nepo-babies who’re becoming increasingly detached from the world and impudent in their dealings with society (shout out to SBF).

I cannot offer any reasonable, erudite solution to the problem of financing an education, or to offer solace. What worked for me was to be ruthless unforgiving and to fight for my money. Things did not start working out until I stopped being naive and hard-working and started cutting people off and taking what I deserve. To my surprise, this did not burn as many bridges as it awestruck people and instilled respect. It’s a rough world out there.

Stay in school, don’t be a tool, learn to problem-solve for the love of the game.

联系我们 contact @ memedata.com