Early Career
At this stage, you're writing code that works—and that's a real accomplishment. Your focus is on making things function, often leaning on examples or patterns you've seen before. You may not yet know what "good" code looks like, but you're starting to build that awareness through feedback and observation.
It's normal to prioritize getting something working over making it clean. The key is developing habits that help you improve consistency, readability, and structure with each pull request you submit.
What This Looks Like
Engineers at this stage write functional code that accomplishes its purpose. You follow team conventions when reminded or reviewed, and you may rely heavily on copy-paste from similar examples—which is a reasonable way to learn. You're starting to understand formatting and basic readability, though meaningful variable names might appear inconsistently. You're beginning to see the difference between code that merely works and code that others can understand.
The common struggles at this stage are natural parts of learning. Your code may be hard to read, duplicate logic unnecessarily, or miss opportunities for reuse. You might lack consistent formatting or structure, and you may not yet recognize performance or security implications of your choices. The phrase "clean code" might feel abstract—you're still learning what it means in context.
The Shift
The fundamental shift at this stage moves from "Does it work?" to "Will someone else understand and maintain this?" This doesn't mean you stop caring about functionality—it means you start thinking about the reader. A piece of code might execute perfectly and still be a burden to maintain if no one can figure out what it does or why.
You'll know the shift is taking hold when you write code that works and passes basic review, when you make use of existing examples or conventions rather than inventing your own, and when you show genuine curiosity about how to improve your style and structure. Responding to feedback and improving code accordingly becomes second nature.
How to Grow
Start by asking yourself key questions before and after writing code. Would this make sense to someone seeing it for the first time? Is there a simpler, cleaner way to write this? Am I following team standards or just doing what worked before? These questions won't always have clear answers, but asking them reshapes your approach.
Build practical habits around quality. Use the linter and formatter consistently—they catch issues you'll otherwise miss. Read pull requests from others to see different approaches and learn what makes code readable. Rename things when they're unclear, even if it feels pedantic. When a review suggests a new pattern, ask questions to understand the reasoning. Consider rewriting something you wrote last month just to see how your thinking has evolved.
You'll know you're ready to move to the next stage when you see fewer formatting or naming issues in code reviews, when you show more awareness of maintainability in your pull requests, and when you've developed genuine curiosity about structure, reuse, and idiomatic patterns.
At this stage, writing working code is the priority—and that's a solid foundation. As you build confidence, you start to notice how code quality makes everything smoother.