Throughout my career, junior developers often ask me, “How can I become a great developer?” or “How can I grow faster?” Often, I would advise them on technical skills or new technologies to learn. However, as time passed, many returned with the same question, adding, “I know more now, but why don’t I feel like I’m getting any better?”
That is because "knowing more" does not equal "being better."
In the world of Software Engineering, growth is not measured by the number of commits, lines of code written, projects completed, or the library of knowledge in your head. Instead, it is measured by your “Mindset” and “Adaptability,” which are often reflected in what you say.
A Great Developer avoids certain phrases that hinder growth. If you find yourself using these 10 sentences frequently, it might be time to pause and reflect. These phrases might be the very obstacles stopping you from becoming the Great Developer you aspire to be.
1. "The task description isn't detailed enough."
Expecting every requirement to be 100% complete turns you into an order-taker lacking creativity, not a problem solver.
A Great Developer acts as a Domain Expert who can ‘discover’ missing information independently. Complaining without offering a solution merely throws the communication problem back at the user.
Realizing a task lacks information is actually a good start—it means you have analyzed the risk of misunderstanding. Instead of complaining, try understanding the context and proposing a solution:
“I’ve reviewed the task, and I believe points A, B, and C are missing. Can I have 15 minutes to explain my understanding of these points to ensure we are aligned before I start?”
2. "Requirements changed again / The specs aren't stable."
In the tech industry, this complaint isn’t just frustration; it signals two root failures:
-
A mindset that doesn’t grasp Agile Development (where change is a necessary ‘Input’).
-
Architectural Rigidity.
If you are a Great Developer, you anticipate change by designing code with Low Coupling and Abstraction Layers. Complaining admits, “I designed this too rigidly to adapt.” Instead, ask yourself:
“How can we adjust the structure or add an Abstraction Layer to support this type of change more easily in the future?”
3. "Let's Hard Code it for now, I'll refactor later."
“Later” rarely happens. This decision knowingly creates ‘Technical Debt’ and leads to design failure. Trading short-term speed for long-term Tight Coupling makes future maintenance a nightmare.
A Great Developer communicates the impact and estimates the future effort required to fix it:
“This design creates Dependency X, affecting future changes. If we need to add Y later, may I spend N extra hours now to build the correct Interface/Configuration Layer? Otherwise, refactoring later could take months.”
4. "I'm not sure... I need to do a Proof of Concept (PoC) first."
Solutions should be based on Engineering Fundamentals, Design Patterns, and Best Practices. Overusing PoCs is a symptom of Analysis Paralysis or a lack of confidence in your foundational knowledge.
PoCs are for reducing risk in new, undocumented technologies, not for validating every choice. Instead, rely on evidence:
“Based on documentation X and design principle Y, Solution A fits our use case. There is a small risk at point N, but I believe we can adapt Solution A easily without needing a time-consuming PoC.”
5. "Okay / I can do it... (but keeps problems a secret)."
Transparent communication is the pillar of Project Management.
A Great Developer knows that hoarding problems creates a bottleneck that destroys team productivity. Hiding issues out of fear is not the trait of a good Individual Contributor.
You should be upfront:
“I found Blocking Issue X. I need Y extra hours to resolve it. Has anyone on the team faced this before? Any advice would be appreciated.”
6. "I wrote this code last year; I don't remember how it works."
In engineering, good code is Self-Documenting. If you can’t remember how it works, the code lacks Clarity and Context—likely due to poor variable naming or functions doing too much.
It also implies a lack of skill in reading code to understand flow and architecture. Immediate action: Ensure your code is Clean, Testable, and follows SOLID principles so it communicates with your future self and your team instantly.
“I wrote this last year, but I can review the code and understand the logic quickly.”
7. "It's an Environment/Network/Infrastructure issue, not my code."
System Thinking is a critical skill. Saying this sentence reflects a limited scope of responsibility and a lack of a Growth Mindset.
A Great Developer strives to understand the entire system lifecycle, from Code to Production Monitoring. Change this to:
“I checked the logs in Grafana and found high latency at Y. There might be an issue at Z. Could the Infra/Ops teamhelp check the config at Z?” This shows responsibility in preliminary investigation and helps scope the problem effectively.
8. "This code is bad; it was written by the previous dev."
Rule #1: Every line of code you touch is your code. Using “Legacy” as an excuse not to improve or understand old code is unprofessional.
A Great Developer sees “opportunity” in legacy code for Incremental Refactoring. Plan proactively:
“I am planning to isolate and refactor part X using the Strangler Fig Pattern to reduce Technical Debt, without impacting the main features.”
9. "I can't do it / It won't be finished in time... (without proposing a solution)."
Accepting limitations without creating options is delivering failure.
A Great Developer is a Problem Solver and Risk Mitigator. Simply saying “Not in time” dumps the problem on the Manager. Always propose options with Business Impact: *”Based on current data, X won’t meet the deadline. I propose 3 options:
-
Scope Down: Cut Feature Y.
-
Minimum Viable Solution (MVS): Replace Feature F with G (less perfect, but solves the core business need).
-
Delay: Move the deadline. I recommend option 2 as it balances time and results best.”*
10. "Just open a ticket/task for me."
Prioritizing Process over Collaboration is a warning sign.
A Great Developer understands that small fixes with high business value should be done immediately, following Agile principles. Rejecting everything that isn’t a “Ticket” makes you a gatekeeper, not a TeamContributor. Modern organizations look for developers who understand the big picture, not just their own convenience.
Becoming a Great Developer isn’t about learning the latest Framework; it’s about shifting your mindset to become an Engineer focused on Ownership, Flexibility, Risk Management, and Continuous Improvement.
A Great Developer isn’t just someone who can write code; they are someone who understands what they are doing, acts as a Team player, and possesses a mindset ready for constant growth.
So, are you still saying these 10 sentences?