How to Set Objectives as a Software Engineer

linhothy
Bits and Pieces
Published in
5 min readMar 26, 2019

--

The importance of setting objectives

Over the past year, objectives have become more and more important in my life as an engineer as I have been realising how helpful it is to track my growth progress.

I believe every Software Engineer should set their objectives on at least a yearly basis. This is to keep developing and learning new skills and therefore to help you grow and level up as an individual. The timeframe set out in these objectives helps to keep you accountable and make it meaningful.

Throughout 2018, I have been going through many revisions of how I set up my objectives and what to do in order to succeed. It became apparent to me that there weren’t a lot of online guides on how to do this. I thought I would share how I currently set this up and if it may be of help to some people who may also be struggling with this.

The 3 objective categories

I set myself a minimum of 3 objectives, one of each of the following categories:

1. Technical

As Software Engineers we always want to improve our technical skills so this is a no brainer.

2. Soft skills

When I first started out as a junior engineer, I wasn’t paying much attention to the behavioural aspect as I thought it was easy to achieve. How wrong was I, as I later realised how important it is. An engineer cannot just code (although this is the major part of their job) but they also need to be able to argue their case, communicate with stakeholder and their team, share learning achievements etc. Ultimately this will determine you levelling up. I feel that with technical skills, they can always be learnt however with behaviour it takes a different type of skillset where the individual needs to practice it well mainly around their team and stakeholders to mould their techniques and tactics.

3. Business-related

This is another important point which I also never thought of when I first started my career. I was so drawn to just focusing on my technical skills. It is important to realize how you are adding value to the company you are employed at. Yes, you code, you develop software which is what the company may be selling to its clients but you got to remember the bigger picture: the stakeholder or business itself is not that much interested in how you are developing this product but more about whether you will deliver this or not.

It’s also helpful to have that vision of the impact that you’re making and the value you’re bringing to the company.

The business may have its own objectives set out to be achieved in X amount of time. These could be in the form of Objectives and Key Results (OKRs), Specific Measurable Achievable Realistic Time-bound (SMART), Goal Pyramid etc. I would pick one where I believe myself to add value to and put that down as my objective. Not only does this remind you of how you are an indispensable part of the business but it shows the business that you’re an important player in the team that contributed to achieving the business goal.

You can do more than 1 for each category, however I like to keep it at 1 if I can so that I am not too stressed out with chasing to achieve all of my objectives by set deadlines!

How to write the objectives

I am currently using the SMART method to write down my objectives. At the beginning, I was not a fan of this because I found it extremely difficult to write down measurable goals. As an engineer there may not be a lot of numerical key results which can help you to keep focus on its achievement compared to someone who may be a sales person. It requires more thought to think about these objectives.

SMART objectives have to answer the following:

  • Specific —What exactly is it that you want to achieve?
  • Measurable — What will you have to do in order to accomplish the objective?
  • Agreed-upon (achievable, or assignable) — Do you have the skills required to achieve this goal?
  • Realistic /relevant- Given the available resources, what results can realistically be achieved?
  • Time-bound — Has to be achieved in a reasonable amount of time. Not too long that it isn’t going to motivate you but not too short either where it becomes unrealistic and you can’t actually achieve it.

With these questions in mind, here are examples of each objectives under the 3 categories:

1. Technical

Objective: By May 2019, I will complete the Advanced Node.js course on Pluralsight, to improve my Node.js skills which will be required in the upcoming projects.

2. Soft skills

Objective: By May 2019, I want to have mentored at least one junior developer and pair program with them regularly until they can pick up a ticket by themselves.

3. Business-related

OKR: Increase the conversion rate from free to paid customers to 5%

Objective: By April 2019, I will contribute (in terms of code) to the development of a business marketing plan which will test the conversation rate.

Conclusion

By setting objectives, you’ll be able to stay focus on what you want to achieve in order to level up whilst also being able to track your progress.

I wrote this with having the difficult experience of setting my own objectives so I hope you will find this useful!

This is something I am always iterating through so if I change this in the future, I will make sure to update!

In conjunction with this, I also do something called a coding diary. But that’s a topic for another blog post.

Let me know some of your objectives you came up with in the comments below :)

If you have found this helpful please hit that 👏 button and share it on social media :) Feel free to comment and ask me anything!

www.pinglinh.com

Twitter | GitHub

Bit: Share components to build faster as a team

Try Bit (open source) to easily share and manage reusable components to build multiple applications and projects faster. It’s free, give it a try.

--

--