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