Hacker News new | ask | show | jobs
by nikdaheratik 3651 days ago
I have very mixed feelings about this article. For one thing, there are a couple of different kinds of CS programs. The basic division is, or used to be, whether it was more Math or Engineering heavy. In fact, some schools attach the program to a BS in the Math department and others in the engineering with more exposure to EE and Computer Engineering. Neither of these are necessarily helpful for becoming a programmer in today's market, but they do generate very different experiences.

The biggest benefit for me was the complete understanding and model you get of the entire computer. How it works, what theories it is based on, why things are the way they are (in terms of the Turing model, the way microprocessors work, etc).

I don't believe this knowledge is helpful from a software engineering point, and I may have been a better programmer if I had spent those years learning more about how to work as a team and how to solve real-world problems. However, I do feel that it has allowed me to switch between different fields of programming without completely being thrown for a loop. It has allowed me to understand the issues that crop up when something goes wrong on a much deeper level, or why problems crop up on one part of "the stack" that I may not have understood had I focused merely on learning how to program. These are personally valuable to me, whether or not they may have been more valuable to my career.

1 comments

Despite those benefits you list, you still don't think that knowledge makes you a better software engineer?

I definitely think that understanding the lower levels helps me write better software, largely for the reasons you list.

I do think it makes you a better engineer, but I also think that the first year or two of working in a group with other developers taught me alot more about becoming a good software developer than alot of what I learned in college. You learn more about how computers work in Uni, but you learn more about how software development groups work by doing software development.