views:

5314

answers:

68

I see a lot of questions on SO that are asked about 'good' programmers vs 'bad' programmers.

For example, what is a good/bad programmer, how to tell a good/bad programmer, what to do about a bad programmer on a team, how to hire a good programmer.

I know it's pretty easy to apply the words to other people, but I find myself wondering if anyone out there would actually define THEMSELVES in a Boolean fashion like this, rather than "good in some areas, weak in others..."

I'm not asking as an either/or where you have to be one or the other, but as a 'both' - are you a good or bad programmer?

If so, either one, why?

Please note this isn't meant to be argumentative, or to define good/bad practices, etc. I just want to know how many people think they are good, bad, or neither out there.

+80  A: 

From my experience, what makes a developer stand out is not the skills itself, but the thirst to learn.

I've learned that a newbie that reads reads reads and introspects on past mistakes quickly overtake a "skilled" developer.

Target to

  • read a book every week
  • learn a new thing everyday
  • introspect on how to improve every week
moogs
A book every week! That's too much man. Most of us don't read a book every year. I think a book every month may be a bit more realistic at least for me.
Daud
I don't have the time to read one text book per week, really. And I love to read books that are *not* about programming once in a while. :)
Tomalak
+1 .. relax constraint#1 to have more good programmers :) if people around me read 1 relevant book/year..I'd be happy. #3 needs to be tightened to every instant of working time. #2 is more of luck.. some periods are more enlightening that others.
Gishu
I'd suggest you could combine #1 and #2 - as an example I'm currently reading about .Net Internationalization, which is (was!) new to me ;o)
Andrew
I'd say it's the skills, not the desire to learn. Sorry, but it's like saying a good boxer is the guy that goes to the gym every day and has the desire to win. It's not, it's the guy that wins the fight on the night.
Shane MacLaughlin
@smacl : The point is, programming is not a one time thing. And Technology evolves constantly. The guy that wins the fight on the night will lose on the next if he stops training. the one doing time on the gym will eventually beat that guy.
moogs
@moogs, true of course. But programming, like any skill, is honed by practicing what you know as much as chopping and changing to learn new things. IMHO, skill comes from doing, and breadth of knowledge often comes at the expense of depth of ability.
Shane MacLaughlin
a book every week is plain crazy mate, how many times you reached that target?
dr. evil
i read pretty fast, and my daily commute is 2+ hours :) a safari subscription helps, too.
moogs
I can't believe people think reading is such a big deal! I'm an old man (59) and every month I still do a couple non-tech books for pleasure and plus 1-3 tech books (or equivalents in online docs) per month. If you don't RTFM (or B) then how the hell do you learn anything? Osmosis? (And, yes, I also have a wife and a life.)
Peter Rowell
@moogs Hard to read during a commute if you have to drive during that commute. I wish I could read during my 1:20 minutes of commute time every day. I'm going to look into podcasts and books on tape - but those aren't too likely to be about code.
Daniel Bingham
A book a week is nuts. Especially if your also reading other books
Damien
Assuming we're talking tech books, if you're reading one a week you're not taking much of it in or applying much of it.
Tim Down
of course. you don't have to apply everything you read. but it is good to be well rounded and aware of other technologies.
moogs
+36  A: 

I'm a lazy programmer. Usually the good kind, sometimes the bad kind.

eyelidlessness
+28  A: 

I'd love to say I'm a good programmer.

But in reality I'm sure I over engineer, over optimize, over comment, and under engineer , under optimize and under comment, etc, etc...

In the end I'd say if you can be a "good" programmer at least half the time, you've won the battle, but not the war. And the war will last until you stop programming ;)

Robert Gould
Be glad about that... as George Carlin said about the HippyDippy Weatherman's ultimate forecast 'The weather will continue to change for a long long time' Once you've achieved everything there is to achieve in a given field, its time to move on. ;)
Gishu
Good one! Love Carlin too.
Robert Gould
+7  A: 

