As a self taught developer i always find myself questioning my skill and knowledge and always feel like i am falling behind in using new technology. Over a period of nearly 9 years i've studied most mainstream languages (especially C based ones), used lots of different OSes, read and absorbed many books and even written one myself. But i still feel i'm usless!

Do professional developers ever get to the stage where they feel confident that they know what they are doing and are confident when submitting solutions/code?

When do you know you're good enough?


Once you get a few StackOverflow "accepted answers" under your belt, you'll know.

Ben Hoffstein
then again, there's a weird dichotomy of accepted answers with low votes, unaccepted with high votes, and answers that are right that get down-voted :)
+3  A: 

When you can take the lead on a project, see it through completion, and have users who understand, enjoy, and express appreciation for your software.

For me, confidence comes from knowing that I was able to apply my skills to develop a solution that has a positive real-world impact.

+9  A: 

In my experience, the more confident I feel the more likely my code is to be wrong :S

Yep, there are too many ways to attack even the simplest of systems, even CRUD, and I find myself considering a new way to do it every so often.
+4  A: 

Playing devils advocate:

You should never get to that point. If you do, you're off the race and a dinosaur already!

+2  A: 

I find it hard to be completely confident in my skills - there is so much information out there on what I do, and so many possibilities for how I can mess it up.

I find that it's best (for myself, anyway) to take the "Humble Programmer" approach, and accept your errors when (not if) they arise. Your fellow workers will thank you for it as well.

Joe Morgan
+1  A: 

No such thing as good enough, really. You can be good enough for a particular job, but things change every couple of years. Once you're master of one thing, there's something new to learn. You'll never really catch up. It's always a continuous learning exercise (for everyone, not just self-taught people).

Personally, I consider myself "good enough" and feel confident with my abilities in a particular area when I can take a piece of code, spot a semi-obvious (ie, moderately-difficult, but not hidden) problem, and fix it without resorting to the documentation or an IDE.

+39  A: 

I'd say a good/rational developer will always question his/her ability. It's that self-doubt that drives many of us to get better. Conversely, the only developers I ever met who are self-professed "experts" or "best at..." have been anything but that.

+15  A: 

I'm confident enough in what I've done, I'm willing to take risks in what I'm doing

Kevin Fairchild

There are always many ways to approach a programming problem or project and hindsite is a wonderful thing..

I have a degree in cs but most of what I have learnt has been practical based. Just because you are self taught doesnt make it any less important.

What do you mean by good enough - good enough to take on certain projects, justify salary, lead a team?

Maybe if you are asking this question you feel there is more you can learn? - which there always is!?

+1  A: 

There is always the fear of the unknown. :)

+5  A: 

I try not to sweat it too much. There will always be people who are better coders and people who are worse.

I just try to suck less every year

Mark Biek
+4  A: 

My confidence skyrocketed when I was challenged to do things I thought I could not, but through my determination, I realized that I could - and that I could do them well!

Have faith in what you know, and know how to learn what you don't know.


Once you've worked on multiple systems, that have been taken through the lifecycle from conception, deployment and then maintenance, you realise that you really can do this stuff. The more you build, the more confidence you should get in your abilities. It's not about what you know, but what you can do.

I wasn't that confident early in my career, but can safely say that given as you progress, you should feel better about what you can do.

Jason Etheridge

Yes. Specifically, if you concentrate in one specific area to the exclusion of others, you can achieve a great deal of confidence. It's more of a depth-first approach as opposed to breadth-first.

The downside of this career approach is that you're not able to dabble in new technologies, which may be what you (plural) really like to do. A lot of people like to try out new things constantly. It's a tradeoff.

The upside of focusing on just one area is that you become the go-to guy for your area of expertise. You do need to make sure it's an area with legs, though. I know folks who are the go-to guys for COBOL programming and OS/2 device drivers...


I'll phrase it a little differently. I'm a self-taught programmer too, but I only rarely doubt my skills because I know their measure. However, I'm positively paranoid when it comes to trusting my code! I find that what I know, I know; thus there is little reason to doubt what I know due to knowledge and experience being in agreement. But never ever trust your code!

