There are thousands of articles, books, and videos on how to set career goals. However, there is little information available for developers and software engineers on how to set these effectively.
How do I know for sure? Well, I was a developer for more than a decade, and actually, I am still a developer at heart — I just don’t code every single day like I used to. Throughout my career as a developer, I noticed there was a lack of resources on career planning targeted especially for developers.
These days, I help developers and software engineers set and smash career goals that are specific, measurable, achievable, timely, and — most importantly — that align with their values and desires in life.
I will be going through five essential strategies to effectively set and smash career goals for a developer, using relatable examples and best practices.
So, let’s get started.
1. Look at what is out there
The technology landscape is ever-changing and always advancing. If you were working hard at shipping a product for the past few months and forgot to look outside, you probably missed a few things.
I know this because when I came back from maternity leave, I was so surprised at all the new technologies and changes that happened while I was away. For example, every developer I knew was using Subversion before I stepped out of the loop. When I came back, Git had completely taken over.
So, look at what’s out there. Maybe there is a technology, framework, or tool that catches your interest. Maybe there is a role that you didn’t know existed before. Look at job descriptions for roles outside of developing that you’re already familiar with. Examples here are technical lead, scrum master, technical product manager, architect, DevOps engineer, and data programmer.
There is a saying that if you fail to plan, you plan to fail. This applies to setting your career goals too. If you don’t do enough research, you won’t know what is out there. You won’t be able to set career goals that will help you to stay relevant in today’s technology landscape.
2. Understand what you want
After you have done a bit of market research and seen what is out there, you need to look within and understand yourself and your desires.
What would you like to be doing in your ideal role? What excites you and motivates you every day? Is it learning new skills, be it a programming language, a framework, or a pattern? Is it building products and seeing them used by customers? Is it working with people and collaborating? Is it designing a solution for a complex technical challenge end-to-end?
It took me a while, but I finally figured it out. I love technology and I am excited by what it can do. But making an impact is what really motivates me, such as building something amazing that gets used by millions of users, or helping others achieve goals. And that is why I am doing what I do today.
You want to set career goals that you will feel excited about achieving. You want to be motivated to go an extra mile that is required to accomplish your goals. And all this has to come from within yourself, internally, rather than from anyone or anything externally. After all, they are your career goals — not anyone else’s.
3. Set achievable goals
Once you understand what is available and what you want for the next step in your career, you are ready to make it happen. And the first step to making it happen is goal-setting. There are two things I’d like to introduce to you at this stage. Setting goals is not hard, but setting goals that you will be motivated to achieve is hard.
I’d like to introduce you to a learning framework called the 70:20:10 Model for Learning and Development. As a developer, you learn a lot by actually doing the work, so this is appropriate. With the 70:20:10 framework, 70% of your learning will be hands-on and on-the-job. Twenty percent will be social learning through others who have already done it, via coaching or collaborative activities like peer programming. Only 10% will be through classroom, book, video, or any other traditional way of learning. Each has its own merit though. So, when you are writing down activities for your goals, be sure to include all of them in 70:20:10 format.
For example, if you would like to become a front-end developer, you don’t need to read all the books on the market about CSS. You don’t need to watch all the JavaScript video tutorials. And you don’t need to subscribe to every web developer’s website. If you do that, you will end up with an information overload.
Instead, come up with a small project idea, do it, and read and learn only what is necessary to complete that project. Starting it can be as simple as creating a static page with links to your favorite websites. And once you achieve that, you can tackle the next task in your goal. This could be to talk to a third-party application programming interface (API) and display the five most recent articles.
Another practice I’d like to talk about when setting goals is ensuring each goal is S.M.A.R.T. — specific, measurable, attainable, relevant, and timely.
S.M.A.R.T. goals are great because:
S — Specific. This ensures your goals are well thought out, and not vague or general. So, instead of having a generic goal like “Be a better programmer,” a specific goal will say, “Learn the basic concepts of data structures and algorithms,” which will lead to you becoming a better programmer.
M — Measurable. This quantifies your goals so you know exactly where you are with your goals and if you have reached them. For example, instead of saying “Learn React JavaScript framework,” a measurable goal will say, “Create an interface in React that reads JSON response from a third-party API, and displays results and refreshes the results every 30 seconds.”
A — Attainable. Having ambitious goals are good, but if they are not realistic, then there is no point in having such goals. For example, if you have never had an experience with machine learning algorithms, you can’t expect yourself to write a system that offers a personalized news feed, based on a user’s search history, in a few days.
R — Relevant. This ensures your goals are relevant to your overall purpose or objective. Just like the saying, “Never lose sight of your purpose,” a goal that is not aligned with the purpose is just an activity.
T — Timely. This one is pretty straightforward. In Agile software development, we have a concept called “timeboxing,” which is allocating a maximum unit of time for an activity. Similarly, having a timely goal means you have a deadline for when you should complete the goal.
Without S.M.A.R.T. goals, you won’t be able to track or measure how you are doing. I have put together the following template to help you with setting S.M.A.R.T. goals.
Don’t set goals for more than 18 months in advance, because chances are things will change and you will change. Instead, review your goals periodically. Your ambition can be for the long-term, but your goals need to be specific and short-term.
4. Create a personal brand
Regardless of whether you want to be a full stack developer, a Scala expert, a DevOps engineer, or a JavaScript guru, it pays to have a personal brand. If you want to stand out among other developers and have opportunities arriving to you and great tech companies reaching out to you, then you need to have a personal brand. So please include this as one of your career goals: be seen, everywhere.
For a developer, having a personal brand is slightly different than having a personal brand as a marketer, for example. In some ways, it is easier because you are going to share your lessons and knowledge, instead of trying to sell a product or service.
A few things that are great to have for a developer’s personal brand:
- a GitHub account that shows your contribution to open-source projects and your own projects.
- a technical blog teaching other developers how to debug, code, and optimize. When I was a developer, I never ran out of content ideas because I would be developing every single day and talking to other developers. And I basically just converted that learning and conversation into blog posts. You can read more about my blogging journey here.
- be involved and seen at industry meetups and conferences. There are a lot of them these days, more than there were ten years ago. There are generic ones for software developers and more specific ones for a particular programming language or a framework, and you can choose the ones that align with your career goals.
- be a speaker at the above events. I know a lot of developers would rather code non-stop for 24 hours without food than speak for 10 minutes in front of an audience. But I encourage you to try and take baby steps. It gets easier and it is very rewarding.
- be active and helpful on social media. Twitter and LinkedIn are better social media platforms for developers than Facebook and Instagram.
Having a personal brand is a career goal in itself, and one that you want to have sooner rather than later. It increases your visibility among a sea of developers, improves your employability, and last but not least, will help you to be a more rounded developer and a leader in the field that you are in. You can download my free Ultimate Personal Branding Checklist for Professionals to help you get started.
5. Be accountable
A lot of developers give up on their career goals way too early. Earlier in my career, I helped many developers set goals to help them move their careers forward. But my return on investment was not great.
When I saw them again in a few months or even years, I asked them how they were doing and if they had achieved their goals. A lot of them hadn’t, because they were either too busy in their current job, or everyday life activities like relationships, children, marriage, and paying bills had taken over and they lost sight of their career goals.
So, I hear you ask, how can I be accountable and really execute my goals? There are a few ways:
Option 1: Find an accountability buddy who will check in with you periodically. It is better if your accountability buddy has similar goals so you can help each other out.
Option 2: Hire a coach who understands what you want, helps you become accountable, and drives you to take actions. Because the truth is, when you pay someone, you know you want to get your money’s worth, so you will put forth effort. If you can, pick someone from the technology industry. As a developer, you want to talk to someone who can speak technical language, and understands challenges and paths in technology.
Option 3: Push yourself through. Use tools and apps to help you set time aside to take actions. Be very disciplined. This is my approach. Honestly, some days I would rather be scrolling through my social media feeds or catching up on sleep rather than writing a blog post or contributing to an open-source project. But I still push myself through because I have goals to achieve. If I can, you can too.
Start setting your career goals today
Being a developer is awesome. We are in the midst of technology disruption, and we see first-hand how technology is changing every day in every aspect of our lives. However, to be able to ride this wave of technology disruption successfully, developers need to be aware of their surroundings and have career goals to support them in their career growth.
Steve Jobs summed it up quite perfectly:
Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it.
If you want to thrive in your career as a developer, you need to be strategic and set achievable career goals to help you get to where you want to be. You need to put in your best effort, stand out from the crowd, and own your career. Don’t let each day go by without direction, wondering why on earth you chose to become a developer, and why you would want to stay on this path.
Everything starts with having career goals, and you can make the choice to create them today and follow them through until the end.