How To Become a Better Programmer by Not Programming

Who is talking, and who is who? A good programmer doesn’t have time for morals and bitching on the others. Also, what made a good programmer is subjective. It could happen that junior finds something that the others didn’t see. Is probably the only substancial contribution that this person made but it may save the compagny from hell … Remember Jobs, every buddy was looking at him as a looser. He 's making a tremendous comeback.

If your not the father of a great system or builder of a new program, your just a vulgar refurbisher of what you never build, because you dont have the guts to work on real things; but i’m sure you prove that you have fast mind but rabbits are better with estragon then a turtles.

N.B. dont see any discussion on real code… maibe you working on boring stuff…

I little off topis but this is a message for all of the young guys out there that think programming is their life.

Go out, meet people, travel, get a girlfriend, get married, have kids, buy a house, shower, learn how to dress, DON’T WORK AT HOME, DON’T PLAY COMPUTER GAMES ALL NIGHT…

I’m sure I will get lots of responses about this and that and excuse after excuse…

IT needs to get a life outside of IT and interact with REAL PEOPLE.

Thanks,

Trev

I think that Ben and Ken have it right. Steve, your article describes well how to be a software manager, but if you love coding and want to understand it as well as possible and work creatively and incisively in the field (as, say, a mathematician might without wanting to do the admin work of a department chair) then the question is “Is there a path to the deep understanding that a guru has?” and several posts have said “Yes!”.

If chess is analogous to programming, why can’t computers write
code as well as they play chess?

Well they can’t yet. Just as computers couldn’t play chess very well 20 years ago. Today, they still can’t compete against humans at GO.

Give it time.

  1. If you’re reading this blog-- and by this blog I mean any technical blog-- it’s unlikely that you are a mediocre programmer.

  2. Mediocre programmers don’t even know that they are mediocre. So if you think you are, that level of self-awareness automatically disqualifies you from mediocrity.

  3. Mediocre programmers don’t read technical blogs, or Joel on Software, or Code Complete, or Don’t Make Me Think, etcetera.

If you’re reading this, I can assure you that you, yes you, ARE a good programmer. Trust me.

True, totaly agree with you,

But what i think is just 2 years is not enough to predict the issues in the design, for that one need at least 4 years of coding experience.

What junk is this ?

“To truly become a better programmer, you have to to cultivate passion for everything else that goes on around the programming.” 100% agree. Now based on that premise, how can you become better programmer even without programming?

If chess is analogous to programming, why can’t computers write
code as well as they play chess?

Well they can’t yet. Just as computers couldn’t play chess very well 20 years ago. Today, they still can’t compete against humans at GO.

Maybe if we could ensure that only “good programmers” are working on it, instead of a bunch of mediocre programmers, they could solve the Go problem as well have computers write code for the rest of us.

Just a mediocre programmer

Reg Braithwaite pointed out an excellent discussion of this article at Reddit. It’s well worth reading if you got this far.

http://programming.reddit.com/info/11vft/comments

My favorite comments?

edheil: reddit loves self-improvement.
schizobullet: Unfortunately, it doesn’t love being told what it loves.

That HAS to be one of the funniest things I’ve read this year.

BS.

I’m sorry, but I don’t believe for a second that you can’t change enough personally to make the leap from unable to be even a decent coder to becoming a great one. It’s got nothing to do, however, with classical education. Much more to do with actual change.

I know I am an exponentially better coder than I was when I started coding fourteen or fifteen years ago. I can tell in my code, I can tell in the way I study others’ code, I can tell in the way I approach the problems involved.

People change drastically over the course of their lives, they just generally do it for the worse mentally. It’s an amazingly stupid assumption that people who started out as bad programmers will end up that way. I used to believe it. Then I saw people I originally had judged completely incapable of certain things accomplish them. And saw people I assumed I would hear from later disappear.

One thing I do know is that looking to a corporate manager for a judgment like this is not a great idea. You’re looking in the completely wrong place. University profs who push coders from zero to ‘usable newbie’ are the people I would ask.

The best advice I can give programmers is NOT to restrict your career path down one programming language / platform. Don’t avoid C# if you have been a VB programmer for 5 years.

Why? Because in the end, it’s all the SAME.

C++, C#, VB, ColdFusion, Pascal, PHP, whatever…

Sure, each language has it’s quirks and idosyncrasies. Some languages take more care than others. In the end, you pick the right development tool for the job and go with it.

If you are a good programmer with a solid development methodology you can “code” in anything…

I think the reason there’s so much a mixed response to this post is that the act of programming is defined differently by different people.

If you define “programming” as the time when you sit in front of a computer writing code, than the running or chess metaphors make sense and you might claim more practice will always make you better.

If, however, you include the process of figuring out what and how to code, and the way your code gets used and maintained after you finish, then it seems to me this article makes a pretty solid argument.

For me code is meaningless if it’s not used by someone. If you want it to be used, you need to understand people, markets, business etc. There is no way to learn this things by just coding some more.

Moishe Lettvin of Google was also reading Programmers at Work, and offers his unique take on this topic:

