4 ms·
You're experiencing what basically every smart computer science graduate does when going off into the world and encountering codebases that serve customers. Th
by chubot 11y ago
You're experiencing what basically every smart computer science graduate does when going off into the world and encountering codebases that serve customers. They're huge and messy.
I had this same rude awakening at 22. You're used to dealing with 500 lines of code; now you have to deal with 200,000 lines of code. Even 10,000 was too much for me at that age.
Computer science is about being smart and understanding things. Software engineering is about realizing how dumb you are compared to the task, and developing strategies to control that complexity and manage your time.
The best programmers I've seen have these qualities:
1) They have simply exercised their brains enough to wrap their heads around 50,000+ lines of code. They know how to read code.
2) On top of that, they know how structure their code to avoid having to understand all of it line by line. They write their code to facilitate "chunking"', the same skill that a chess player uses to assess a board position quickly.
3) They trade off time vs quality by sweating the details WHEN IT MATTERS. For core parts of the program, it absolutely pays off to do original research. For example, writing data structures for search algorithms or graphics engines.
But the data structures are less than 10% of the code in an information retrieval system; the graphics engine is is probably 10% of the code in a real game.
For the rest of the system, you need to plow through it quickly, perhaps copying and pasting code from older systems.
Usually you have different developers working on these parts -- some people are good at plowing through tasks; some people are good at working on well crafted code solving a difficult problem. But the latter are usually experienced developers in their 30's, not fresh grads at 22. At 22 you'll be tasked with plowing through code.
After 13 years of professional programming, I think that "taste" is basically learning what matters. Lots of things I obsessed over when I was 22 didn't end up mattering. When you can only work on 1,000 lines of code at a time, you're simply missing the big picture. So basically that's a thing you have to work on to succeed as a developer.
With that said, there's also the fact that most software is shit :) Software is shitty and in particular insecure due to its sheer size.
http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.ht...
So I described the status quo in the industry... but if you can somehow move beyond that, that's very valuable territory.