a companion discussion area for blog.codinghorror.com

So You Want to be a Programmer


Why are people so opposed to what in essence is learning on a 4th graders level?

Are you opposed to putting kids in school? Teaching them maths?
Programming is in no way different, it’s just problem solving, using our most modern tools.

A programmers job is to solve problems according to their (other) primary area of expertise, not spoonfeeding folks who don’t know what they are doing.

In any given program, “Usability” is directly att odds with “Usefulness”, the extremes at the opposing sides of the scale.
And the only way to shorten the distance between the two is by simplifying the program to its’ bare necessities, whereby requiring the user to have some skill in how computers work.

And the only way to really understand how computers work… (you guessed it) is by learning programming.


That is exactly how I learned to love programming. I programmed industrial robots, plc’s, and cnc’s for years. It wasn’t until I moved into the office and had to start solving business problems where I realized how powerful programming could really be. So I decided to get my CS degree.

I fear, however, that I to will become bored with apps and design patterns and unit testing and databases just like I became bored with robotics and cnc’s. I think what people like in programming is the new challenges.



All this debate is moot, it seems to me. I have always regarded the ability to program to be an innate skill, not something that one without the gift can really learn. Oh, I can learn the game of basketball, the rules and how I’m supposed to make my body work in order to perform the maneuvers needed to make a basket. But learning those things and putting them all together at game speed is another matter. Not to mention that I am vertically challenged. I can also learn to draw and paint and sculpt, with similar results.

When I discovered programming in college it was a revelation for me; it was such a natural fit for the way my brain was wired. When I tried to help others in the class who were having trouble, I was mystified that they just didn’t get it; it was so clear to me. I tried and tried and came to be able to size up very quickly who had the gift and who didn’t. Since then I’ve believed that programmers are born, not made.

I think that most who can program already know it and already are. But sure, it may be repressed in some I suppose. So let people hop on this bandwagon and give it a try. Those that don’t get it will drop it very quickly, but those that do will have their own revelation, and it’ll be great!


Essentially, Jeff is correct. But I think there is a middle ground between “don’t learn to program” and “you must learn programming” which would be of overall benefit.

It’s clear to me that good programmers are not made, they are born. Some people have an innate ability to think in such a way that makes them good at programming. Those that don’t have this ability will inevitably struggle. Those without the ability may still be interesting in programming, and may even manage to get a CS degree! But they will still not be good programmers. I spoke to a guy working as a sysadmin recently, who admitted that he just “didn’t get” programming (and he has a CS degree, but doesn’t program as a part of his job).

Where there is middle ground is the notion of exposure to programming. This is not the same as “everyone should learn to program”! This is closer to a mere demonstration of programming, or the theory of programming - without the practice of it. If all people, say in schools, were exposed to programming, we might be able to better identify those who have that innate programming ability but aren’t aware of it. By giving people the opportunity to learn about program, we will find people who are interested in learning more about it, at which point we can encourage them to move forward to the practice of programming.

After all, not all people that have this innate ability will discover it on their own. Identifying these people gives them, and us, opportunities they may not have otherwise had.


The current Oracle v Google lawsuit shows exactly why it is important for non-programmers to understand the basics.

The judge knew a little programming and was able to call Oracle on their BS. Another judge could have easily been snowed.


I’ve been programming for six years now … If I follow The book, I have at least four more years to go …

The industry hasn’t been … how do we say it … ‘good’ to me … But I still code … I’m not the best coder by any sense … by I still code … I don’t always make enough to pay bills … but I still code … Once I started coding I never looked back … I guess I love to code.


I suppose you’re posting this follow-up article to emphasize the importance of learning to program in order to solve problems and fulfill passions, not so that you can flip the process for a well-paying job (b/c with enough people doing so, the market would become diluted and oversupplied with incompetent programmers)?


I’m not really concerned about who should or should not learn to program; personally I think some people just would hate it, so they shouldn’t do it.

Here’s what strikes a nerve with me, though: Not either of your posts, but all the comments (specifically on the previous post) talking about the field being stuffed with “incompetent programmers,” and the way many of those commenters defined both “incomptetent” and “programmer”. I went through a very similar life situation to the person who sent you this email asking if they have any chance of making it as a programmer.

I too, discovered programming because there was a problem to be solved by automation, and fell in love. I spent two decades doing other things because I didn’t have the requisite training to get hired as a “programmer.” If you ask many folks, I still don’t.

I failed two job interviews not long ago precisely because I couldn’t code, on the spot, some of the “simple” algorithms that some of the commenters pointed out as so basic that you shouldn’t be allowed to call yourself a programmer if you couldn’t code them without looking it up and maybe thinking about it for a couple hours.

