Setting goals for software developers from a self-determination theory approach
4 min read
In this article, I show how Self-Determination Theory, or SDT, can be used to succeed as a software developer. The developers of SDT (Deci and Ryan, 2000) identified three basic needs:
Relatedness: to feel valued and a sense of belonging.
Competence: to feel effective and develop mastery over one's tasks.
Autonomy: to feel the owner of one's actions.
SDT recognizes motivation and its regulation as a continuum. Multiple motivations might drive us at any time, and we might identify with external regulations to differing degrees. Autonomous self-regulation, signified in the above image as the green box, is the preferred position on the continuum. The takeaway is that motivation and its regulation should resonate with or originate from your inner world.
Disclaimer: I assume a work environment that supports the pursuit of the basic needs and autonomous self-regulation. Your circumstances determine how valuable, effective and practical some advice will be. Individual personality differences will determine the degrees to which each need has been satisfied or thwarted. It is also absolutely fine to aim for "consistently meets expectations" if you're already a senior developer and satisfied with where you are.
A strategy for realizing your basic needs
We can realize our basic needs through mastery of competencies. The exact competencies and their number don't matter as long as they're ambitious but fair. A competency should also clarify when it is mastered for each seniority level (junior, medior, senior).
This framework of needs and competencies allows us to evaluate our performance and negotiate our goals. Both (self)evaluation and negotiation skills do not come easy to most. When done honestly, they elicit support from others and benefit the direction and pace of our growth. These others might have needs directed to us specifically or to the team, or they might be unspoken and require some effort to discover. Appreciating the innate needs of others is crucial to fulfilling our own needs. The image below visualizes an example of these pulling forces.
Empathy and (self-)evaluation allow us to discover, negotiate and prioritize goals. Failure to do so will result in making the wrong tradeoffs and a dangerous gap between how I view myself, how my coworkers view me, and reality.
Step 1: Attitude
Although we join a company of problem-solvers, it is easy to feel disconnected. Our basic needs of relatedness, competence and autonomy are especially effected by our attitude:
Do you have a can-do/learn, team player attitude?
Do you consistently practice your emotional intelligence and non-violent communication skills? Even when coworkers are having a bad day/year/decade?
Sure, writing code is a core competency of yours, but time spent alone or in meetings to investigate, clarify, design, document, and align on solutions is part of the job and not a distraction.
Do you take ownership of your growth? Obsessing about learning and adding value will benefit you more than obsessing about promotions.
Are your goals aligned with the team and company goals and culture? A start-up will have a different tech debt strategy from a Big Tech company.
Mind your "SAY:DO" ratio: the ratio between what you say you will (or should) do to those things you actually do.
Regular one-on-ones with your coworkers, especially your manager, are crucial to meeting the need for relatedness. Showing genuine concern for the problems and ambitions of your coworkers is an excellent way to feel connected to them.
Step 2: Add value
It is important to remember that your coworkers and manager evaluate you on (1) consistency and (2) what value you will add for them in the future. This is why managers and promotion committees usually expect you to perform at the next level for some time before you get promoted. Adding value is about actually doing the work to fulfill your innate needs and master the identified competencies. We need to (1) execute our SMART-formulated goals and (2) document the added value and (self)evaluate. Immediately documenting and evaluating ensures you actually do it and remember it correctly. An entry might be "On DATE, I presented a draft PR that will reduce complexity in our integration tests and speed them up by 20% resulting in a reduction of 3 minutes in the CI/CD pipeline execution. The team agreed to review the PR." I could note how this entry relates to any goals and competencies.
Step 3: Celebrate
Celebrating your progress is crucial to fulfilling your innate needs, especially the need for relatedness. Even if we're best friends, it is silly to expect my manager and coworkers to remember all the value I added in the past six or twelve months. You can ask your manager to read your self-evaluation before they evaluate your performance. You can also share your goals and learn in public with your coworkers.
Some valuable sources:
Timeless career advice for software engineers, Louie Bacaj
blog.pragmaticengineer.com, Gergely Orosz
jvns.ca/blog/brag-documents, Julia Evans