How to Reboot Your Developer Career
January 30, 2020
I'll start off by assuming that you are currently employed, whether full- or part-time, working as a contractor, or freelancing. Even if you are not working for one reason or another, some of these tips may still be helpful.
Are you a developer who is feeling depressed or sad that their career doesn't seem to be going anywhere? Have you ever felt some of the following?
I'm stuck at my job and I can't get out because:
- I'm too comfortable where I'm at
- no other company would match my salary
- the location or benefits are too hard to give up
- I like my coworkers too much, or I made friends and I don't want to leave them behind
My technical knowledge is outdated because:
- our stack is old
- I'm maintaining a legacy project
- company/department policy is preventing me from using modern tech
- there's no motivation to learn anything new
- no one on the team is excited about their career and/or sharing their knowledge with others
- management seeks to maintain the status quo (there's actually a good case for this from a business point of view)
- I feel stupid compared to devs working at other companies (despite building/managing an entire project/app on my own)
- I feel overpaid for the technical knowledge I have
- I don't feel capable of passing an interview
- I don't feel capable of handling a complex project
I don't feel empowered:
- my "rank" is too low to make any changes
- no possibilities for promotion
- change is discouraged
I'm bored / there's very little work to do.
The company's product or service is uninspiring, or I'm indifferent to the company's mission.
Other - tweet at me and I'll update the list.
I don't mean to trivialize your particular situation, but if you are employed consider this: it could be worse. You could be unemployed. Having a paying job (regardless how bad it seems) puts you in a position of power, and there are a few ways to leverage this. Read on.
Lobby for change
If you feel like things are stagnant (tech stack, tooling, hardware, etc), slowly start advocating for change. You want to do it gradually, picking the low-hanging fruit at first.
Story time I once worked at a job where management had certain rules about software we were allowed to use, which included an archaic code editor. Since I spent a quite a few years there, I had become isolated from more modern tools and techniques. A new hire brought knowledge of this cool new IDE called PHPStorm. Intrigued, I quickly realized the benefits of this tool (read: a big increase in productivity). Being a lead, I leveraged my communication channel with upper management and started pushing for a switch to PHPStorm, all the while promoting the advantages it brought over our old tool. It took a few months but eventually we had ourselves shiny new PHPStorm licenses.
No matter your position, from intern to principal architect, your suggestions matter, and should be heard. A peer or someone in a more senior position will eventually notice, as long as you are thoughtful and provide good arguments for wanting change. Do it often enough, be mature about it, and don't make it sound like a complaint or criticism toward the company.
Just remember, in general companies are more willing to entertain ideas that 1) reduce costs and/or 2) increase profits. Smaller companies tend to be more flexible.
Frame your requests for change in terms of productivity gains, but back up your claims with solid research.
Ask for (more) work, or use your downtime productively
Being bored at work or not having enough to do doesn't mean you should count the minutes until 5 PM, or spend most of your time on social media or Reddit. Here are some suggestions:
- Ask your supervisor to assign you more work. Sometimes junior devs don't even realize that it's an option.
- Find out if other teams or projects need help. Cross-polination can expose you to new problems, tech, ideas, etc, and might boost your morale.
- Tackle some technical debt. Every project that runs long enough will incur a certain amount of technical debt. Now's a good time to take another look at that code and do some refactoring, bug fixes, or general maintenance. If nothing else, it'll leave you feeling better about the state of the codebase.
- Write tests. Legacy apps are ripe for having some test coverage built into them. Don't know how to write automated tests? There's never been a better time to learn.
- Engage in career-related research. If you've done all the above and still don't have much to do, I think it's fair at this point to start researching or learning things related to your career or the direction you'd like it to take.
Don't get too comfortable
Once in a while it's worth taking a step back and analyzing how comfortable you are in your (old) ways. That could be a sign of regression. Never stepping out of one's comfort zone can be reassuring, but also devastating to one's career. The world does not stand still, nor should your desire to push boundaries.
Study outside work
If your company does not or will not provide you with learning opportunities, your best option is to pick up the (virtual) books and study on your own in your spare time.
Even if your desired tech has no relation to your day job, some of those skill might still apply. Think concepts, techniques, patterns, best practices, etc.
Immerse yourself in dev culture
When you surround yourself with things that you aspire towards, some of that will rub off of you. Hang out with other developers if you can, read articles and blogs, even developer-specific comics. Get hyped!
Keep reading for even more ways to become immersed.
Work on a side project
Probably the best way to boost your skills and confidence as a programmer is to work on a side project. More on ideas for side projects below in the Common excuses section.
A side project is the gateway toward getting better at your current stack, or learning something new. Are you interested in Vue or React? No problem, build an app in either, while learning. Always wanted to build an iOS or Android app? Now's the chance.
Working on a side project has many more benefits than simply learning something new. It will put you above the majority of 9-5 developers, but it will also show potential employers how involved you are in your career.
Be full stack
Being a full stack developer is not everyone's cup of tea. Maybe you're really good at server-side development but not very comfortable on the front end. Or maybe you love UI but aren't exactly sure how that back end API works.
Maybe it's unreasonable to expect a developer to know the entire application cycle, but under today's (un)fortunate paradigm that is often the case. Now let's get one thing out of the way first: I, for one, am grateful for this paradigm, because it has forced me to adapt and, by extension, progress in my abilities.
My heartfelt advice is to stay open to learning anything even tangentially related to your career. You'll become a much more versatile developer once you've gained an understanding of how the entire process works. Some may say that it's better to specialize than to be the proverbial jack-of-all-trades. While I don't disagree, I still maintain that you'll end up an even better specialist if you're comfortable in another area.
Be a polyglot
Start a blog
A blog is a good place to jot down ideas and interesting techniques. Keep it focused on your end goal, if possible. What I mean by that is, if your goal is to enhance your career, perhaps it's not a great idea to post too often about your cats.
"What would I even talk about?" Don't overthink it. Learned something new? Write a blog post. Solved a problem? Blog about it.
"But nobody would read it / nobody knows I exist" Yep! If you don't already have a following, you will be talking to a wall for the next year or so. But if you stick to it and continue to produce quality content, people will eventually find you. Just be consistent about posting articles, and don't despair. I've had successful blogs in the past (in unrelated topics) and it takes a critical mass of articles, combined with time, before you'll see visitors.
"I don't want to pay for it" That's cool. Neither do I. This blog is hosted for free on Netlify. There are many free, statically-hosted solutions nowadays.
If there's one thing I regret, it's not joining Twitter under my developer persona years ago. Once again, I've had successful Twitter accounts in the past for other hobbies but back then I wasn't paying so much atttention to my career.
So what is Twitter good for? First, follow developers who produce quality content, or whom you admire. (Shameless plug → pls follow me k thx bye). This will likely inspire you but may have the side effect of intensifying impostor syndrome (don't worry though, it'll pass as you (re-)gain confidence in your abilities).
Second, tweet about developer problems and solutions you encounter. Post screenshots or gifs if you can. Take your time and craft a tweet before sending. People are more likely to notice a polished tweet.
Third, engage in quality discussions with other devs. Compliment, ask relevant questions or clarification, or offer insights. Try to keep it civil and friendly.
Not least, use Twitter to raise awareness on your own work, such as posting a new article on your blog, or working on a side project.
As with blogging, don't dwell on your initial lack of either followers or reactions to your tweets. For a very long time it may feel as if you're in a vacuum, but keep at it and you will succeed.
My final Twitter advice (some may disagree) is to keep your interactions focused on the persona you want to project. If your goal is to promote your developer side, stick to that. Don't meander too far into things like politics or unrelated subjects - at least until you have a bajillion followers. Some will argue that you should be yourself on Twitter (which I agree with - I am 100% genuine) but I also believe in separation of concerns. I won't mix my career with my hobbies and personal beliefs under the same account. I've unfollowed many brilliant developers who mainly shitpost or talk about random subjects. Let's face it, at the end of the day there's too much stuff in your timeline to filter through.
Listen to dev podcasts
One thing that helped me become even more interested in the developer ecosystem was to listen to related podcasts. A few years ago I started listening to Full Stack Radio and my brain was suddenly flooded with a wealth of fascinating information. Every episode got me thinking about new concepts, and got me to play around with some of them. Of course, there are many other developer podcasts out there for you to choose. And if you have a long daily commute, it's the perfect time to listen to an episode.
Attend developer conferences, webinars, or meetups
Try to get your company (via your manager) to send you to a developer conference of your choice. Keep all the costs in mind. The best companies will pay for everything (conference cost, airfare, hotel, meals, transport, etc). If that's not in the budget, see if you can cover some of the costs yourself, or find a cheaper local conference or webinar. In general it's easier to get the company to pay for something that benefits your knowledge (as long as it can also benefit the company).
Even if the above is impossible, there are usually local meetups that you can attend evenings or weekends, especially around larger cities.
A conference or meetup has the benefit of putting you in contact and proximity with like-minded people, who are just as excited about learning something new. And you will pick up new things, I guarantee it. The best conferences (such as Laracon) will give you fond memories for years to come, and will make you feel part of something great.
Get your co-workers excited about the things you like/learn
Have you tried some of the above? Good! Now talk to your co-workers about them and get them excited too. Become a tech evangelist, if you will. I never tire of talking about my favorite technology. Share the knowledge you've gained and share the love. It is almost guaranteed that some of it will stick.
The best feeling is when your enthusiasm becomes contagious and a coworker adopts a technology they were ignorant or ambivalent about. Spoiler: it happened to me multiple times and I will make it happen again going forward.
Be the change
To get a rusty old piece of machinery running can be hard until you apply a little oil in the right places. You can be the oil in the cogs.
Observe the world around you
Take a look at others whom you perceive to be successful. How did they get there? You'll probably view these people as being extremely smart, which I'm sure they are. Here's the thing: there's always someone smarter, and that hasn't stopped them from getting where they are now. There's no reason why you can't follow a similar path.
Find another job
If you've been at the same company for a long time, your interviewing skills might be rusty, even assuming technical skills are good. Let's face it, most developer interviews are designed to test how good you are at interviewing, not at the actual job you'll be doing.
Once you start interviewing, don't get discouraged by rejections. Keep at it, refine the process, rinse and repeat. That impostor syndrome might even hit hard but you got this. More importantly, if you are already employed, there's nothing to lose, so try to approach it with that in mind.
My one other bit of advice is to aim for a position or company that you genuinely feel will put you in a happier place and help advance your career. So don't just move for the sake of moving, rather make a conscious effort to end up in a better place - one that will improve upon your present condition.
How to make the best of a "bad" job
What is defined by "bad job" is pretty subjective and for you to determine. There are, however, a few ways in which your bad job can help overcome your condition.
The proverbial "kick in the ass". This could be your best motivation for seeking change.
Use it as leverage when job-hunting. Being employed will make you a more viable candidate than someone who isn't. Equally important, you don't have to accept a lesser offer, unless you really really (and I mean really) want to work for company X. (Ask yourself though, if company X is lowballing you, should you accept that offer?)
Stability. It sounds counter-intuitive, but sometimes a boring job or a stagnant career could mean long-term job security. Some people value this above all else. A stable (but boring) job with sensible hours and a decent salary can allow you to pursue other interests or hobbies outside of work. It's for you to decide if this is a worthy tradeoff.
But I don't want to (think about) code outside work
That's perfectly fine. No one should require that from you. Do it only if you enjoy it.
The reality, though, is that we live in a future where there's a tremendous amount of knowledge expected from developers, especially those who consider themselves "full stack". If your day job doesn't provide opportunities for growth, or if you're stuck on a 10-year old stack, you'll realize your skills are outdated as soon as you start looking for a new job.
If you want to have a better shot at another job, and a shot at a better job, chances are you'll have to do a lot of studying outside work hours. At least until you secure that new position. Playing catch-up, though, can be frustrating and a lot harder than short study sessions over time.
But I don't have time to study/learn/code outside work
Individual situations will vary but based on my personal experience and numerous conversations with various developers, it's usually not a matter of "not having time" but rather of "it's not high on my list of priorities".
Once you start framing activities in terms of priorities, you might discover that you can actually make time for this new thing if you switch priorities around, or eliminate the ones that don't bring value.
This requires a little bit of self reflection and awareness, but it makes sense to prioritize your most important goals. Maybe you can watch less TV or play fewer games. Maybe you can go out less often with your friends or spend less time on social media. It all depends how much you value one priority over another.
I can't find the motivation
I would argue that motivation is not as important as discipline and consistency. There doesn't always have to exist a motivator; in fact often there isn't. If you're reading this, chances are you are going through some of these struggles or have in the past. In this case, the motivation can be one of: I want to improve my career; I want to be better at my job; I want to find another job; I want to feel more confident in my abilities.
Discipline, however, laughs in the face of motivation. If you tell yourself that regardless how you feel, you're gonna pick up that computer and spend 30m/1h learning something new every night, you're already ahead of most people. Then follow that up with consistency: do it regularly, even if you only have 10m to spare.
I do that sometimes before leaving for work in the morning, while sipping my coffee. If I have an idea I'm itching to try, I'll bang out a quick 10-20m coding session. By doing this, I'm usually left with a lingering sense of satisfaction for the rest of the day, because even if I'm dead tired in the evening, I know that I accomplished something that day (well, outside work, of course).
I don't know where to start
So you've decided you want to learn new things but have no idea where to begin? A good place would be a technology that you admire, aspire to learn, or would like to use at your next job. It's as simple as that. You won't even have to spend a penny because the internet holds countless free learning resources for anything you can imagine.
I lack imagination and can't come up with ideas for a side project
Phooey! There are ideas all around you.
- Find a problem you run into on a daily basis and automate it. Scratch your own itch, as they say.
- Pick your favorite hobby or interest, then build an app around it.
- Interview people around you and ask what problems they have in their daily lives that can be solved by software.
- Copy an existing idea that appeals to you - no one will care as long as you don't copy it 1:1 and then try to sell it.
- If all else fails, build a banal to-do app. There are plenty of those around that have made a very successful business out of it.
What started out as a few bullet points floating around in my head ended up a lot longer than I anticipated. If you've made it this far, I am humbled and grateful, and I thank you for that.
After many years working in the software industry, I realized I had accumulated all these bits and pieces of acquired "wisdom", based on my own failings and redemptions. I experienced some of these pains and applied a lot of these techniques successfully. I've never felt stronger and more confident than I am today, at the peak of my career. And you know what? This journey has just begun.
I started by making small, incremental changes. I didn't have a Twitter account a few months ago. This blog didn't exist a little over a year ago. A couple years before that, I had built only one side project until that point. Before that, I had timidly begun to immerse in dev culture. Even farther back, I made the decision to rectify the slump I was in, through a career shift.
Few meaningful things happen overnight, so I'm going to leave you with an old cliché that says "the best time to make a change was X years ago; the second best time is now".
I hope you found this helpful.Career