I've been a software developer for 5 years. It has been a good career from an outside perspective - great names, high salaries, chance to live abroad, responsibility beyond my years etc.
All is not well on the inside though. I'm experiencing a bit of a career low and crisis of confidence, which is why I turn to the smart people at HN!
I'll give a brief history for context -
My first few years as a developer were great. I learnt a ton about software and all things tech. Combined with a bit of business awareness I shot up the ranks and ended up in 'senior' developer roles (in practice if not in title). I worked on some fairly low level high performance stuff and off of this built a bit of a name for myself in some niche technical communities. I was proud of what I achieved and felt I was learning every day and delivering good stuff.
The last few years though, this has really stopped. I first had a bad year in one of my roles where issues outside of my control left me fighting fires for a year rather than coding. I left and then spent six months in a contract role that just involved hacking HTML and Javascript together at short notice for demos. I've now moved back into a permie role, but seem to be really struggling to get to grips with the code-base. The bits of code I have contributed have in retrospect turned out to be buggy or poorly designed in the context of the code base. I'm not covering myself in glory there at all. I don't have a single achievement yet after 6 months on the job.
I'm fortunate in that my CV and interview technique is getting me into very well paid development roles, but every day I am feeling like more like someone who can talk a good game and live off past accomplishments, but not deliver. It's really eating me up as I want to excel in my job and earn the respect of my team.
I guess I feel like I've gone backwards over the last few years. A few reasons for this:-
- I never just sit there and crank out code anymore - I must have read 1000 lines of code for each one I've written over the last 2 or 3 years.
- I never get the opportunity to properly engineer something and learn from what works well and what doesn't work well as a result of my own design decisions. My last few jobs have been weighted towards maintenance.
- I struggle a lot more with low level algorithms and data structures nowadays. I used to be pretty good at this but have lost the edge as I've drifted up to middle tier business and CRUD coding.
- I have lost the art of elegant code - everything I write seems forced and fragile, too much repetition, too inflexible. I look at other peoples code and algorithms and it just looks unattainable to me even though I was doing that 2 years ago.
- I've developed a few concentration issues - I drift off and surf the interwebs more than I used to.
- The learning has stopped - I learn new tools and languages but rarely take away a new idea from them which makes me better in the day job.
After this essay, I guess the question is, how do I get my mojo back and get that level of technical excellence back?
And did this happen to any of you guys part way into your careers, or did you have a pretty linear improvement over the years?
Any help appreciated!
You decouple your day job from your need for technical excellence.
You do something on the side. Maybe a pet project. Perhaps a little service work for customers you find. Contribute to an open source project. Or best of all, start your own business.
This is what I did and it changed everything. I have never complained about the lack of stimulation of any day job I have had (well maybe just a little). Better yet, I have used to crappiness I encountered during the day to push myself to "never do that" at night.
The day job is comprised of quality right in the middle of the bell curve and it's good enough to pay the bills. The side work gives me a chance to push all the way out to the right hand side of the bell curve with cool stuff.
The ultimate plan is for the side work to take over and make working on someone else's crap during the day unnecessary. Give it a shot.