Ask HN: what makes a good developer?
Short version:

What makes a good developer? What can I do to prove that/learn if I’m a good one? (also with regard to hiring decisions)

Longer version:

I’ve got more than six years of experience working as a software developer now, but through my whole career I had doubts about my skill level. In a couple of places I was the only developer or the most skilled one, even though I was pretty junior then (I come from an industrial town in one of the ex-Eastern bloc countries - not the most advanced place really).

I also worked in a couple of places where there were more skilled guys around, but the level of these companies was still not too high, so I knew some of the things I saw there were not actually the best practices.

Finally I got a job in a place I thought was good - they are in financial industry, can afford to (and do) hire people from across the world, some of their ex-employees joined Google, so I felt pretty confident about their level.

I was fired from that job a few months ago, and the whole process that led up to it was very difficult for me. The official reason was ‘not meeting expectations’, and it was implied that I’m not a good developer at all.

The whole process was pretty dirty from the other side, with lack of communication, ambiguous statements that were not to be discussed and (at times) directly contradictory input. What makes me think that these problems weren’t only mine is the fact that employee turnover was high: a team of ten saw four people joining and five leaving (including all four newcomers) in about a year. I believe a good deal of personal dislike from the manager could also be present in my case, so I’m quite sceptical about the assesment - but I admit I had problems, so my professional self-esteem is still quite damaged.

Now, I’m looking for a way to restore it. There are a couple of details to take into account: I was working in Western Europe, and my visa depended on my job (which made that whole thing way more important and difficult that it normally would); the country I was working in isn’t exactly the world center of software development, so I moved back to my home country to recover, but I still want to try emigrating to US/CA/UK/AU a year or two later.

Another thing is that I am also changing my primary language: I was working with the corporate standard language (think C#/Java), didn’t really like the community and typical problems/jobs associated with it, and decided to move to a more ‘hacker-friendly’ language (think Perl/Python/Ruby).

So my goals are as follows: personally - get experience in the new language and prove to myself that I’m a good developer; with regard to the outside world - have something to show that would make me worthy of an employment in a good company and might convince them to go through the immigration process with me.

I could think of several ways to do it:

- join an opensource project;

- start my own project, get it running and attract users;

- have some visible/measurable proof like certifications or a position in TopCoder/Project Euler;

- a classic way of finding a beginner level job, learning at work and getting some recommendations there is also an option.

These are the ways that I can think of, but I don’t really see the picture from the manager’s side, and I think many people here are more experienced that I am. So I’d like to ask your opinion on these options, and would also love to hear about other ones that I could’ve missed.

Thanks in advance!

PS There’s one more thing that’s been haunting me the whole time - I try to look at the situation and figure out who and what was wrong there. Frankly, I can see the situation in two very different ways: either I’m a whiner who just cannot face the reality, or something was really broken in the management system there (and two biggest signs that make me suspect it are high turnover and contradictory managerial input). Could you please share your impression of the situation?