Am I good enough to be a programmer?

How do I know if I'm a good programmer?

Like most people, I consider myself a bit above average in my field. I get paid well, got promotions, and have never had a real problem getting good references or a job.

But I've been there enough to notice that many of the worst programmers I've worked with thought they were the best. Bad programmers surrounded by other bad programmers seem to be wrong the most.

I am sure not perfect. I make mistakes. I miss appointments. But I think I do about the same number of bonehead moves as "other good programmers". The problem is, I refer to "other good programmers" as "people who are like me".

So, I was wondering, is there any way a programmer can make a reasonable self-assessment? How do we know if we are good or bad at what we do?

Or, if terms like Well and bad Are too poorly defined, how can programmers honestly identify their own strengths and weaknesses so that they can take advantage of the former and work to improve the latter?


A good programmer understands that he must keep learning and growing. They strive to do their best in every effort, admitting mistakes and learning from them.

You are extremely communicative. Not only are they able to explain complex technical terms to laypeople, but they go to great lengths to act as advocates of their own ideas to ensure that they are providing the best options for their customers.

The best programmers know and accept that there is more than one way of doing things, that not every problem is a nail, and that they want to learn new techniques all the time because there is always a better way of doing something than planned had technologies and understanding.

A good programmer loves to program and would do so in his spare time, even if he has programmed more than 80 hours a week.

A good programmer knows that he is not a good programmer. There are no really great programmers, there are only those who claim to be great and those who know they are not great.

I've always found that the easiest way to judge your performance is by two things.

  1. Surround yourself with other good programmers
  2. See how much they complain about the code you wrote.

Of course, it's about finding good programmers, and then it's not just about being a good programmer. You need to be able to work well in groups, but also well for yourself.

To break off the subject, I quote Robert A. Heinlein and his opinion on the subject:

"[A kick-ass programmer] should be able to change a diaper, plan an invasion, slaughter a pig, hook up a ship, design a building, write a sonnet, balance accounts, close a wall erecting, setting a bone, comforting dying, taking orders, giving orders, working together, acting alone, solving equations, analyzing a new problem, messing up, programming a computer, preparing a delicious meal, fighting efficiently and dying bravely.
- from the notebook by Lazarus Long.

I think the fact that you are asking the question proves that you are not a bad programmer, so you are halfway through in my opinion. :)

In my experience, bad programmers always think they're great programmers.

@Nick's statement "Bad programmers always think they're great programmers ..." is explained by the Mahn-Kr├╝ger effect, which generalizes that people who know a little about a subject often overestimate how much they actually know .

Being a bit of a joke ... the less you think you know, the more you probably do ... unless you're a really confident idiot.

Answering the original question, although I think the greater influence (not control) you generally have is a good indicator. If you see others follow your example or take up your practice, you are on the right track.

The answer with the most positive votes is really worrying. Basically, it says that you have no life outside of programming. What about the family Community? Hobbies? What kind of job do you have to be obsessed with just to be considered "good"? I really think we need to get some perspective here.

I am not perfect. I make mistakes. I miss appointments. But I think I do about the same number of bonehead moves as "other good programmers".

That knowledge alone makes you a better programmer than most bad programmers.

Many of the worst programmers believe they already know everything they need to know and are unaware of their limitations. As a result, they never improve their skills.

If you look at your code from a year ago and think, gosh, I could have done a lot better, you are probably good :).

Here are some real-world examples of bad programming. Of course, similar code was copied / pasted in 100 places everywhere. Guy got fired, but I heard he's got a good job again. Enjoy:





When you write this type of code, you stop programming. If you don't see anything strange in this code, quit programming. Otherwise you are not bad, so maybe you are even good :)

EDIT: To answer comments: I got a job before graduation and this guy already had several years of programming experience. He was fired a few months after I was hired, so I was unable to teach anyone. The above examples only came from above - every code he touched was buggy in various and imaginative ways. Most things sneaked out of the company because only then did other people see parts of the code. He's generally a nice guy to talk to, but he will NEVER be a good programmer like I will never be a good painter or writer or whatever.

To compare this to another example, the guy who replaced him was also undergraded at the time. He graduated from a college known more for management than programming. He's not too geeky in the sense of programming anything for fun or sitting at home reading about Java or programming, but he's fine. He quickly adapted and began producing useful and maintainable code. Some people can, some can't - just ask dailywtf.

