You’ve just finished Coding Bootcamp and landed your first job, or you’re a self-taught freelancer who has completed a multitude of projects beginning a new role as an Engineer.
Maybe you recently graduated from college and started your first full-time job or you feel stuck in your current role and want to land that next promotion.
No matter where you are today, it’s time to start managing your career, not letting your career manage you! By being decisive and intentional, you can take the wheel as you begin driving your career towards your dream roles!
Sounds good? It is! Remember, it won’t be easy.
Software Engineer career paths have many twists and turns, but with an end destination and plan in mind, you move forward—like Luke Cage—never backward, always forward, always.
And in our case, always towards the end goal, the dream job and career you want!
It’s Time Take Responsibility!
Studies show that on average, we make approximately 35,000 decisions per day. Not all of them are life-changing - yet when you sit back and think about some of the big decisions you’ve made, you can quickly see how much they’ve influenced how you landed exactly where you are at this moment.
Taking on a new job in a new city leads to new friends and co-workers, a new way of life in a new culture, with higher rent.
Alternatively, you decide to live at home working somewhere close, retaining the familiarity while being able to travel more with your saved rent money.
You can see how decisions we’ve made in the past can influence our next opportunities. Whether you choose to move or stay at home, the key is making the choice that works for you and your goals.
Why is that key?
Because YOU are the CEO of YOUR life. The decisions you’ve made and the decisions you make determine where you are and where your future will go.
I believe accepting this fundamental principle changes how we view our life as you assume full responsibility to take control of it!
The Adventure of the Motivated Software Engineer’s Career Path
Now that we have the basic idea of taking responsibility established, I ask you to take a fictional adventure with me on managing my career as a newly minted Associate Software Engineer.
That adventure starts now.
The Question
There I was, sitting with other first day colleagues going through the on-boarding process for our new jobs! I had interviewed at a few different places and accepted my first role as an Associate Software Engineer right out of Bootcamp. Go me!
I was ecstatic about the role, the team, and the potential career opportunities in the tech world - but how on Earth do people get promoted in big corporations? There are guides in the company for that right? I certainly hope so. I have no idea how to go about getting a promotion - isn’t that what managers are for?
Twelve months later - I was sitting at my new desk reflecting on the last year.
Being one year in, meant that I was integrated into the team processes and had a decent grasp of how the application is set up. I could navigate the folder structures, and even handle tickets throughout our two-week sprints. My performance review, which was scheduled for earlier today, went well - although I had never written one before and didn’t really talk to my manager much about performance until the deadline approached. I didn’t admit or talked to her about it, but I was hoping to be promoted to mid-level engineer soon!
How does that work? Should I have asked her? Who knows? I couldn’t bring myself to ask during the meeting.
It was nerve-wracking and I had never done anything like that before. Instead, I accepted my new raise and an acceptable performance review - hoping that next year would bring me the promotion, two years should be enough time right? Then the question came to mind.
How do people manage to become promoted and reach the career they desire?
I realized I have no idea what the differences between mid-level and associate engineers are or how to get credit for improvements besides the performance review. Mid-level is great; but, my real desire is to become a Sr. Engineer! But again, the same questions!
The promotions would be very helpful financially and I want to continue growing in my career; I just don’t know where to even begin.
So just like every other person in this predicament would do…I looked to the web - it was time to consult Google. It was time to make this promotion happen!
The Research
Before embarking on how I could get promoted, it made sense to first discover the (un)common paths of a Software Engineer’s career.
According to The Simple Programmer, there are three high-level paths for engineers.
1. Career Engineers / Architects
Leveling up through the corporate ranks as a technologist, specialist or generalist, you continue growing your expertise and responsibilities through promotion cycles - something like the following:
- Junior/Associate Engineer
- Mid-level Engineer
- Sr Engineer
- Lead Developer / Team Architect
The key here is that you don’t manage people and stay on the technical side of projects. Additionally, each company has a different take on defining promotions and levels - meaning senior at one company could be level 3 at another. You can plateau far as seniority, but taking on new roles at the same level in different industries or restarting as a different type of Engineer keeps life interesting!
Here a few common types of developers:
- Desktop
- Web Frontend
- Web Backend
- Mobile (IOS / Android)
- Embedded system
- DevOps
- Gaming
- Test Engineering / QA
2. People Manager / Leadership
Taking the turn from contributing technically to projects, you can decide to begin managing the people instead. This leads down the path of becoming more engaged in project management with the hope of one day becoming a CTO.
The path looks like so:
- Dev Team Lead
- Engineering Manager
- Engineering Director
- VP of Engineering
- CTO
3. Entrepreneurs / Programmer
Lastly, some developers decide that they want to create their own products that make money, author books or training courses, or start their own business where they not only lead the products but are core contributors at the origins.
None of these are incorrect paths for any individual, instead, I learned that we should take the paths that we enjoy and can grow in!
The How - Planning for the Future
With learning the different types of potential careers available, I decided on the same goal - becoming a Sr. Software Engineer, with an added timeline - 10 years. Time to start creating a plan :)
Inverse Thinking
Since this whole career plan thing was new to me, I took a few minutes to find ways to properly create one. The best idea I found was using inversion (thinking backward) to find the steps required to accomplish your goals. This makes defining a plan much simpler because one must have an idea of where they want to go before deciding on how to get there!
My Inverse Thinking Notes:
What skills are required to become a Mid-Level or Sr Software Engineer?
Skills required for Sr. Software Engineers
- Leadership - Being able to mentor junior developers, collaborate and lead discussions/meetings to break large problems into solutions
- Programming language expertise in your choice of a popular (for web this would most likely be Javascript) language
- Be able to own large, complex app features on your own, meaning you can be trusted to collaborate, get questions answered, and continually make progress to implement the feature on time without micro-management
- Experience ranging from 5-10 years or more
- Strong knowledge in the Agile Development Process
- Write clean maintainable code without strong guidance
Skills required for Mid-Level Software Engineers
- Write clean and simple code as you become more experienced in your language of choice
- Debugging skills to find problem code quickly
- Learn best practices within your realm or framework and begin using them
- Experience working through features on your own with collaboration on design and architecture from Sr. Engineers
- Have basic level expertise in other domains outside of writing code, like performance or architecture
The above list is just an example, your list may look different :). The more detailed you go, the easier it is to self-evaluate and document progress.
Utilizing inverse thinking, I now have an idea for where to focus my skills required to get from where I am today to the position I want in the future. This led me to think though - do I currently have any of these? Which ones do I need to work on the most?
Self-Evaluation
I decided to self-evaluate!
Using a table with ratings from 1-10 to evaluate the skills required for my end goal of Sr Software Engineer. I broke down the skills to their lowest levels to better track my progress, like the example below for expertise in a few JavaScript and Soft Skill topics.
A Few Examples:
Evaluation of your skills by you and also by employers can be difficult. Unfortunately, there isn’t an exact scale to determine skill levels. If it helps, you can triangulate your evaluation by asking colleagues or mentors to fill the table out for you as well.
Defining a Long-Term Plan (ofc subject to change)
Oh, the evildoers master plan for world dominance, or your master plan to become the CEO of your life seems like a tough ask.
How can I know our future? What if plans change you say?
I won’t be able to execute 100% according to plan in most cases and plans do change. There’s nothing wrong with that, not even a little bit. Speed bumps that slow down plans or life events that put it on hold are normal. Once we are ready to get the show back on the road, the mantra remains “Never backward. Always forwards. Always.”
The incremental progress and decisions continually move us in the right direction, but the direction must be set!
So where do we begin? Well, I typically begin with a delicious cup of coffee, some classical music playing through my headphones, and time blocked to be productive.
1: Get Excited!
So, my friends, before beginning a master plan, whether it’s tea or coffee, whether it’s classical music or rock, you must be in an excited and encouraged state as you begin defining the future you so eagerly want to pursue.
I’m eager to get this plan out of my head and into action! I can almost smell the Sr Software Engineer role in my future :)
2: Create!
Loading up Excel or Trello Board, I tend to manage life as backlogs and sprints for things like this because timeboxing and alignment that makes sense for me. Instead of walking through this process in a step-by-step fashion - I’ll let your creative juices flow on how to best manage these tasks for yourself. The general idea is to take the weakest skills (from self-evaluation) that align with the next role and start working on them! We got this!
3: Review
Each week - I plan to update my self-evaluations based on the areas I worked on that week. If I studied JavaScript Arrays, I would update the score. Eventually, I will have the skills required for the Mid-Level Engineer, then Senior Engineer!
From my research, there was a second part of managing my career that I had to work through - obtaining the experiences and performance that warranted promotion.
Putting it all together - 4 Step Guide to Manage Your Career!
Below are the four steps that I believe will help me find ways to grow towards my next role!
The idea is to first know the expectations for the role I’m currently end and the role I want to grow into, then finding opportunities to establish that I’m working towards and eventually can handle the additional workload. By developing this record and showing progress towards achieving the responsibilities of that next role, eventually, I believe that the promotion can be asked for with documented proof I am ready!
Here are the steps in more detail.
1: Define the Expectations for Your Current Role
Sitting down to think through how I could get experiences to show my manager that I was ready to take on more responsibilities as a member of the team, it came to fruition that to take on more, I needed to know what responsibilities I currently have.
I know that above, my research gave me ideas on the different skills and responsibilities between varying levels of engineers, but each company has variances.
Comprehending this, I decided that I will talk with my manager to define what her expectations were for me as an Associate Engineer on the team. I made sure to document this in my OneNote career notebook because it is the baseline for where to focus my time.
2: Define the Expectations for Your Next Role
In addition to my responsibilities as an Associate Engineer - I recognized that it was vital for me to know the expectations for Mid-Level Engineer’s on the team as well because distinguishing between the two will help make decisions on ways to collect features and initiatives that help manifest my abilities to my manager.
I believe that the skills in my long-term plan will be very helpful as I gain expertise on the team since greater responsibilities require greater skills!
3: Exceed Current Role Expectations and Track/Document
Once I gain this new knowledge, my days will be managed accordingly.
I will volunteer for tough features, asking for guidance when needed from the senior members of the team. I’ll find ways to be involved in the company outside of just the team, such as talking at Meetups or finding initiatives I can demonstrate my leadership and passion to the organization. Lastly, I will find opportunities in the code base, such as developer experience opportunities to make our team faster, to make an impact for the team!
And through all of this hard work, I will make sure to continually track and document all of the efforts for two main reasons:
-
Performance Reviews - I will have a list of things completed in the year to write my review from
-
Responsibilities - I can demonstrate I’m ready to handle Mid-Level Engineer responsibilities
4: Updating Your Manager / Asking for Growth Opportunities
My manager will have a huge impact on my performance review and promotion. I set up a weekly one-on-one to help keep her informed of progress and ask for opportunities to grow. I want to show her that I’m looking to find ways to gain expertise in weak areas.
I believe that following these four steps throughout the year will make a huge difference in my performance review and display my new competencies for a potential promotion.
The Results
It’s been quite a year since embarking on the journey of managing my career, hoping to earn my promotion. I didn’t accomplish every single goal each week and sometimes stumbled through complex features and tasks. I regularly asked for feedback from my manager and peers to incorporate when stumbling, which really helped me accelerate improvements.
I finally found the courage to create a presentation at a MeetUp on GatsbyJS, and even started writing blogs as part of the web developer community.
My manager has been so helpful throughout the process and because of her, I have grown so much. I documented each and every large task and experience over the last 12 months, leading to a very detailed and impactful performance review. I was rated as “Outstanding!!”
Not only did my performance review go well, we talked about the responsibilities of the roles again. I pulled up my notes from the beginning of the year where we talked through them together, along with all of the experiences and tasks that lined up with the various responsibilities. It was quite easy to see that I had exceeded the expectations for Jr and was very close to meeting them for the mid-level role. Building up my strength through a few quick deep breaths, I decided to ask:
“Could we talk through where I could improve in the upcoming year to help meet all requirements for a promotion?”
She replied: “There isn’t much more that’s needed from you for that. I just have to finish up the paperwork for HR and your promotion will be on its way! Thank you for all of your amazing work this year and I’m very happy to have you on our team!”
I couldn’t hold my emotions in check - “THANK YOU! I am so grateful to be part of this awesome team!”
Concluding Thoughts:
Thank you for indulging in my adventurous story of navigating my career for the first time.
The story itself is fictional, but the concepts, ideas, and plans are not - I truly believe that if one takes the time to decide where they want their future to go, reflect and adapt as the life windows change our course, and live intentionally with our decisions, we will take the responsibility required to get the future we want!
You have been equipped and now you must act. Good luck - I believe in you!