I'm so good a programmer, I can code GMail 2.0 in Prolog with one hand and an improved Emacs in machine code in the other. And if you think that's hard for me, you're wrong. I code quantum algorithms before breakfast, polish my PhD dissertation proof on P != NP during the day, and write O(1) matrix multiplies in the evening.

Yeah, I'm that good.

Paul Nathan
You must eat the same breakfast cereal as Hugh Gallagher: http://urbanlegends.about.com/library/blbyol3.htm
Adam Liss
Is Paul Nathan the an alter ego manifestation from Jon Skeet?See: http://stackoverflow.com/questions/305223/jon-skeet-facts and http://stackoverflow.com/users/22656/jon-skeet
vmarquez
When Chuck Norris sees you, he roundhouse-kicks himself.
Jonas Kölker
Answer tagged as: belongs-on-skeet-overflow :)
Adam Neal
+18  A: 

I'm a bad programmer. I'm lazy, stuck with my less-than-optimal mental patterns, and easily put off by other people's cruft.

But I deliver stuff that makes the client happy, and does what they want (as opposed to what they think they want).

moobaa
Isn't delivering what the client wants by definition a good programmer? ;)
Brian M. Hunt
Brian: sure, if programmers are pets.
sep332
Hahah.. Love that answer, sep332.
Stefan
Mmmm honesty gives me a woody.
Kieveli
+3  A: 

I think I'm not a good programmer.

But I love to learn new things in programming.

This makes me eager to solve problems. I'm very keen on to think on others problems and find solutions for them.

I love working on .NET framework and the SQL programming.

And I like sharing my experiences with others. If I face a problem, I believe someone somewhere is having trouble with the same problem. So why not help them if I had a solution.

+15  A: 

If you are a good programmer, it is obvious when you see good code, even if you don't like the style. There is no one best style, but good code is clean, clear, elegant, filled with recognizable design patterns and idioms. Bad code is obviously bad regardless of style. There are so many ways code can be bad.

If you are a bad programmer, things are less obvious. You might mistake a long block of simple statements as desirable clarity when it is actually naive code that fails to reuse higher level idioms and libraries. Likewise, you might be confused by code that makes extensive reuse of existing code and assumes knowledge of certain patterns.

Of course, there is every degree between good and bad, but my above assertions could be used as a quick and simple test. Can the programmer recognize examples of good and bad code and support the judgment with some meaningful observations?

dongilmore
A great test of skill is to see whether a developer can adapt to the coding styles used by a company they've just joined. A poor developer falls to their knees, twisting and turning as if pierced by a blade, because they are inflexible, inexperienced.
PP
A: 

I think I'm a good programmer and you know why? Because I'm always 100% convinced my code contains no errors!

And of course I know errors will be found everytime... But it's like a car mechanic, when he has changed your tires, he knows all the screws are in place afterwards, and yeah, sometimes he forgets something...

So, it's the state of mind that makes a programmer good or bad...

Bliek
+7  A: 

If by good you mean that the code I write would be thought of as elegant leading edge stuff by a group of peers, then no I'm not a good programmer. If on the other hand you mean that I can write porgrams that are efficient, robust, and well liked by my end users in a relatively short time frame, then yes, I am good. How do I know this? Twenty years in business, working for myself, I make a decent income and get on well with my clients.

Outside of that, I'm not sure how you would measure the term good programmer.

Shane MacLaughlin
+2  A: 

Some days I walk on water, other days I pass water when I see what I've done.

I suspect that matter how good you are as a developer, you're always spending some part of your working day writing crap. All you can do is to try to improve by gaining small victories over yourself. There must be contests, and you must win.

RoadWarrior
+4  A: 

Yep, no programmer is ever perfect. I guess that's the beauty of programming. Whenever I write a program, there are a few things that can happen:

  1. I realise the project was completely useless and there's actually some software on the net that does the job much better.
  2. I get tons of errors (this happens inevitably)
  3. I realise that I have huge chunks of repetitive code that could quite easily be replaced with one small subroutine.
  4. Everything works and the software can be released (this has only happened once and I am still fairly sure that it was a dream)

