A Complete Guide to Goal Setting for Software Engineers
Many of us have tried setting goals in the past. Perhaps it was a required exercise for school or work, or we wanted to see if it could help us accomplish something. Results were mixed, and we often left goals unfinished.
But if you feel like you’ve been working hard but not getting anywhere in your career or engineering journey, it may be time to try again.
Goals can work for you.
And they can help you focus on the activities and systems that will help you progress. But you have to exert effort not just to attain the goal but to develop the goal and system that will get you there.
In this post, we’ll look at setting goals for software engineers. But first, before setting a single goal, we need to figure out what we want to attain.
What Do You Want?
Goals vary based on your interests and desires around your capabilities and career growth. They could involve technical skills, leadership skills, communication skills, or others.
Additionally, goals help you stretch and grow as a software engineer. Even if leadership isn’t the path you want to take, goals can help. They can improve your system design or technical leadership skills.
But most importantly, goals are personal. And you’ll need to spend some time thinking about what you want to accomplish.
Instead of the goals that you should have, consider goals you genuinely want to achieve.
Make Meaningful Goals for Software Engineers
When thinking about your goals, you must be truthful with yourself. What do you want to do? And what do you think you should do? Or that others expect you to do?
Goals you don’t want to achieve will result in frustration, annoyance, and eventually failure. These objectives will feel like a chore and keep you from what you really want.
Instead of the goals that you should have, consider goals you genuinely want to achieve. Goals that inspire or excite you.
Progress toward inspiring accomplishments will feel easier and build further momentum. And you’ll be excited to move forward and track your progress.
So pick goals that are meaningful to you and your journey as a software engineer.
Ensure Goals Are Attainable
Goals should be attainable and within your control.
For example, you may have a goal about landing your dream job at a specific software company. This may or may not be attainable. You can’t control the company’s hiring plans, their budget, market downturns, or anything else that could affect your employment there.
So instead of a goal to land that job, you should focus on improving your skills. Then use those skills to demonstrate value or to pass the interview process. Additionally, you can network with people within the company who might refer you.
Focus goals on your own personal performance. It may not get you exactly what you want, but it will help you grow into the person you want to be. It’s about improving yourself to ensure that you’re ready for whatever opportunity comes your way.
Consider Sacrifices
A critical step in setting goals is to think about what you’re willing to give up for them. If your goal is to become an engineering manager, are you willing to give up writing code daily? And are you willing to spend your personal development time at a leadership workshop instead of a hackathon?
Or, if you want to develop your front-end skills, you may have to let go of your pride in the mastery of the back end. You’ll have to sacrifice time spent coding where you’re comfortable in exchange for coding where you’re uncomfortable.
You can’t do everything and be everyone all at once. So think about what you’re willing to sacrifice for your goal—and what you’re not willing to sacrifice.
Prioritize Your Goals
Ideally, you’ll only have three to four overarching goals for the year. These goals may comprise many small actions or steps, but having more than four goals often dilutes the progress to all of your goals.
Additionally, it’s a good idea to prioritize your objectives. For example, if you have a goal that improves the quality of your software development skills or automated tests, that may be more important than a goal to help your company hire new people.
Priorities help when you have to choose between objectives. If it’s crunch time before a launch, you may need to pause a goal or two to progress on more important things.
Be Ready to Pivot
Not every goal you set will be right for you. You will also need to know when to give up on a goal.
Despite pursuing an objective for weeks, months, or even years, you can always change your mind and say no. Perhaps you spent months preparing for a new role at work only to find that there were some sacrifices you weren’t willing to make. That’s OK. You learned, you grew, and now it’s time to pitch that goal into the waste bin and start over.
Make Sustainable Progress
It’s possible to have an unsustainable goal. For example, say you wanted to go to the gym four times a week to improve your fitness. But you were overzealous, so you went overboard and injured your arm through overuse. That’s a painful lesson to learn. Or perhaps you wanted to make a tight deadline at work. You made it happen, but you burnt out or lost out on critical family time.
When considering your goals and the systems that help you make progress toward them, ensure that they’re sustainable. They shouldn’t take all your focus and effort for months on end. Find ways to balance your desire to improve with rest and other responsibilities.
For example, perhaps your goal involves mastering test-driven development (TDD). Your system could include doing a short weekly TDD kata or learning and applying the use of mocks and spies in different ways each week. Make it work for your schedule.
And look for opportunities to move toward objectives in unexpected places. For example, if you’re heading to a conference, a glance at your goals might remind you that you’re developing your ability to pitch yourself and your ideas. Perhaps you can utilize the conference as a practice ground to hone some skills.
Improve Over Time
Before we move to some frameworks you can look into for managing your goals, let’s discuss reflecting on and refining our goals.
Specifically, make time to reflect on your goals. Whether it’s a quick weekly review or a once-a-year assessment, look at what you’ve achieved and what you can improve in the future. Consider which goals no longer matter or which priorities should change.
And whether you succeed at your goal, make good progress toward it, or completely fall flat, you can learn something.
Consider what you learned about yourself, the objective, or the process that you can use in the future.
Goal Frameworks for Software Engineers
Let’s briefly look at a few goal-setting frameworks. We won’t go into detail, as you can explore these options independently.
SMART Goals
SMART goals have been the gold standard for many, though don’t always work well for everyone. The acronym SMART stands for:
- Specific: Clear, unambiguous, and well-defined.
- Measurable: Easy to track and measure your progress.
- Achievable: Feasible and attainable.
- Relevant: Appropriate for you, your career, or your priorities.
- Time-bound: Specific to a preset timeline, including a start and end date.
PACT Goals
A little less known, the PACT technique focuses more on the system for your goal instead of the specific measurable outcome encouraged by SMART. PACT also builds habits, encouraging you to track your progress of small daily or weekly steps toward your goal.
- Purposeful: Meaningful to you or your purpose in life.
- Actionable: Based on outputs and actions that you can control.
- Continuous: Repeatable and does not require an end date.
- Trackable: Indicates whether you actioned your goal or not.
Whether it’s a quick weekly review or a once-a-year assessment, look at what you’ve achieved and what you can improve in the future.
CLEAR Goals
For our third framework, let’s consider CLEAR. This is great for team-based goals to ensure everyone is moving in the right direction.
- Collaborative: Allows for theteam to work together toward a goal.
- Limited: Limited in terms of duration or difficulty.
- Emotional: Similar to purposeful, in that everyone should feel something toward the goal.
- Appreciable: Can be broken down to smaller goals or milestones that appreciate toward the larger goal.
- Refinable: Things change, and this allows revision.
Pick a System
Whether it’s SMART, PACT, CLEAR, or something else, pick a framework you’ll follow and that helps you grow.
Next Steps in Creating Goals for Software Engineers
When creating your goals, review the points above and decide what matters to you. Then, set up systems or simple tracking to help you keep your eye on the goal.
And finally, make your goals visible to both yourself and your leadership. Sharing your aspirations and progress will result in opportunities and meaningful conversation. And for bonus points, if you’re in a collaborative and supportive environment, consider sharing your goals with your peers as well. That will allow your peers to give you better feedback and support along the way, and you can help them in turn.
This post was written by Sylvia Fronczak. Sylvia is a software developer that has worked in various industries with various software methodologies. She’s currently focused on design practices that the whole team can own, understand, and evolve over time.