10 Steps to Become a Senior Software Engineer – by Alexander Tamoykin, CTO of ThinkAlike

10 Steps to Become a Senior Software Engineer 

What?
Software engineers go through several stages in their careers. They start out in a Junior role, then move to Mid-Level, then become senior. This blog post has 10 steps that can help you become a Senior Software Engineer.

Why bother?

  • Get paid more! Your salary grows as you level up
  • Advance in your career. Senior Software Engineers are progressing into leadership roles including Architect, Team Lead and CTO roles.
  • Take on bigger challenges. As you grow, make a bigger impact

How?
Software engineering is hard. The industry is always changing and you need to keep up with it. Need to put constant effort and time into it. There is always more to learn than can possibly be absorbed at any given time. Many engineers finishing a several month boot camp don’t realize how much more they need to learn on top of that. No worries, there is a clear path to becoming a senior software engineer in almost any area of software development.

Step 0: choose your path and stick to it!

Do one thing and do it well Doug McIlroy : Unix Philosophy

I can’t emphasize this enough! It’s really important to choose a specialty and a technical stack that you’ll be working with. Sticking to it and not becoming distracted is what will make you a specialist.

It’s an important choice to make. Here is how to do it:

  • Choose your specialty. It’s what you want to do. For example: Web development or Mobile development or DevOps, etc..
  • Choose a technical stack within your specialty. For example: if you focus on web development, you’ll need to choose between Ruby on Rails, Python and Django, JavaScript and MEAN, etc. If you decide on mobile, you’ll need to choose between iOS or Android, etc.
  • Stick to it and master it.

I’m not saying you shouldn’t become familiar with anything else outside of your primary specialty. A well rounded T-Shaped Software Engineer is well-versed in other aspects of programming too. Although he/she knows their primary specialty extremely well.
Now that you’ve decided on your specialty, there are many things to learn. Take your time. It will take several years to read through the many books and practice necessary skills. Get through this challenge one skill at a time.

I’ll be using the following technical stacks going forward: Ruby on Rails for web development, and iOS for mobile development, only because I have prior experience working with these languages and can speak to it personally. At the end of the day, it becomes a matter of taste. If you decide on another stack, you’ll need to find different books.

Step 1: Lay the Foundation
Read The Pragmatic Programmer. It’s a good starting point on the path to software mastery. This book summarizes best practices at a high level. It’s language / technology agnostic, and doesn’t matter which tech stack you decide on, the main principles remain the same.

Step 2: Master your Programming Language
You’ll be using many languages day to day depending on the technology stack of your choice, although majority of the code will be written in one language. For example: a Ruby on Rails developer uses Ruby primarily, and an AngularJS developer utilizes JavaScript most of the time. Identifying the language of choice and mastering it is crucial for your career. Learn it, Master it! You’ll be using this language every day.

Choose your language and read an advanced book:

Step 3: Learn your Framework
Choose one, learn it:

Step 4: Become a master of a text editor / IDE
Again. Choose one, master it and stick to it. If you decide on VIM, stay with VIM and become a master of it.

Step 5: Use Version Control System like a pro
I recommend using Git. Here is the resource that I like: Pro git - free online ebook with a complete breakdown on every aspect of git

Step 6: Commit to doing Test Driven Development
Choose a book specific to your tech stack, learn it. Get into a habit of doing it every day. Quality code comes with writing tests.

Step 7: Refactor as a Habit
The codebase grows in complexity as more functionality is added. In order to keep the codebase manageable, you will need to re-factor. If re-factoring is not being done as you go along, you’ll soon come to a sad place where even a small change is hard.  Bugs are inevitable and nobody wants to deal with your messy codebase.  Try to make your life easier, don’t delay your re-factor. Get into a habit of refactoring. Here’s a book suggestion on how to go about it: Refactoring: Improving the Design of Existing Code by Martin Fowler

Step 8: Learn Software Architecture
Depending on the stack you’ve chosen, find a good book on architecture. My recommendation is: Patterns of Enterprise Application Architecture, by Martin Fowler.

Step 9: Unleash the Power of the Command Line
The command line can feel very intimidating at first. Although, as soon as you learn how to use it, you’ll become a lot more efficient in performing basic tasks. That alone makes you a better developer since you’re able to achieve more in less time.  At this point, you can take it to the next level. Use shell to automate common tasks and build dotfiles. If you’re working on a Mac or any Linux distribution, learn shell. Here’s a good book suggestion on this topic: Conquering the Command Line, by Mark Bates.

Step 10: Code Code Code!
Every single day. Like in any sport, need to practice what you’ve learned in order for knowledge to stick.

Takeaway
Yes, becoming a Senior Software Engineer is hard. It takes a lot of time and commitment. Different people learn at different speeds, but on average, it takes about 10 years to become a solid senior developer. It’s a big investment in time for a big return.

In closing, Software Engineers have a bright future. They are in high demand on the job market, with salaries growing proportionate to experience. It’s a rapidly growing and relatively new field. Every day as a software engineer is a challenge: one of changing people’s lives for the better. Go ahead and take on this challenge of becoming a Senior Software Engineer, one skill at a time.

Alex can be reached at www.linkedin.com