Yet people still say that I am a pretty darn good programmer. Oh well, that's programming for you...

+3  A: 

Personally I perceive myself a bad programmer. Objectively I know I'm pretty good, comparing to the mean, but I know there's a lot of people I can learn from.

If you think you're good and there's no room for improvement, you're screwed.

maurycy
A: 

I'm a good and bad programmer, sure. I'm good at programming ASP and ASP.Net elements going from a specification where most things are spelled out and I'm not having to do much analysis work. I'm bad in that I'll keep to the existing style which may not be the best for a code base and not rock the boat by suggesting new tools that may improve things around me. I'm also a bad programmer in that I don't know all the optimizations one can make within ASP.Net and knowing every single part of the ASP.Net page lifecycle. I know parts of it and how to use some of it which has been what I needed to know.

JB King
+36  A: 

The A Team theme song plays whenever I walk into a room. I'm that good.

PhoenixRedeemer
I kept hearing what I thought was the A-Team song too. Turned out to be the theme from "Police Squad". You should probably check;)
Steve B.
"Jive Talking" plays when I walk into a room.
Nosredna
I just hear constant, unrelenting screams...
geofftnz
In Australia, it's FIGJAM.
Barry Brown
+1 for the A-Team theme :D
Shaharyar
funny, i hear the wicked witch of the west theme song... hm
Jason
*DAH* dah dah *DAAAAHHH*, dah daah daaahhh...
Michael Myers
+12  A: 

"Good? Bad? I'm the guy with the gun"

StingyJack
+1 I was thinking exactly the same thing.
Spoike
+1 for any Ash quote.
JohnFx
+125  A: 

The more experienced I become, the more I think of myself as a bad programmer.

Kena
Strange, I often feel the same way... almost as though I realize how little I really know.
Krsna
Yeah, I feel the same way too.
Daniel Bingham
The more I realize what a poor programmer I am, the better of a programmer I become.
kyoryu
AKA The Dunning-Kruger effect: http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
APC
@Kena @Krsna @kyoryu: Amen. Couldn't have said it any better.
ShaChris23
A: 

I am constantly moving from bad to good. I will never really be good. I see others that I think are good, and I strive to be like them. I'm constantly refactoring my skill set so that I can be good, in the hopes that one day, before I kick the bucket, I'll be good. But I'm not there yet. Not today.

Mike Hofer
+1  A: 

As long as there is something to learn and improve, I consider myself an "adequate" developer. If I ever get to the point where there is nothing to learn from or improve on, that is a sign that I am not looking hard enough. I believe that I always have something to learn and a way to improve my skills - whether it is for my own edification or for a task at hand.

When I run out of these reasons, it is time to find another career.

joseph.ferris
+1  A: 

I'm a lazy programmer with good habits.

yogman
Me too. When reading Fowler's "Refactoring", I liked the Kent Beck quote "I'm not a great programmer; I'm just a good programmer with great habits"
Jonik
A: 

I'm still a bad programmer. But I'll become a good one when I grow older. :)

tunnuz
A: 

I hope I am! at least my boss saids I'm fast. But In a boolean basis, I would say I'm not.

+6  A: 

Yeah, I'm pretty good.

chaos
Oh, like you know. Bastards.
chaos
I had to upvote this. For those who have dowvoted it: come off it.
DrJokepu
+1 for humor, conciseness, and being from New Jersey.
Steve
Keeping it simple and elegant. You *are* good
Jonah
+40  A: 

I hope I'm a good programmer.
I fear I'm a bad programmer.

toast
+1  A: 

Based on all the stuff I don't know, I consider myself an 'OK' programmer. I get stuff done, I believe I do a good job at developing easily maintainable code, and constantly strive to improve.

But the scary thing is; I would consider myself better than almost all of the programmers I've worked with. And many of those, I'd consider myself light years ahead of.

John MacIntyre
+17  A: 

I'm a bad programmer. But I try to be less bad every year.

