I think the learn to program by programming adage came from a lack of places teaching the stuff that makes people good programmers. I’ve never worked with someone who has gone through one of the new programming schools, but I don’t think they purport to turn out senior-level programmers, much less 99th percentile programmers. As far as I can tell, folks either learn everything beyond the mechanics and algorithms of programming from your seniors in the workplace or discover it for themself.
So I’d say that there are nodes on the graph that I don’t have labels for, and are not taught formally as far as I know. The best way to learn them is to read lots of big well written code bases and try to figure out why everything was done one way and not some other. Second best then maybe is to write a few huge code bases and figure out why things keep falling apart?
As far as I can tell, folks either learn everything beyond the mechanics and algorithms of programming from your seniors in the workplace or discover it for themself.
… or from Stack Overflow / Wikipedia, no? When encountering a difficult problem, one can either ask someone more knowledgeable, figure it out himself, or look it up on the internet.
I’m talking about things on the level of selecting which concepts are necessary and useful to implement in a system or higher. At the simplest that’s recognizing that you have three types of things that have arbitrary attributes attached and implementing an underlying thing-with-arbitrary-attributes type instead of three special cases. You tend to get that kind of review from people with whom you share a project and a social relationship such that they can tell you what you’re doing wrong without offense.
I think the learn to program by programming adage came from a lack of places teaching the stuff that makes people good programmers. I’ve never worked with someone who has gone through one of the new programming schools, but I don’t think they purport to turn out senior-level programmers, much less 99th percentile programmers. As far as I can tell, folks either learn everything beyond the mechanics and algorithms of programming from your seniors in the workplace or discover it for themself.
So I’d say that there are nodes on the graph that I don’t have labels for, and are not taught formally as far as I know. The best way to learn them is to read lots of big well written code bases and try to figure out why everything was done one way and not some other. Second best then maybe is to write a few huge code bases and figure out why things keep falling apart?
… or from Stack Overflow / Wikipedia, no? When encountering a difficult problem, one can either ask someone more knowledgeable, figure it out himself, or look it up on the internet.
I’m talking about things on the level of selecting which concepts are necessary and useful to implement in a system or higher. At the simplest that’s recognizing that you have three types of things that have arbitrary attributes attached and implementing an underlying thing-with-arbitrary-attributes type instead of three special cases. You tend to get that kind of review from people with whom you share a project and a social relationship such that they can tell you what you’re doing wrong without offense.