On.. Programmer Anxiety

The Origin Of Programmer Anxiety

I’ve always worked in small development teams. I’ve work at all times on all projects on all tiers, UI, business, data and anything in between those. Working on small teams with limited experience of larger organisations has left me with a touch of what I like to call Programmer anxiety; Am I any good? Do I know enough? Can I demonstrate it?

I think this is the curse of all self taught, experienced based developers. With formal education behind you there is a certain degree of confidence that what you are doing is the ‘correct’ way of doing things. If you’ve learned as you do development work then there is a nagging doubt that perhaps if you knew a bit more then this would be easier. Or this would be obvious.

To compound this programmer anxiety I have also chosen to use VB.NET as my primary language. Although this is a conscious choice, which I will cover in a later post, the apparent snobbery that surrounds VB.NET and C# in the .NET community leads me to believe I’m a second rate programmer. This however is not the case. In fact I can develop in C# as competantly as I develop in VB.NET.

The more programmers I meet the less anxious I feel about the level of quality of my code and choices I’ve made in development. The ability to converse with people, both online and offline, on subject as diverse as implementing user interfaces, the intricacies of class structures and the relative usefulness of different patterns has shown me that I can at least talk the talk.

Walking the walk?

Now days it occasionally occurs to me that whilst my code might work, is it high quality code? Is it efficient, is it elegant? Sure I can implement a model, view, presenter pattern and have all the layer separation in the world working in a seemingly slick manner, but is the code high quality? Am I passing the ‘right’ objects around? Does this matter if it works?

Model, view, presenter (MVP) brings me on to another more recent anxiety. Let’s say I think I understand a newly presented concept, I now approach the implementation. I’ve got all my code working, the pattern seems to be working as it should be. Then I go and check out some other peoples implementations of it and they’ve implemented it in a different way. What’s more they have implemented in a different way to each other. Who is right? Is my implementation still valid? Is it better or worse than someone else’s? How do I evaluate this? Are we all correct?

The most ready source of other peoples code to examine is open source projects. Are they a fair comparison to what I am working on in a commercial environment? I occasionally feel that the code is full of sparkling brilliance because its been engineered to look that way, the same solution could have been achieved in a similar manner, but then as it is very public code it has to appear to do back flips whilst juggling and making the breakfast,.. instead of just making the breakfast. Or is this how everyone programs?

This questioning is compounded by the fact that just picking up other peoples code is hard. Sure if they have developed using a pattern you are familiar with you should be able to pick it up relatively quickly, but what happens if they haven’t. Are you having problems working out what’s going on because this developer is leagues above you in terms of ability, or is it because they have made a horrible spaghetti soup of their code in an effort to impress everyone with their brilliance? Were they trying to impress everyone or is this just how they program? Does it make me a genius because I can in five lines of code what its taken them fifty to do?

Back To School

This all then brings me on to the question of education. That back up, the shield of steel that says ‘I know what I’m talking about’, after all people with letters after their name always know what they are talking about. The problem is this; What qualifications to get?

Should I become qualified? What am I proving and to who? At this point in my career I have a track record of developed and released products, for companies I’ve worked for and as personal developments. I am able to demonstrate my understanding of programming principles as they related to real world applications, I can demonstrate an knowledge and understanding of current technologies. My experience stands up to close scrutiny. Do I need qualifications now?

What do I gain by have an MCTS, or whatever relevant qualification companies are trying to sell me training for? More money? Do I need that, if I wanted more money I’d move to C# as my primary language of choice. If I’m staying and progressing at the company I currently work for then its not going to be something relevant to getting another job, particularly as qualifications are often out dated within a couple of years. Would people be more likely to listen to me if I was an MCP, why?

If I did decide to get qualified, what do I go for? A general .NET qualification or two? Specialisation could be the path to guru status and riches beyond my wildest dreams (if indeed riches figured in my dreams). Would I be better off being an early adopter, gaining LINQ qualifications (whatever form they might take) now could benefit me in the future both in my current job and future career, however what would happen if LINQ doesn’t take off, early adopting is a gamble.

Non Conclusion

Perhaps I need to get more code out there, find out where I sit in the whole developer pond. In the mean time I can covet the skills that Paul Stovell, Anders Helsberg and others seem to exhibit with consummate ease…. *sigh*


4 Responses to “On.. Programmer Anxiety”

  1. 1 THATONE December 26, 2009 at 7:22 am

    I hear you my man, I am in a very similar spot – I work for a top internet retailer who stifles any type of creativity – but they do pay well, so I stay. In a way I feel like I am selling myself out but in other ways I feel like while the getting is good might as well rack it up.

    I think the solution for me would be to either get my masters in MIS and sharpen my skills a bit or get a job for the government that will actually send you to training.

    The least likely scenario would be to try to get into management, but I could see no better way of losing skill and becoming more of an ahole than this option.

    All in all we get paid to f**** with computers, so live it up!

  2. 2 Lindsay Kay February 16, 2011 at 1:04 pm

    Participation in open source development is great for developing confidence – ie projects at github, GoogleCode etc.

    I agree with THATONE – avoid retreating into management – those middle management layers of big companies are full of box-tickers who failed at writing software.

  3. 3 Freda June 17, 2014 at 2:18 pm

    We’re a group of volunteers and opening a new scheme in our community.
    Your site provided us with valuable info to work on. You have done an impressive job and our entire community will be thankful to you.

  4. 4 anxiety attacks July 8, 2014 at 6:16 am

    Hi there, just became alert to your blog through Google, and found that it’s
    really informative. I’m going to watch out for brussels.
    I’ll be grateful if you continue this in future.
    A lot of people will be benefited from your writing.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: