A little over two years ago, I started on a journey to sort out what I wanted to do for the second half of my career. I’d been working as a developer since college, “made it” to a senior level, and enjoyed my work. But I felt like I’d hit a plateau, and I didn’t know what should come next, or even how to get there.
I tried to learn a bunch of new trends all at once — big data, AI, DevOps, you name it. I started a half dozen side projects that all got abandoned in different states of disrepair. I even considered moving into (gasp) product management. It all left me with an even greater lack of direction.
Tony Robbins likes to say that if we aren’t growing then we’re dying, and that was the case for me. I now realize that it wasn’t a job title that I was looking for, but instead a sense of fulfillment that could only come from opportunities to learn and grow as a software developer.
What follows are the actions that I’ve taken to become a better software developer every single day. These strategies have resulted in more success in my career, personal well-being, and outlook on life. I hope it can help others do the same.
Choose A Specialty
The field of software development has become incredibly broad over the past decade. It’s quite literally impossible to keep up with it all. Focusing on a single topic allows you to go deep, learning the nooks and crannies that most don’t know exist. A specialty can be very precise, like asynchronous patterns in C#, or it can be broader, like serverless applications in .NET.
Specialization makes you stand out from the crowd:
- People come to recognize you as a go-to person for that field.
- To use an analogy, you become a big fish in a small pond, rather than a small fish in a big pond.
- It shows your ability to focus and learn something inside out, a rare skill in today’s distracted world.
The foremost expert on specialization in software development is John Sonmez, author of The Complete Software Developer’s Career Guide. John’s advice has in large part brought me to where I am today. I can’t recommend his book and courses enough.
Learn More Soft Skills
This may sound like the opposite advice from above, but it isn’t. Being the most knowledgeable person on a technical subject is pointless if you can’t get that knowledge across. Understanding subjects like writing, public speaking, sales, psychology, leadership, persuasion and self-education go a long way to making you a more balanced person, let alone software developer.
How exactly will those skills come in handy? Here’s a few situations that we run into commonly as software developers:
- We’ve all been on job interviews. They’re nothing more than a sales pitch that involves persuading the other party to hire you.
- Stressful situations make everyone react differently than they normally would. Psychology give you cues as to why people act as they do, and how you can help them (and yourself) get through it.
- There are many kinds of leaders in software development teams. Whether it be through writing clean code, taking ownership of a product, putting in extra work, or encouraging others, knowing how to inspire your colleagues is a valuable skill.
Being able to pick up a new skill quickly puts you ahead of every one else, and is one of the most underrated soft skills out there. There are tons of resources on the topic of learning, but my favorite is the strategy that Tim Ferris lays out in The 4-Hour Chef. It’s a behemoth of a book, but the first section explains in detail how he gets most of his results with the least amount of input.
Get Involved
One of the most effective ways to grow within your career is to get involved within the development community. There’s something for all personality types, from the low barrier to entry of a blog, to the showmanship involved in giving a conference talk.
The best starting point for almost everyone is a blog. There are great reasons to maintain a blog, even in 2018, when it can seem a bit old school:
- Your writing and reasoning skills get better with every single blog post.
- It forces you to gain a deeper understanding of the topic you’re writing about so that you can explain things in a way that others will comprehend.
- It’s a great marketing tool to showcase what you know.
I was skeptical of the blog approach when I first started. Today, I can’t imagine a world where I’m *not* writing a blog post every other week.
Another low-key way to get involved with the dev community is to work on an open-source project that excites you. There are thousands of projects in all sorts of domains that are looking for a helping hand. Having your name associated with an open-source project goes a long way to solidifying your credibility.
There’s also a whole slew of options for the more outgoing types:
- Starting a podcast is a great way to improve your conversational skills.
- Giving a talk at a local user group lets you practice your presentation skills and network with developers with similar interests in your area.
- Presenting at a conference is the ultimate way to spread a message and captivate an audience.
The takeaway here is that there’s so many different ways to give back to the development community.
Build A Routine
At this point, you’re likely thinking to yourself that these ideas are great, but that you don’t have time for any of it. The truth is that regardless of your situation, it’s a simple matter of planning, discipline and priorities.
Coming up with a realistic schedule helps to keep you coming back for more. I suggest starting with a one-hour block per week to dedicate to the project of your choice. Force yourself to do it, even when you don’t feel like it, and before you know it, you’ll be coming back for more.
Here are a few ways to clear up some time in your schedule if you think you’re too busy:
- Stop watching one television show. That’s 45 minutes a week right there, more if you’re binge-watching a show on Netflix.
- Batch busy work into once or twice monthly affairs. Pay your bills, handle paperwork, and respond to non-important correspondence during those time slots.
- Refrain from going on social media. It’s one of the biggest time drains there is today.
- Get a cleaning service to help with any house work. The same applies for outdoor house maintenance that can be outsourced to a gardening service.
The time that you’re working on your project needs to be as uninterrupted as possible. Turn off all distractions, like mobile phones, Facebook, and Netflix. It’ll all be there waiting for you once you’re done. Put on some background music that won’t distract you, like Music To Code By, put your head down, and focus on what you’re trying to accomplish.
There’s always a way to find time to do something that’s important to you. Like all things, it comes down to your priorities.
Looking Back
I’ve done things over the last two years that I thought I would never do. I started a blog. I coached other developers in my areas of expertise. I learned about subjects that never held my interest previously. I even presented at a conference with a colleague of mine last June. But yet, it’s all those little chances to try things that have given me the sense of fulfillment that I enjoy today.