What next for you, software developer?

Mog Nesbitt
7 min readJan 9, 2017

You’ve been coding for a few years now.

You feel competent at your preferred languages. You’re not making too many silly mistakes, and although you’re learning a bit every now and then from articles you read and teammates, you’re not feeling the passion for coding that you once did.

The shine has disappeared. You’re stuck, and you don’t know where to go to next.

It’s OK. We all go through this.

Learning the fundamentals of computer programming is a mammoth task, and you’ve reached the first plateau in your journey. Congratulations on making it!

The good news is that there are many more exciting adventures ahead of you, and it’s your choice which way you’d like to proceed. I hope this article will clear away the fog so you can see some of your options.

Anna & Michal, CC BY-SA

Northern path: The Mines of Deep Technical Expertise

These mines are infinite in size, with a branch appearing every few steps. Some who go deep into the mines find valuable secrets and stay there, reaping the rewards of their super intricate knowledge. Others are explorers, choosing different paths, then coming up to the surface before plunging into the depths of another path.

Let’s say, as an example, you’ve been interested in web technologies up to now. Do you know how an HTTP server works? How about HTTP/2? How do different servers perform under different types of load? How about to a bandwidth-constrained client? How does HTTP/2 flow control work? How does that interact with TCP’s flow control? How does TCP work, anyway? And how does IPv4 vs IPv6 affect it? With all this knowledge, what can you do to improve your users’ experience accessing your website?

Once you’ve gone far down a path, how do you apply what you’ve learned to your work? How do you communicate it with your peers to spread your knowledge? And what’s the best way to pitch your ideas to the decision makers?

Web tech might not be your thing, but there are an astonishing number of deep paths to choose. If you’re not feeling inspired, look around for what people in the community are doing. I was recently inspired by Aaron Patterson adding compaction into the Ruby garbage collector. There’s something out there for you!

Example job titles for this work: Senior Software Developer/Engineer, Lead Developer/Engineer, Technical Consultant, Software Architect, Principal Developer/Engineer

Western path: The Mountain Range of Technical Leadership

Maybe intricate knowledge is not your idea of a good time. No problems.

Head west and use your skills to help people with their own journeys up the mountain.

Instead of adding to the output of your team by contributing code, you’ll be a multiplier. If you can help a team of six developers ship 50% faster — which is realistic given your technical skills — then you’re personally delivering as much as three developers.

More importantly, you’re also training those six developers how to be better at their work, and over time you’ll make a huge contribution to their output and future career. This feels extremely rewarding.

Working as a leader is a whole new level of complexity, so if you’re looking for a different type of challenge, this is where you’ll find it. People come into the workplace with decades of history making them the person they are today, and everyone is different.

Although you’re focusing mainly on the technical stuff, your role means you’ll have to deal with the irrational meatbags that are human beings. This starts off being difficult and often frustrating. They’ll want to take a route you know is hard or impossible to traverse. They’ll want to use this new fancy mountaineering gear you know will slow them down more than it speeds them up.

It’s OK. Leadership is a skill like any other, and once you’ve done it you’ll start to get the hang of it. Building strong relationships and a good dose of patience will get you there.

Example job titles for this work: Technical Team Leader, Development Lead, Technical Consultant, Chief Technical Officer (in small startups)

flydime, CC BY-SA

Eastern path: The Fiery Pits of People Leadership

So, what if you’re most engaged when you’re working with people? You like the feeling when everything’s going well and your team is shipping good stuff like crazy. You think up ways your team could be more efficient and more happy, and do your best to implement them.

Sounds like you might be up for the fiery pits!

This is the path that I chose to take a few years back, and I love where it’s taken me. It does mean you’re leaving your technical knowledge to one side. Retaining that knowledge is invaluable in understanding the context of the decisions your team is making, but you won’t be making (many) technical decisions as part of your day-to-day work any more.

Instead, you’re focusing on your delivery team as a system. What kind of skills and personalities does your team need to hire? What experiments can you run with the process to see whether it makes people happier and more effective? How will you handle people who are not performing? What can you do to make your workplace a great place to work? What can you do to remove impediments and pressures from your team so they can do their best work?

I call them fiery pits. There’s no path, just a recommendation: try to keep your team away from the pits. And the fire. Unlike working on a product, it’s not clear whether you’re succeeding on a day-to-day basis, because it’s often months before you get any substantive feedback from what you do today. There’s also no checklist of the things you should be doing. It’s up to you to make stuff better. How you do it is up to your own intuition. This can be frustrating for someone used to the immediacy and strong direction of agile.

But the payoff: it’s enormous. On the rare occasion you get to poke your head above the sulphurous clouds and take pause, the satisfaction of having built a happy, well-functioning team is amazing.

Example job titles for this work: Delivery Manager, Software Development Manager, Chief Technical Officer (in small- to medium-sized teams)

Side quest: Support your community

Sometimes all that’s needed to get yourself out of a rut is to see your knowledge used for good.

Maybe there’s a charity that you really admire who could do with a new system to help them better manage their work. Maybe you’d like to get into educating the next generation of developers by mentoring in an event like Summer of Tech or Rails Girls or one of the thousands of other events run by volunteers just like you.

How about doing a talk at your local meetup on something you’ve learned? Might be technical, might be an observation about working in the tech industry.

Side quest: Take a sabbatical

Most humans aren’t programmed to work continuously in a single domain. After running a company in my 20s and burning myself out, I decided to do an 18-month full-time therapeutic massage diploma, and then mixed software contracting and massage therapy for some time after. Best thing I ever did. The skills I learned about caring for other people transferred particularly well to my management career.

Consider what you’d do if you could take a break from your current line of work. If you can pare back your living costs, and perhaps do part-time contracting, you can explore other parts of your life. Maybe that’ll lead you down a different path, or perhaps you’ll come back to software development later, refreshed and with a different perspective.

Teleporter: Do something else

If none of the above sound like you, and you’ve tried a few different dev jobs and the feels are just not there, it might be that you’ve just ended up in the wrong field. It happens, and it’s not the end of the world; just the end of this journey. The commercial and workplace knowledge you’ve learned in the last few years will be invaluable for your next career. To stay technical, maybe you’d like to try an Operations role (called DevOps in some companies) or a Software Tester/Test Analyst role. Also consider moving into product roles, such as Product Owner or Business Analyst.

Hopefully you found something in there that made you think, “Hmm, I could see myself trying that.” Great! Try it out.

With any step forward there is a risk of failure, but you’re clearly not satisfied with where you are, so now is the time for action. Enlist the support of your peers to help you make this move. There are people out there who would be delighted to act as your mentor — find one of them. Most communities have a Slack group these days; join up and ask around. For an hour a month of their time, they will boost your confidence and guide you to the next exciting stage of your career. Good luck!

--

--