Last year in Programmers as Human Beings, I mentioned that I was reading Programmers At Work. It's a great collection of interviews with famous programmers circa 1986. All the interviews are worth reading, but the interview with Bill Gates has one particular answer that cuts to the bone:
Will not running make you a better runner? Will not playing tennis make you a better tennis player?
I think the physical analogies break down. Programming is a purely mental activity. And as Iâve cited multiple times in the original post and in the comments, the distribution of skill in programming is extremely lopsided relative to other professions. Thereâs no normal curve: itâs a double hump of those who can, and those who canât.
So if you can do it at all, you can always do it. Your programming skills wonât deteriorate to the point that you canât program. You wonât slide back over from a Sheep to a Goat. Itâs impossible.
Will not thinking make you a better thinker?
Sometimes not thinking can, in fact, make you a better thinker. You donât stop thinking entirely. You stop thinking about the same topics and instead think about related (or completely unrelated) topics that can lead to breakthroughs in other areas. Richard Feynman didnât spend all his time thinking about physics:
You can be anything you want to be. Whatever you set out to achieve you can do if you really decide to and really work at it. Youâve heard this pep talk before, I know, but it happens to be true.
The guys who try to tell you that you canât cut it simply have their own ax to grind. Either they tried and failed, or they have some vested interest in your failure. Donât believe any of it.
Typical boooschwaa sensibility crap. Bill âI got rich cuz mommy had a hook upâ Gates is a great swindler. Anyone who tries to justify thier greatness by saying you have to not do something to be good at it is trying to justify their own fear being looked at for what they really are.
Attitudes like the ones portrayed by these âlifestyleâ programmers have no clue what it really takes because they have been getting others to code for them since they got thier cushy new office with thier ultra-geek pong clocksâŚ
Excuse me while I barf all over my keyboarasdfa;lkj;alkdja;sldadj
Anyone can be a good programmer. The difference is that most people are not driven to become good at anything. They reach a point that is comfortable for them and stop improving. You see this in all aspects of life.
I completely disagree that a good programmer is apparent or not within a few years. What you might discover is if someone cares enough to improve themselves.
It has often been said that it takes 10 years to develop a mastery of any skill. In my experience this is a reasonable statement. Itâs just a pity that in software development 10 years is just about a programmers expiry date.
that Gates is qualified to judge. may be not. IIRC, heâs never provided evidence that he ever wrote anything other than a BASIC interpreter (and legend has it that Allen was the primary author). is there any? being a critic of X doesnât entail being good at X; usually, but not systems development. the quality of criticism here derives not from subjective preference (this picture pleases me more than that picture), but acknowledged superiority (i built a better mousetrap, and yours is crap because it doesnât trap mouses). which brings us toâŚ
that M$ is a demonstrable example of innovation, superior systems development, or creativity. if you go down the list; it was something they stole (DOS), something they built for hire then stole (Windows UI), something they built for hire then ported (Office), something they EEE (IE), something they lucked out on (DOS for IBM, who were clueless; and Lotus 1-2-3 which was made ONLY for DOS and thus made DOS mandatory), something they did that was illegal but didnât get really punished for (the anti-trust stuff, and the continuing punitive contracts with OEMs; do you really think Dell, et al wouldnât offer Linux if they could without penalty?). face it: M$ got where they are not by building better mousetraps, but by trapping folks into buying only M$ mousetraps.
folks are confounding understanding syntax (can you write tight code in X language?) with semantics (do you understand O/S prinicples or database principles or Knuthâs books?). the notion that what you know how to do changes in 4 years is the syntax trap. being able to absorb new syntax/languages in short order is a demonstrable skill. not the same as being a brilliant developer.
that coders are the same as developers. developers are different from each other (coders, too). having a deep understanding of the logic and structure of an O/S is different from (and have less $$$$ value), than deep understanding of how to build a databased G/L. in fact, iâd bet on it.
DaVinci wasnât born doing that stuff; he learned his trade first. the aura of creativity is self-aggrandizement. even Picasso had different periods and made different stuff.
âFinding new minimal ways to represent patterns and mechanisms to verify the correctness of those patterns is more important to me than how it can be used in real life.â
âPeople with an CS background too often seem to get frustrated (or even angry) when their elegant solutions canât handle the real worldâ
Interesting that both ends of the spectrum read this blog. BTW, the first post relates much to the previous blog entry about how much code youâve written thatâs actually in use. I assume the poster is an academe.
iâm 30, and went back to school after having a diploma (gifted, etc. - just lazy as a 10 year cat) and have learned that practice does indeed make better⌠I used to have the worst code ever, but was the most computer-literate person otherwise. Stuff Iâd do would include extensive hard-code, redundant vars and such, and some of the worst logic ever (after I re-read it a week later). Now after a few failed jobs and such, Iâve realized how much code I did know and have now âgrownâ a sense programming that I didnât know I didnât have.
I see the same problems that used to take me twenty lines of code i now do in five. So, I disagree⌠Spending time with the code does help - but the article is true about one thing⌠If a person is not comfortable with abstracts and meaninglessness, the concept of code would be lost.
i think that we should have a definition of what a âgood developerâ is. letâs assume that a âgood developerâ is someone who develops code that doesnât hog the systemâs resources and who uses the minimum number of lines of code and in minimum time.
i firmly believe that having a good design phase can greatly improve your coding.once you have your plan,you can start programming instead of constantly going back and forth between designing and programming.a good programmer knows how to translate an idea into effective code and having a good design phase will save you a lot of time and allow you to concentrate on other aspects of the project.
so i totally agree with the article that you can become a better programmer by not programming.by becoming better at designing, you can become a better programmer.
Very true indeed. I did not recognize the âdo not programâ fact this way of my own, but I recently wrote something similar categorizing âDifferent types of programmersâ (http://goit-postal.blogspot.com/2006/10/different-types-of-programmers.html) even without having that in mind: âThe Generalistâ is pretty the kind of guy who does not program while programming.
Isnât everything in this post related to basically any creative field? If youâd replaced the programming references by music, art, literary, or performance references, youâd have the same point and thereâd be nothing fresh about it. (Except that making an emotional connection to your audience is perhaps done in a completely different way.)
Expanding your horizons is also a key. Being personally supposed to teach software engineering this year, I have been having the same kind of concerns. See âThe unteachable parts of software engineeringâ, http://blog.vermorel.com/?p=28
Also, being âgoodâ involves many aspects. For example: is-it wise to implement (even if the execution is perfect) a product that either already exists or that does not reflect any business needs?
I disagree that you canât get better. While certainly like anything else there are those that are gurus or prodigies at it. But every programmer learns better way of doing things as time goes on. Whether it is coding something by hand and then moving to wiring in a COTS to save resources or programming with Web Services for the first time as opposed to limit oneselves to a Windows Form. Some things cannot be learned overnight. 4 years is a long time. Nothing looks the same as it did 4 years ago. So I think it all can be boiled down to how readily a programmer adapts to new technology instead of for example still doing VB6 for everything in 2007.
I often find this blog overgeneralizes. The trend you speak of is inherent in anything. Not just programming.
Chessmasters are made, not born. Why not good programmers?
Iâll answer your question with another question. If chess is analogous to programming, why canât computers write code as well as they play chess?
Human grandmasters are barely holding their own against chess programs these days. And depending on who you ask, human chess players have already lost the war.
The answer, of course, is that programming has an infinity of choices compared to chess. As others have commented, itâs so open ended that itâs more analogous to art, or writing, or other purely creative activities.
Also, just to clarify, I never said that you canât improve as a programmer. Sure you can. But 90% of the improvements will be realized in the first four years of your professional career, and the rest will be incremental.
I feel that this posting does hold some weight though because a persons IQ is said never to change. Thereâs always some programmers code snippet that you find around the web that is just so clever it sometimes depresses me to think âoh, i wouldâve never thought of that!â.
does reading, absorbing then implementing tons of good code, and adding youâre own little twist make you a good coder?, i donât think so. So maybe those really good programmers are just the ones that make the breaththroughs⌠like david heinemeier hansson with rails for example⌠and iâm just the average guy who is just good enough to use it.
oh, and about the idea that not coding can make you better only makes sense if the reason why youâve stopped is because you became over critical of yourself (iâve done it). When you come back without all the negativity and a clear head⌠youâre automatically better.
⌠if iâve repeated something, sorry, i didnât have the time to read all the comments.