adamjford
+1  A: 

In my opinion, the two most distinguishing skills of a great programmer are:

  1. Ability to communicate (write/speak) well in any human language (preferably English).
  2. Unusual facility to categorize reality into hierarchies.

Mathematically skills come next, I guess, but they aren't quite as important.

Frederick
+1  A: 

I'm a bad programmer. The only reason I'm a bad programmer, is I don't know everything there is to know on the subject, and since I never will, I will always be a bad programmer. At least this bad programmer can look forward to programming and learning for a long, long time ahead.

Alex Fort
+2  A: 

I'm a "bad" programmer in the strictest sense: I'm self taught, without any formal education (and to be honest I'm terrible at math so there's no way I would ever do a CS program); I don't make use of things like version control or testing, although I am trying to learn them both; I've only ever worked on maintaining existing software without ever really having the chance to write something from scratch.

But you know what? I'm okay with that, because I'm trying to improve myself as much as I can and learn how to become a "good" programmer, or at the very least a better programmer than I am.

Wayne M
You're right. You can't be an expert overnight. At each stage of your development you'll find out that a technology is just what you need. One day you'll tire of being unable to track your changes - that's when source control will become a blessing to you. One day you'll need a more powerful editor - then macros will become your friend. One day you'll tire of programs that fail for no apparent reason - then meticulously clearing up compiler warnings will become your friend. Each new thing you learn is fun. Enjoy the process :)
PP
+1  A: 

Once upon a time I thought I was a good programmer. I could code in C, using and computing pointers to pointers and pointers to functions, etc. and usually getting it all to work without crashing frequently. At that time, that seemed enough to be a good programmer.

Then I lost my job during a recession, and my next job was mostly help desk and testing sorts of stuff. It took a few years to land another job which I thought was going to be mostly programming, but it turned out they just wanted a jack of all trades. After several more years, I finally landed a new job which looks like it's going to be mostly programming. I've only been here a few months, but that has been long enough to discover that I'm now a bad programmer. :-(

PTBNL
A: 

It's like an irregular verb. I'm pretty good, you're okay, he/she couldn't code their way out of a paper bag.

More seriously, when I was 18 I was The Stuff. When I was 25, I was ok. Now my employees are fantastic, and I screw up all the time. Soon I'll be a PHB. But I do know a lot more than I did last year, and that's the most important thing.

Airsource Ltd
"It's an irregular verb." -- it's an adjective, but you're correct on the irregularity: it doesn't conjugate into "good, gooder, goodest". What your example points out is not that, though, but that it's not discreet (or at least so only on a very fine scale, since the set of people is finite).
Jonas Kölker
a) "irregular verb" was to illustrate the point. Can't think of any irregular adjectives; they don't generally conjugateb) ITYM discrete. But I didn't mean that either, I meant that it's subjective, as per my example
Airsource Ltd
+8  A: 

People who think they know everything really annoy those of us who know we don't.

-Bjarne Stroustrup

I think the fact that a person seriously considers this question makes them a good programmer. Most of the bad ones either know they're good or have spent so much time convincing themselves that they're bad that it becomes a self fulfilling prophecy.

Jason Baker
A: 

I'm learning?

SD
A: 

I think I'm not a good or a bad one, I'm somewhere in between.

Most questions/problems in my day-to-day work I can solve on my own, as long as they're in programming domain. However, what makes difference is how long would it take me.

For example, I had a team leader who pretty much always could find a quick solution to a problem if I came to ask him about something I was in doubt or had trouble with. Sometimes not so quick, and in really rare cases he told me that can not/should not be done and came up with a different way to do things.

Quite often, whenever I did some piece of work I was assigned to, he could have a quick look and tell me that it's fine and well, but here and here it could be optimised a little bit.

He is the person who I would call a good programmer.

Evgeny
A: 

Is it normal for anyone else to work on four or more projects at the same time, all of the time? I feel this makes it difficult for me to be the great programmer that I strive to be.

A: 

