Ranking Yourself as a Software Developer: What Annoys/Scares You Most

This is not a definitive system. In fact, if anything it is just one facet. However, I was thinking through something while driving home the other night which got me thinking about how I've grown  as a developer over the years when I had a bit of insight; the way in which I think about what is the most annoying thing from a coding perspective has grown with my skills and career. And while this may not be identical for everyone, I think there is a decent kernel of truth here.

Beginner: Lack of Understanding/Skills

As a beginner, what was most annoying or most scary was the unknown. I wouldn't apply to a job if I didn't already think I knew the programming languages, frameworks or stated skills inside and out. I would be afraid to take on a task if I didn't fully understand what it entailed.

The advantage was that I knew that I was new (and others did as well). As such people didn't expect much. As long as I didn't venture into the unknown, I knew I could get by.

I see this reflected in a lot of people who are in a new position or who are new to professional software development.

If this is your biggest fear you're probably in this group. Though, I would say not to be discouraged. After all, that low set of expectations is a boon. If you're in a good team/company you can often get a chance to work on or help out with something outside of your comfort zone without expanding those expectations (until you start succeeding).

Growth is not a guarantee. Getting better is not just about years of experience.

Intermediate: Mistakes

After you've spent some time pushing past what you know you start to realize that if you can already excel in a few languages or frameworks that you can often pick up new ones pretty quickly. And new challenges aren't as oppressive so long as you understand the requirements or broad objectives. 

At this point you start to fear failure. You've made a name for yourself, maybe even a promotion and some raises along the way. Now the expectations bear some weight and little things are what cut deepest like spending hours hunting down a missed semi-colon or that one null check you forgot that took down a system. Mistakes you may not have even known you were making a year earlier or which didn't concern you when people still looked at you as the new team member.

Hitting this point shows that you're more comfortable with the role of a developer in general. You're willing to take on new or complex things. You know you have the skills and you're more concerned about the business side of things. The metrics. It isn't a matter of IF you can do a thing, but if you can do it on time, or do it to a high enough quality or without impacting things.

Growth is STILL not a guarantee. At this point it is more about putting in the hours and honing your skills. Getting past this is quite a slog. I recommend, if your main job isn't pushing you, to take on some side projects. I helped family by making software to run their businesses. I worked free, so there were no time pressures and I could take the time to do the work well. You likely won't have people who know that they could make use of a developer though, so you may need to get innovative if you can't think of projects you want to do for yourself.

Advanced: Success

After a while the mistakes you're afraid of begin getting more complex and rewarding. 

I remember a project I was working on where I couldn't find any way to address the problems within the scope I was given without hand cranking out Expression Trees in C#. The specific problems I was working on had no usable examples in any document or on Stack Overflow that I could find. I struggled for weeks. Eventually I overcame it and the feeling was... the best.

I started noticing degrees of that feeling after each major setback I'd run into. And I also noticed that the only times I felt I was truly growing as a developer was through these experiences.

Then, a few years ago I set out on an ambitious project for myself. I was using a combination of new frameworks and technologies to accomplish something I had only ever just scratched the surface on in the past. I planned it out, but the nature of the project was that I couldn't really test anything useful until I had bashed through the biggest part of the project. It took a few weeks. I fired up the application in debug mode... and everything just worked.

I'm not sure I've ever had felt more... nothing than in that moment.

On my drive home the other night though it hit me. I was never doing the project for the sake of the project. It was, from the very beginning, a side project I had started to grow my skills. And I know that the most knowledge comes from struggles and mistakes. When everything just works, I learn very little (perhaps nothing in many cases).

It was also at this point that I realized; I don't fear making mistakes any more and haven't for quite some time. I welcome criticism, I seek out projects I'm likely to struggle with or even fail at. The expectations may be high, but so is the respect. While I can't think of a project which has been a total failure, I'm not concerned for the backlash.

I only called this "Advanced" and not "Expert" or anything like that because I'm sure that there is more. This is simply where I'm at now. I don't yet know how to get past this point. When I get there, I'll try and remember to come back and add more. I'll likely find other metrics than what bothers you and may write on this. As I said before though, while there are likely those who don't fit this, I do think it is pretty accurate.

Comments

Popular Posts