Today I came across a very interesting article about why it is hard to program, with which I wholeheartedly agree.
Joel talked about student's inability to understand C pointers some time ago in his article about interviewing. Leave alone recursion or concurrency.
Here's what I think:
- Not everyone can become a good++ programmer.
- It's not a matter of practice or study alone.
- It's a matter of having some crucial abilities or not having them.
I don't think it's arrogant to claim the above.
It holds for programming in the same way it holds for many other demanding professions.
Could I ever become a weight lifter just by trying?
I wasn't built for that. No matter how many steroids I inject, I won't ever be able to bench press 150kg.
Could I ever become a successful composer? I can't recall from memory any 5 minute song, how could I ever come to compose music?
Could I ever become a mathematics professor? Although I like math, theorems and equations don't ring in my ears, they are not my native instruction set.
This is the best analogy I can come up with. Each of us has a native instruction set, embedded in our DNA. Activities that are compatible with this instruction set can be carried out with the highest degree of efficiency. Other activities less so. Some activities might be seriously incompatible, causing serious degradation in overall performance.
Back to programming. If programmers had professional licenses like doctors do, then I know a couple of people whose license should be immediately revoked. Irrevocably revoked. Programming is not their brain's native instruction set; not in their DNA. They don't really understand what they are designing and what they are implementing. How it will behave, how it will perform, how it will be tested, how it will need to evolve and expand, etc.
No, I am not being harsh here. Some say there is an extremely high demand for software developers, so not everyone has to be that good.
WRONG. DEAD WRONG.
In my previous job I spent around 40% of my time bug fixing or completely redesigning and rewriting code written by people whose programming license should be revoked. What good did it do that these people worked for the company? The company paid their time plus 40% of mine for a work that could be done in less than 40% of my time, had I done it myself from the beginning.
That's why I insist on having top programmers on my team.
Have fun!
The problem is that there are too many smart people in the world and a lot of them want to be programmers. I hypothesised not long ago that smart people are not meant to be programmers.
Posted by: WarpedJavaGuy | October 26, 2007 at 07:07 AM
The problem is this: From personal experience, way too many people want to be "developers" because they have heard:
a) There is a lot of demand for this job
b)If you are into the greek school systems, you have to perform really well to get into a decent CS/CE uni dept.
c)Hey man computers are the future, I mean you get money for nothing and the chicks for free.
Wrong. Wrong! WRONG!!!
a) If you are a decent developer, you will have a decent job. If you are a talentless hack, you will struggle to get work (i.e. you wont pass the interview of any company hiring reasonably skilled people).
b) So you get a ton of people that do NOT join because they were too busy fucking up the computers instead of studying :)
c)Like a) if you are good then ok, if you are not that good you are in for a world of hurt. If you are good you can solve difficult problems (i.e. debugging) at a drop of a hat. If you are a straggler then?
Combine the above with the 70s management mentality that "developer is the lowest form of life in our corporate ecosystem and they are all interchangeable" and you have a winner.
Posted by: Thanasis K | November 25, 2007 at 10:39 PM