I'm not a good programmer, but I try to learn something new every day. Constant improvement is more fun than being at the top all the time, anyway :)

rmz
+1  A: 

good or bad => good or (not good) => true

I may or may not be a good programmer, but I recognize boolean logic when I see it.

Mark Ransom
A: 

i KNOW i am a bad programmer, instead of writing my own crappy code i regularly steal other peoples code (google) or scriptkiddy my way trough free snippets.

sigh

i was simply born too late and the stack of books reaching to my ceiling only helped me get so far (stackoverflow). I am probably not intelligent enough to be a real coder either.

sigh²

i see young kids raffling out code faster then i can type a shopping list, and it makes me feel real old

sigh³

if {birthyear<1985} (flash-bios;upgrade-memory;insert-quadcore) else {};return;

My friend alerted me to the redundant else block. Exactly my point :-/

A: 

The answer is simple. If you think you are a good programmer, you are in fact, a bad programmer just lying to yourself.

A good programmer consistently writes solid code not by being excellent at programming, but by going through a rigorous testing process so that it has been 'proven' that he wrote some solid code. And even then he should assume that it's crap and needs to be optimized and debugged again.

Dortz
+1  A: 

I'm not a particularly good programmer. I mean, I can read through docs, write working and maintainable code, but I'm terrible at algorithms.

When we went over the different types of sorting algorithms in our textbook this year, it all sort of went over my head. Then again, that stuff will be abstracted in libraries in most of the actual jobs I'm doing.

I guess I haven't been in the field long enough to make a judgment. I at least know I'm not a good Computer Scientist :)

lfaraone
A: 

Good or bad, to what measures? Most definetely there are developers out there who can write code in a way I can only dream of. So in that sense I could be considered bad. OTOH as a teamplayer I can bring ideas together and make a group of people work together as a team. I do understand what they need, I take care they get it. I can put highly technical ideas into words that even users can understand and I can put user ideas into words that even software developers can understand. So is that good or bad? Dunno! Ask my team, I'd say. I had good developers introduced in my team with reputations as code-gods who were straightforward communicative dumbos (as it appeared afterwards). They were able to upset people within the hour of their arrival. That made them really bad, so I strongly suggested them to leave the team.

A: 

I don't consider my depth or breadth of knowledge (or lack of) to define me as a good or bad programmer. Rather- I consider myself a good programmer because I know I've made the day-to-day jobs of my closest co-workers easier over time, as well as helped improve my company's image to its clients. No doubt that knowledge has helped me along the way, but more importantly is an intrinsic motivation to make things better over time. Equally important is being able to "make things happen" and "get things done".

ftank99
+5  A: 

I don't care if I'm a good or bad programmer: Which it means? Which is the reference?

I take a lot of care to be better programmer than yesterday:

  • I get scared for the way I worked yesterday.
  • I'm happy for the way I work today with just learned things.
  • I'm excited for the new way I'll work tomorrow.
FerranB
A: 

There is also a difference between a good programmer and a good software engineer. I think I am a better software engineer than a programmer. I personally think the big distinction is how well you can see the big picture and predict correctly requirements w/o them being handed to you. In some sense, this is more important than being a good programmer. I know many people who are very good at programming, but cannot evaluate the big picture w/o getting caught up in little useless details.

OverClocked
A: 

I'm not a particularly "good" programmer - very few people are - but I am cautious, studious, and interested enough that at this point I believe I'm good enough to not do any damage and - hopefully - be able to leave code better off than I find it.

I am only 27 and have not had the opportunity to make enough mistakes to learn from but I am always willing to entertain the opinions of others and have a group of roughly 20 senior developers and industry leaders whose opinions I solicit and frequently defer to.

George Mauer
+1  A: 

G'day,

As several people have pointed out, it's the thirst for knowledge that's important.

I'm a "bad programmer" when it comes to Erlang or Ruby because I'm learning those at the moment. But! I'm learning them. And applying them. But I'm a "good programmer" because I'm always learning or refreshing my skills, e.g. I just went back and worked my way though K&R again to refresh my C knowledge.