There are a few things you could try to get a better measure of how you are piling up.

  • Compare code reviews. See whose review found more problems.
  • Ask when they last read books that weren't part of their normal course of study. Then ask yourself the same thing.
  • Ask yourself who brings new ideas to the company (and how well they work).
  • Finally, is there some form of corporate recognition?

(That's what I said at the end because my last company had a programmer named "Developer of the Year" twice in three years. After he left, we found at least 20 TDWTF-ready code snippets. He developed code fast but not necessarily good management just didn't know the difference.)

Allow other developers you respect to work with or see your code.

Actually let people use what you like and see what they think.

- Kevin Fairchild

Can you understand this?


Just the mere thought, which you have to assess yourself, sets you apart from the others.

One way to judge myself is to listen to what my colleagues have to say about me. The trick is to find the right people.

It is always subjective who is a good programmer. I agree with Nick that just asking the question is a step in the right direction. I think the constant desire to learn more and improve is what makes a good programmer.

For me, the best programmers are never looking for work. They have constant offers for new positions based only on their reputation. So a good programmer can have offers from previous employers to return if they so choose. Or a good programmer would have asked former employees whether he would like to work for them in a new company.

In terms of strengths / weaknesses, you probably already know them. If not, ask an older person on your team. It doesn't even have to be a developer. A good project manager knows the strengths / weaknesses of the programmer. Also, the qualities that define a good programmer aren't just limited to code. Understanding of the business, communication skills, judgment, etc. are all done outside of your IDE.

I think it's kind of like wondering how to know if you're a nice person.

Unfortunately, I think the answer is that only other believable people can tell you that. I don't think you can pinpoint this yourself (at least it's very difficult - but I think it may be impossible).

I would just say: if you are passionate (I mean REALLY passionate) what you do, if you are flexible (another language, new technology, complete remake of an old project - let's do it!), if you keep learning and improving Use your skills and never think that you are good enough to stop - you are a good programmer!

95% of all programmers believe they are in the top 5% of programmers, the other 5% are managers. So if you are a manager you probably are not a good programmer, otherwise you probably are.

I think it depends more on what you do with your programming skills. Being a great programmer is fine, but what does it matter if you program banking software all day (no offense). It just doesn't go together.

To really prove to yourself that you are a good programmer, take up an interesting and difficult side project. This shows a couple of things: You would like to code in your spare time and really enjoy the subject - this is a basic requirement to be a good programmer. Versatility shows in the fact that you can expand your skills beyond what you do in your work environment. It also shows motivation and creativity: you have defined a problem yourself and are taking steps to solve it.

All of these aspects make a good programmer for me.

My answer will be politically wrong. In fact, I am the founder of a start-up and my job is to hire the best programmers.

How do I know which people are good programmers or can be good programmers?

1 word: IQ.

IQ is used for programming, as is the height for basketball players.

I would call math skills another more politically correct indicator. My computer science teachers told me that there is one criterion that correctly predicts who will be successful in programming classes. High School Math Scores. Those are effective IQs anyway.

This can come as a surprise. We are told that programming is a college degree. Guess I don't care about graduation. I only care about 3 things.

  1. Programming skills (which can be tested).
  2. Fitness.
  3. Common sense (not too low) skills.

Unfortunately, IQ only measures one thing. So I do a couple of tests.

I ask people questions. Simple question that I would expect an elementary school student to answer.

I ask questions like:

  1. What is the distance between the short and long hands of the clock at 7:35
  2. When I drive from Jakarta to Semarang and want to maintain a speed of 60 km / h. Then I drive 100 km / h for the first 2 hours. How fast should I drive the rest of the trip so that my average speed is 60 km / h?

If you look carefully, these questions don't require any creativity at all. Just common sense. Any elementary school student with IQ can answer that.

Most college graduates can't. Imagine someone can't answer that? Can he program? Think about it. How often do you have to indicate what he should do?

You can also ask questions like Microsoft that require creativity. You can ask questions about weighing 8 balls on a scale to find out which is the heaviest. The problem with questions like this is that it's about luck. However, some are quite simple, it should be a minimum requirement.

Becoming a great programmer can improve other programmers' morale. A lawsy programmer can lower everyone else's morale.

After people can answer questions like this, which is very easy, I would get them to write some google jam code.

Good programmers can solve Google Jam Code and predict which problems are easier.