“silhouette of person on rock” by Grant Ritchie on Unsplash

How to Write Software Engineering Goals

Adam Talcott
4 min readAug 31, 2018

It’s important that we, as software engineers, have goals for each year to help with our professional development. Doing so will help to make sure we are keeping up with ever-changing technologies and taking opportunities for professional development and career growth.

Goals created for a member of a software engineering team should be focused on helping the engineer advance their career and improve either their technical (i.e., software engineering, technologies, etc.) or soft skills (i.e., communication, collaboration, etc.). Such improvement will help to enhance the engineer’s ability to perform their engineering duties and advance in their career.

Goals should be visible to both you and your leadership, and should include key results so progress can be tracked. Each engineer should create a few goals per year (two to three) and work with their leadership to track their progress towards completing these goals. It also helps to ensure that your leadership supports your ongoing career growth and development.

Unfortunately, it can sometimes be difficult for software engineers to craft appropriate goals. Here are an established set of criteria which engineers can use to write goals, as well as examples of poorly written and well-written goals to make application of the criteria more clear.

SMART Goals

What makes a good goal? The SMART criteria are often used to help write good goals. These criteria direct that well-written goals should have each of the following characteristics:

  • Specific: Goals should target a specific area of technology or a specific soft skill.
  • Measurable: It should be possible to measure your progress towards completing each goal so you can readily determine how much progress you have made.
  • Achievable: The goal should be something which you can actually do and complete. For the goals we discuss here, they will all be achievable, but for complex goals, it may be best to break them down into smaller goals which will help you achieve your larger and more complex goal. We will leave the “achievable” criterion out of the discussions of example goals, below, as we assume we are only dealing with goals one can reasonably achieve.
  • Realistic: The goal should be something you can realistically achieve given the availability of time and resources.
  • Time Bound: Goals should specify the date by which the goal will be completed.

Examples of Poorly Written Goals

Get better at deep learning

  • Specific 🚫: The goal is not specific enough, as deep learning is quite a broad topic and it’s not clear what it means to “get better” at deep learning or anything else.
  • Measurable 🚫: How can one determine that one is now “better at deep learning”? There’s no way to quantify progress towards completing this goal, which makes it hard to track whether or not the goal is complete.
  • Realistic 🚫: Given how vague the goal is, it’s hard to know if it’s realistic.
  • Time Bound 🚫: Should this goal be completed by the end of the year? The end of the week? There’s no period of time associated with this goal.

Become a blockchain expert by December 2018

  • Specific 🚫: Again, it’s unclear what it means to be a “blockchain expert”, so this goal is lacking specificity.
  • Measurable 🚫: There’s no way to measure progress towards this goal.
  • Realistic 🚫: Once more, it’s hard to know how realistic this goal actually is.
  • Time Bound ✓

Improve code coverage to 95% on Project “X” by December 2018

  • Specific ✓
  • Measurable ✓
  • Realistic ✓
  • Time Bound ✓

This goal satisfies the SMART criteria, so what’s wrong with it? This goal is project specific, and it does not directly improve the assignee’s technical or soft skills. As such, it’s not a good candidate for developmentally oriented goals.

Become a better communicator

  • Specific 🚫: It’s unclear what it means to be a better communicator.
  • Measurable 🚫: There’s no way to determine when the goal has been completed.
  • Realistic 🚫: Again, this goal is too vague so it’s hard to know if it’s realistic or unrealistic.
  • Time Bound 🚫: The time to complete this goal is unspecified.

Examples of Well-Written Goals

By August 2018, write an article walking through an example of using Create ML with Xcode 10 to classify images of vehicles

  • Specific ✓
  • Measurable ✓
  • Realistic ✓
  • Time Bound ✓

This goal hits all of the SMART criteria and is developmentally appropriate for improving technical skills related to deep learning.

Successfully complete 50% of the code challenges in the Algorithms practice section on HackerRank by April 2019

  • Specific ✓
  • Measurable ✓
  • Realistic ✓
  • Time Bound ✓

This goal also satisfies all of the SMART criteria and is developmentally appropriate for improving technical skills related to algorithms.

Learn enough continuous integration to successfully deploy such a solution in support of a client project by December 2018

  • Specific ✓
  • Measurable ✓
  • Realistic ✓
  • Time Bound ✓

While this goal benefits a specific project, it would also be developmentally appropriate for an engineer who wants to learn more about continuous integration. It focuses not just on learning the new skill but on demonstrating understanding of that technology by actually deploying a solution.

By April 2019, complete the “Improving Communication Skills” course in Coursera in order to gain insights into how to improve written communication

  • Specific ✓
  • Measurable ✓
  • Realistic ✓
  • Time Bound ✓

This goal addresses an issue around written communication and provides a specific way to improve those skills which satisfies all of the SMART criteria.

Conclusion

Software engineering is constantly changing and evolving. As such, software engineers are in a position where they are in constant need to learn new technologies and skills. Writing clear, high-quality goals using the SMART criteria can help software engineers to be continuously learning and thereby keep their skills current and relevant.

--

--

Adam Talcott

Husband, dad of two, computer engineer, product builder and engineering leader.