For me "good" and "bad" is a mixture.

I've worked, and work, with people who sit on their rears with a massive conviction of their own sheer brilliance and no inclination to step outside their comfort zone. Oh sure, they might read up about a new version of zfs or the new mods to Apache, but when push comes to shove, they are not learning anything new. They're just putting a new gloss coat on the veneer of their current knowledge.

Being a good programmer is all about stepping outside that comfort zone. It's learning about C# and .NET when you're a confirmed *nix person so that you can appreciate things more. It's picking up Python even though you're a Perl Monk, etc.

It's an attitude, a realisation that you don't know it all more than anything!

cheers,

Rob Wells
+1  A: 

I am a bad programmer - I am always trying to concoct an evil plan to take over the world using my superb programming skills.

teambob
A: 

Okay, you guys really need to learn how to sell yourselves. Such self flagellation. In an economy like this one, you guys gotta talk yourselves up more. Except Paul Nathan. I think you've got it covered, Paul.

If debugging is the act of removing bugs from a program, then programming must be the act of putting them in.

This makes me a great programmer.

Of course I'm a better programmer than everyone else.

Just like I'm a better driver than everyone else, and better in bed than everyone else. I'm smarter, better looking, more rational, and saner than everyone else, too. Like most people, I'm just better than everyone else.

Don't try to tell me otherwise.

I'm always right, too.

P Daddy
A: 

I'm a bad programmer trying to be a good one.

Cleiton
+3  A: 

I thought I was good until i discovered SO and the people in here. then i realized i was bad.

lyrae
Same feeling here!
aitor
A: 

Both!

I would have to say because you make choices based on what you need.

ie. adding images for design in a site which are unnecessary and add file size. It is 'good practice' to keep a site as small in terms on file size, but to do this you cannot edit you JS/ CSS (obfuscated) and can easily sacrifice usability and aesthetics to save on bandwidth/ speed.

I guess it really depends. I do my best, but is it really the best?

Tom
+1  A: 

I can't remember where I heard this (something makes me think Stallman, but I can't be sure):

Bad programmers write clever code, but use stupid data structures; good programmers use ingenious data structures and write little code.

(Not a direct quote).

Peter
yea I heard same type of quote/advice somewhere
hab
+1  A: 

Yes.

Daniel Straight
A: 

Of the people I know that play guitar, I'm "better" (in some sense) than the vast majority of them, and people will sometimes tell me I'm a pretty good guitar player. But in reality, I suck at guitar, esp. compared to someone that really is good at it, and then there are the gods, like Vai and Petrucci, etc. that just make you want to throw all your guitars in the dumpster. I could say the same about programming.

smcameron
A: 

I don't think that you can be a "good" programmer until you acknowledge that you can't stop learning new ways of doing things. And the moment you do stop learning new ways of doing thing, you become a "bad" programmer again. And maybe that's the natural evolution of programming.

Tchalvak
+12  A: 

I'm better than I was yesterday, but not as good as I'll be tomorrow.

JohnFx
My favority answer for this type of questions :). +1
bastijn
+2  A: 

i used to be a great programmer. then i realised that i was only a good programmer. now i've learnt that i'm a bad programmer.

being a bad programmer rocks. it means you're acknowledging that you can be a better programmer. and every programmer can be a better programmer. as you learn more and get better experience, you lose bad habits and pick up new bad habits.

but i think the best title i picked up was being a 'hero programmer'. that's when the deadline looms and life is about to hit the fan and you pull three all nighters in a row and manage to get working code out. great code? probably not. but then again all code that can work is great code in my books.

last quote: 'all programmers must be optimists. because at the start of every project, with every crazy requirement and manager breathing down your back, you have to be an optimist. otherwise not one single project will ever start. because at the end of the day, a programmer needs to BELIEVE it's possible.'

Kamal
+1  A: 

Bad.

But do not tell it anybody.

Indoril Nerevar
A: 

