Skip to main content

Becoming a professional software developer: Identity over skills

In my experience as a software architect working with developers, I’ve seen a common struggle: the inability to consistently apply good practices, like unit testing, refactoring, or writing clean code, especially when deadlines loom. At the start of a project, everyone’s committed to following best practices—writing tests, maintaining code quality, and ensuring scalability. But as the pressure of deadlines kicks in, those good intentions often get thrown overboard in favor of quick fixes and shortcuts.

What I’ve realized is that the real issue isn’t a lack of skill or knowledge; it’s a mindset problem. Developers may know what the best practices are, but they don’t always see themselves as the type of developer who religiously follows them, no matter the circumstances. This ties into an insight I gained from reading Atomic Habits by James Clear:

True change happens not when we aim to achieve specific goals, but when we shift our identity.

For developers, this means moving from “I need to write unit tests” to “I am the kind of developer who always writes unit tests.”


Identity Change Over Outcome Change

So if we want to be a professional software developer (or architect) that real, lasting change occurs when we shift our focus from what we want to achieve to who we want to become. It’s not about setting goals like “I want to learn a new programming language,” but about adopting the identity of a professional software developer.

This reframing pushes us to act consistently with that identity, which leads to better outcomes naturally.

The Importance of Small Wins in Reinforcing Identity

Every small action you take toward developing your craft as a software developer is a vote for your new identity. By reinforcing that identity through daily practice, such as writing code, reading documentation, or contributing to open-source projects, you're strengthening your belief in that identity.

So committing to write code daily, even for just 5 minutes, helps reinforce your identity as a consistent developer. Each commit(no pun intended), no matter how small, is a testament to your evolving skills and habits.

Build Systems, Not Just Set Goals

Clear advises focusing on systems rather than goals. As a software developer, the system is your daily habits—your commitment to learning, improving, and refining your skills.

Rather than setting a goal like “I want to learn Python in 3 months,” develop a system that helps you learn continuously, like dedicating 30 minutes a day to coding practice, or participating in coding challenges.

Align your Identity with Professional Growth

When your identity as a developer is firmly established, opportunities for growth—whether new roles, projects, or learning experiences—will align naturally with your habits. You won't need to force learning or discipline; they will come as part of who you are.

If you see yourself as a developer who excels at problem-solving and innovation, you’ll naturally gravitate toward challenging projects or learning new, cutting-edge technologies. It is not a coincidence that the Ideal Team Player is Hungry, Humble and Smart.

Let’s summarize

The path to becoming a successful software developer isn’t just about acquiring skills or achieving goals. It’s about adopting the mindset and habits of a professional. By shifting your identity to that of a disciplined, growth-oriented developer, you set the foundation for long-term success.

More information

Atomic Habits: Tiny Changes, Remarkable Results by James Clear

The Ideal Team Player | The Table Group

Popular posts from this blog

Azure DevOps/ GitHub emoji

I’m really bad at remembering emoji’s. So here is cheat sheet with all emoji’s that can be used in tools that support the github emoji markdown markup: All credits go to rcaviers who created this list.

DevToys–A swiss army knife for developers

As a developer there are a lot of small tasks you need to do as part of your coding, debugging and testing activities.  DevToys is an offline windows app that tries to help you with these tasks. Instead of using different websites you get a fully offline experience offering help for a large list of tasks. Many tools are available. Here is the current list: Converters JSON <> YAML Timestamp Number Base Cron Parser Encoders / Decoders HTML URL Base64 Text & Image GZip JWT Decoder Formatters JSON SQL XML Generators Hash (MD5, SHA1, SHA256, SHA512) UUID 1 and 4 Lorem Ipsum Checksum Text Escape / Unescape Inspector & Case Converter Regex Tester Text Comparer XML Validator Markdown Preview Graphic Color B

Kubernetes–Limit your environmental impact

Reducing the carbon footprint and CO2 emission of our (cloud) workloads, is a responsibility of all of us. If you are running a Kubernetes cluster, have a look at Kube-Green . kube-green is a simple Kubernetes operator that automatically shuts down (some of) your pods when you don't need them. A single pod produces about 11 Kg CO2eq per year( here the calculation). Reason enough to give it a try! Installing kube-green in your cluster The easiest way to install the operator in your cluster is through kubectl. We first need to install a cert-manager: kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.yaml Remark: Wait a minute before you continue as it can take some time before the cert-manager is up & running inside your cluster. Now we can install the kube-green operator: kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml Now in the namespace where we want t