(This isn't to say I know everything, just that I know what I know and where the end of my knowledge is.)

The Wicked Flea

I would suggest that feeling like a confident developer, and feeling the need to continue to learn and absorb new technlogies are not mutually exclusive.

You can certainly feel confident in your current abilities, while always expanding to new technologies and skills.

When will you know? I'm gonna let you in on a little secret. Being Confident is just like being in love. Nobody can tell you you're in love. You just know it. Through and through. Balls to bones.

+11  A: 

I think, that the good developer should be confident only about his ability to learn constantly.

There is no confidence threshold on the acquired knowledge

Rinat Abdullin
I'd add to this that you also need to be confident enough to go back to what you wrote yesterday and ask yourself "why the hell did I write that?"

I feel almost all the programmers who are answering queries here in stackoverflow have good confidence in themselves. And the people who asks questions is equally great that they want to excel in what they are doing with a better quality solution to their problems.

As a programmers I always have a feeling that 'We are changing the world to be a better place by each programs we write' So learning new ideas and techniques is always the important aim for a 'Confident programmer'

Jobi Joy

Most of the experts that I know are only experts in 1 area, and it is usualy a slow moving area. I got a friend that is an awesome C++ developer. He has been working with C++ for 5+ years. I have not. He can code C++ around me like no tomorrow, but put him in Perl, and I am his goto guy.

So "no" you never know enough. As for the "other" type of expert. Ignore or obliterate. Don't let them push you down.


I go through phases really, there will be time when I am really confident I am a great coder and other times where I do something stupid or some else has an idea that usurps something I thought of and I will question myself.

That might sound petty but it is just human nature.

Mark Lubin
+3  A: 

When I started in my current job, I felt really inadequate compared my coworkers since they're all very smart and knowledgeable. Then I read a great post by Jeremy Miller last year pointing out that "There are no smart guys, there's only us" and realized that even the people we think are awesome developers sometimes feel inadequate. Granted, getting a very positive annual review from one of those smart developers helped a lot as well. ;)

I do agree with Rinat's comment that the only skill a developer should be absolutely confident in is their ability to learn constantly.



I tell myself every single day: I am not good enough.

I need to be better tomorrow.


I feel the same way as you. I'm a self taught developer as well, but the best thing I've ever taught myself is how to learn. I feel confident in my skills to a point, but I'm always trying to do things out of my comfort zone. At the moment, I'm trying my best to learn Haskell, and watching the MIT SICP lectures.

I never feel like I'm good enough, because there's always something I can be better at. Keep learning. That's the only way to separate yourself.

Alex Fort
+7  A: 

If day by day, I get less number of WTF/minutes in Code Review Session than I start feeling confident slowly day by day.

alt text

Too funny dude. Don't forgot GTFO.
David Robbins
+1, thanks for the lols
I have literally been through this situation and so can relate very well to this situation.
+1  A: 

Tecnically, when you see the key components of a solutions clearly and at least you have an idea how to make them work together.

I'd also like to include, a non tecnically aspect. When you know how to comunicate well enough with other people (developers, client, chief) you are good enough. You are a good proffesional.


I saw a Ted Talk once (it may have been this one: that talked about how we experience "flow." It had to do with the balance, or ratio, of our abilities to our challenges. I'll summarize (but recommend the talk)...

  • too little skill and too little challenge = apathy
  • too little skill with too much challenge = anxiety
  • too much skill with too little challenge = boredom
  • the right amount of skill with the right amount of challenge = flow (stimulation, pleasure, satisfaction... all of the good stuff).

It sounds like you may either want to reduce your challenges for a while, or, you may need to beef up your skills, so you can move from anxiety to flow. Of course, over time, as you gain experience, you get to the point where you are able to deal with your challenges better, and some fields are just full of an incredible amount of challenge all of the time, so flow must be deferred....


It takes a lot of time to reach that point.

I worry more about my design choices than I do about actually writing code. To me, that's the real challenge for a larger project. Once you have the pieces thought up and structured correctly, the coding aspect becomes simple.

The difference between myself as an intern and some of the senior developers I've encountered is that they can often see a problem developing before it becomes a problem.