Im a good programmer. But far too lazy than any one in the world could be... I started with QuickBasic when i was a kid and went up the ladder. But now, in my early 20s, i feel that im losing interest in everything as i over calculated the reality of life and feel that we should try to evolve the mind than man made technologies. After all, there is no better machine that will understand us than our own body...

Now i`m working on an artificial intelligence project. So, i might be able to kick start the interest in programming again by some means, hopefully.

Ananth
+16  A: 

When I started to teach myself programming, I learned to be an awkward programmer - with logic that was hard to follow, with obscure bugs. By reading the Masters, I became a clever programmer, with harder to follow logic and bugs harder to fix. I then, through careful thought became a subtle programmer, with code that was versatile, with fewer bugs and layered logic.

Then came the fateful day, after a whole year away from a project , I had to maintain my own code. I could not recognize it, the logic, the code constructs, and even sometimes the comments. I was ashamed to have written the code, even though it was a large, successful system that had few defects.

I have noted that often what was to me 'bad' code from a colleague was code that carried a mindset or precondition that I did not possess. Once I had understood the working set, the code even seemed quite extraordinary...

So I began to walk towards being a demonstrative programmer, project by project, one that I am still working on. In looking at my own work, I don't judge it 'good' or 'bad' any more, but try to focus on solvable constructs - 'unclear', 'overcomplicated' 'risky', etc

I try to remember code that was 'maintainable', 'clear', 'robust' and so on. I hope that one day I will attain the mark of a "Good Programmer"

caving
That was a good one.
ShaChris23
I've had endless debates from junior programmers who think they are hot sh** and they criticise my explicit coding methods. But I've been programming for many years and failure to make code explicit is just asking for maintenance headaches down the road.A most poignant time in any programmer's development is realising that their code may actually grow old. And any code that survives requires change. Seeing code you wrote that commercial companies still rely on years later is like looking into a mirror.
PP
A: 

Ha-ha! nice one. I think everyone is both - good and bad. And it depends in their boss. How much chance of excuse she gives you. If she applies pressure to deliver the product, you have the excuse to say "Normally, I am better than this, but this time I will make and exception and write not-so-good code"

Miroslav Jeliaskoff
A: 

I'm a good programmer.

jonathanconway
A: 

Good programmers meet the deadlines of their business-counterparts, and get the approval and respect of their programming peers.

To hire one, have another good programmer ask them one question in an interview: "what are you most proud of doing in your last two or three positions?"

Dean J
A: 

I consider myself to be a good programmer. Several of the other answers seems to imply that being a good programmer implies writing perfect code, but I do not share that opinion. To me being a good programer is to care about the code, spend the required effort in selecting good names[1], refactoring as needed, and thinking about other people (or even yourself) that will be working with the code sometime later[2].

If the requirement is the function should take X as input and give Y as output, a good programmer is not satisfied only based on that requirement being fulfilled, but also caring about the intrisic value of the code.

Also having several years of experience means that I have made lots of mistakes that I have learnt from, and have developed a taste of what good code is (of course there exists no objective exact definition of "good code").

[1] "There are only two hard problems in computer science - cache invalidation, and naming things" - Phil Karlton

[2] "Programs must be written for people to read, and only incidentally for machines to execute" - Preface of SICP

hlovdal
A: 

That's why I love Google.
It is Google who helps me to grow everyday, and I really LOVE to learn with it.
I don't know if I am a good programmer, but for sure I am a good student ;)

Nuno Peralta
A: 

I don't care how bad I am or how good I am, but from my perspective 12 Things Every Programmer Should Know gives some ideas what a programmer should do.

Samnang
A: 

I always want to be a good programmer. But there are so many great programmers.
They give me a setback, and a passion.

Benjamin
A: 

I'm bad programmer.

Stas
A: 

I feel like my lack of being able to remember makes me a bad programmer. Unless I am working on a project for weeks straight, I don't remember all of the languages functions, and which order their parameters go in.

I would guess a good programmer would remember things like that.

Kris.Mitchell