http://moishelettvin.blogspot.com/2007/01/less-programming-more-skill.html

Love the Heinlein quote:

“A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.”

All you have to do is to validate this is look at who you work with and estimate if they are a good programmer (ie can get the job done) or a great programmer (can get the job done, but know why they’re doing the job - ie the bigger picture).

A great programmer produces a better solution because they understand the problem better, due to the insight gained from non programming activities, and interests.

Understanding the business as an abstraction and as an instance, the specific way this company does business, will allow the programmer to become great.

If “conscious mind” is a fraction (ex: 10%) of one’s active brain power, the rest being “sub-conscious”…

How can we know what programs and designs are being written by our subconscious when we are and aren’t programming?

Jeff Atwood on January 29, 2007:
To truly become a better programmer, you have to to cultivate passion for everything else that goes on around the programming.

I agree, and that is the same with any other creative work I did :slight_smile:

Shawn C on February 1, 2007 11:20 AM
The best advice I can give programmers is NOT to restrict your career path down one programming language / platform.
Don’t avoid C# if you have been a VB programmer for 5 years.

Of course not. Platforms are everchanging, and that’s good, because every single one of them sucked (because they were written for architectures which where slow, had almost no RAM and every design decision was made in favour of speed, smallness and cheapness, disadvantaging programmer convenience/expressiveness in the process).

Why? Because in the end, it’s all the SAME.

From the programmer’s standpoint, there’s a HUGE scale on them. So no, they are not.

C++, C#, VB, ColdFusion, Pascal, PHP,

These are all the same, yeah.

whatever…

Look at Dylan, Haskell, Logo, Pliant, Prolog, Ruby, Python, Boo or a language of the LISP family and say that again.

Sure, each language has it’s quirks and idosyncrasies. Some languages take more care than others. In the end, you pick the right development tool for the job and go with it.

Yeah. But if every tool was the same you could pick any of them for anything.

But none is the same. Members of the C family are mostly the same language-wise but completely different framework-wise.

All others are completely different from the C family.

If you are a good programmer with a solid development methodology you can “code” in anything…

… [anything] that you know

Keta Meme on February 5, 2007 12:56 PM:
If “conscious mind” is a fraction (ex: 10%) of one’s active brain power, the rest being “sub-conscious”…

How can we know what programs and designs are being written by our subconscious when we are and aren’t programming?

When something comes into your mind fully formed and you are making up some kind of reason for it, it came from the subconsciousness.
That is, the subconsciousness raised an interrupt on the consciousness once the subconsciousness was done processing whatever it wanted to process (passing a tiny amount of data with it).

Similar comments from Peter Varhol, editor of FTPOnline:

http://www.ftponline.com/weblogger/forum.aspx?ID=11DATE=01/17/2007blog=#717

Don’t know where to put yourself in these situations? They are all around you, but they almost certainly have nothing to do with sitting at your desk and coding away for five days a week. There is a Toastmasters session in your cafeteria after hours, a standards committee meeting at your competitor down the street, and a study group in a conference room at lunchtime. Open source projects are begging for help, in testing and documentation writing, if not coding. You can be doing all of these things with an e-mail or two. Yes, work is demanding (I worked twelve hours last weekend, and Nancy Grace is on CNN as I write this), but just doing your job in tech is the surest way to a lengthy stay the unemployment line.

I was surfing the comments (still not finished yet) and ended up in a Wikipedia on Dijkstra, and one of his quote:

“Computer Science is no more about computers than astronomy is about telescopes.”

Of course, he was talking about computer science, not programming :stuck_out_tongue:

I was fascinated at reading the article published in new scientist on the subject of expertise. The conclusion of which was that expertise was a product of motivation.

It’s all too easy to categorize people as having or not having some mysterious talent, and although I wouldn’t say that there aren’t people that are born with innate cognitive abilities, because after all thoughts are dependent on the brain that thinks them, which is itself a biological machine whose nature is subject to genetics. BUT!!! What the science says is that even this so called ‘talent’ is merely a head-start, what makes the expert and expert is the motivation and / or inspiration to endure the pain involved with learning more and more new things.

Humans are built for survival and because of this it’s normal for us to take the path of least resistance, this is why it you are more likely to hear an insightful response to philosophical questions from a youth than you do from a 40 year old, (well at least in my experience), the youth finds it easier to think out of the box and is motivated to learn new perspectives, whilst the adult has become comfortable with his box and has lost his ability to see why he might want to change it. I suspect most coders are mostly motivated to code in order to make themselves a living amongst other things, it’s not that they are unable to be great, they just aren’t motivated to be so.

Good programmers aren’t people that see the bigger picture, people that see the bigger picture tend to become better programmers (because they are inspired and motivated to do so).

I think that the opinion expressed in this article tends to be born out of a frustration with the unfair reality whereby the motivated experts often go unrewarded for their works of genius whilst at the same time the mediocre’s seem to be rewarded for creating bad code.

So, yes, there are definitely good coders, but they are not ‘special’ per se, they just happen to be an anomalous group of inspired and motivated individuals.