So given that that’s the way you’re going to be tested if you apply for a job as a programmer, trust me, it’s going to be tough if you’ve come to programming the way I have. You’re not going to know a lot of the stuff that some programmers consider fundamental.

For some of those jobs, I’m sure that sort of testing is entirely appropriate, and DOES say something about how successful you’ll be in the job. What irks me is that it’s applied in a blanket fashion to screen out “bad” programmers (defined as those not knowing how to write a function to find the least common multiple of two integers), when the candidate would actually be great at the task involved in the ACTUAL job. Maybe it’s writing Javascript UI code. Maybe it’s writing a Drupal module. But they’re being tested for the wrong thing. And screened out because of it.

I’m not sure how people make the argument that you can’t be any good at writing a Drupal module because you don’t know, for instance, the definition of “third normal form.” But they DO make that argument, and deny people jobs based on that.

Look, there are LOTS of kinds of programmer. All I ask is that people know what kind of programmer they actually need to hire and test accordingly.

(I have, BTW, subsequently found a programming job, which I’m doing really well at. “Doing really well” defined as “building things that clients really love and depend on.” But ironically, I had to get hired by non-programmers for that to happen.)


I think someone said that only 5% of coders are any good. If that’s true it means the market for them is only close to 5%, since they are the main ones who could judge appropriately. Everyone else is just guessing.
Now if everyone knew some programming, the situation might be different.

I’m not just saying this to cover my own ass. I sincerely believe the quality of life of everyone can be raised, if they understood a little bit about how things can be automated.
It’s also a skill of concentration. You learn to keep much larger systems in your head. It helps you use your brain in ways that you otherwise wouldn’t.
Anyhow, It’s just a tool, I want the job-description of programmer to disappear, just like most of the writing jobs once did, when people learned how to write themselves.
I feel people are severely limiting themselves by giving something a name, calling it “hard” and therefore not learning anything about it.
The average person knows nothing about programming, contrast that to plumbing, where everyone at least knows enough to do some little chores, like connecting a washer or a tap, and they know that a leak is bad.
Now, a memory leak… people don’t even know if it’s bad or why.
So, in contrast to plumbing, people aren’t even qualified to order a programming job. What does that do to our markets?

What can be so hard about learning one letter and 32 keywords :wink:

To Kevin Carlson:
I believe you’d have a much easier time finding a job as a tester. The job description is very misleading, since testers typically do most of the chore-like (and easier) programming jobs. At most places I’ve worked at, the pay is almost the same.

(I for one, welcome our new programmer overlords)


This was beautiful. Thank you very much. I don’t call myself programmer - I’m a webdeveloper and I lack alot of skills. But I love code and you just reminded me why.

Some 15 years ago I did my first websites and I did it because I loved the idea that I can produce something and thousands of people have free access to it. Be it art or knowledge or entertainment. Over time I figured out that working with the code is much more satisfying than Frontpage (!) or Dreamweaver. And now these days I earn my daily bread with webdev.

And sometimes I struggle. Sometimes it’s dull. And sometimes I think that I should do something else.

And then you come along and I remember: I love to code. I love to make weird grafics with algorythms. I like to experiment and see what happens.

Thank you.


I realize now I had a similar moment where I learned to love to code. For me, I’m a web guy so I stick mostly to the realm of HTML, CSS, PHP, etc.

The first version of my website was 100% custom html, which became unmanageable real fast. Version 2 I hated because I repurposed an existing theme in wordpress to do my bidding. However, I realized it wasn’t wordpress I hated…I realize now that any project I’ve ever worked on which involved repurposing a pre-existing template I’ve hated working on. When I hit version 3 on my old site I said f*** the template, I’m making my own and I did. Ever since then I’m derived such pleasure from creating my own templates in anything I do.

I feel much better now after realizing this! Of course I can’t avoid working in templates forever, but knowing what bothers me and what I enjoy is a great first step!


nice post


Nice article with a lot of truth. I find myself extremely motivated for some of the more technical tasks and for these I’m devoted to getting the job done and getting people to appreciate the work and the result. While with other tasks just I’m just barely able to survive. Even if they are simpler!


The content most powerful to viewers, this having a great information.
send bulk email


‘Duck’ is from Robert Venturi’s architectural theory book Learning from Las Vegas, 1977


I like the article. I love knowing how things work so I just recently began a beginner programming class and I am loving it. Back when I had my first computer, a 486, I had some problems understanding all the programming language. Now that I am older, I seem to have grown into it. I am finding that now I get it and can’t wait to learn more! I don’t care if almost 50 is old or not, I’m going for it!!


I will try something simple like documentation of the language first, but that’s me.