Advice For New Developers
Making mistakes is part of the learning path to greatness. Failing quickly and often is a hallmark of success. And aiming to avoid making the same mistake more than once should be somewhere high on your priority list.
Yes, personal experience is the most powerful way to learn but the knowledge acquired through others’ experiences is a quicker, smarter way to go about it to save significant pain. After all, life is short; you can’t make all possible mistakes in your one life.
And a career in software development is the start of a journey in mastering your craft. As with any field, there will be challenges and chances to be correct, and chances where you can be completely wrong. This piece acts as a reflection on the mistakes I have made in my career so far — and a guide to avoiding them.
Making yourself indispensable
While the rush of power that comes with indispensability is addictive, you are hurting your own growth if you continue doing that.
Always remember, if you want to aim for higher things, you need to get yourself freed from lower things. Create and mentor a successor in place who can take over from you.
Yes, you are good, you are great and you are a hot-shot programmer but that does not give you the power to burn bridges and pick up needless battles. The software industry is a small world. Bridges you are burning now will come back and haunt you when you need them the most.
Be humble, be cordial and maintain good equations even with people you don’t like.
Not sharing knowledge
From my experience, being good at technology is the most sustainable way to gain respect among your team members. That being said, being good at technology and not sharing your knowledge is a sure shot recipe for disaster.
Knowledge is half the battle and sharing it is the other half. Good programmers talk to junior programmers and show them how to solve problems. They not only tell them how to fix the problem but also explain why they fixed it that way.
Ignoring soft skills
Programmers sometimes forget that software development is a team sport, and a project is a mutual task for a group of people who have to work side by side, support each other, and move towards a single goal.
So, if a programmer is too arrogant, does not have any passion for work, or is not able to communicate efficiently, this will have a negative impact not only on his work but on the whole project by delaying it or screwing up some of its parts. So soft skills are mandatory.
Sticking to one stack
The software industry never stops evolving. Similarly, a software professional should also keep evolving with the industry and must match its pace with the industry to stay relevant and in-demand.
Remember, the key is not necessarily acquiring fluency, but gaining a conceptual vocabulary to attack problems in new ways. Good programmers don’t just code, but they keep learning key concepts that help them to resolve problems in new ways and find the most efficient solution possible.
There is nothing called “Quick and Dirty code”. Dirty code is bad code. Period. Never cut corners or accept anything that is the second rate.
Your real test as a good programmer comes under a crisis. If your behavior changes during a crisis, then you are not a good programmer.
Not documenting code
It doesn’t matter how good your software is, because if the documentation is not good enough, people will not use it.
Whatever be the deadline, whatever be the workload, whatever be the excuse of not documenting, any software having no documentation is a dead Dodo. Simple as that!!!
We’ve all heard techies say: “Leave me out of the politics. I just want to implement the technology.” But that will not work.
Where there’s technology, there’s change, and where there’s change, there will be people who perceive themselves as winners or losers. That’s where politics begin. You need to manage it, circumvent it and come out as a winner. There is no other way.
Designing too much before writing code
Yes, a good design before coding is a good thing, but devoting too much time on it puts you in an analysis-paralysis situation.
Do not look for a perfect design That does not exist in the world of programming. Look for a good-enough design, something that you can use to get started. A good design works like a map. It should evolve, rather than cast in stone.
Picking up the first solution
Yes, the first solution is tempting and might be an easy way out. But good solutions are usually discovered once you start questioning all the solutions that you find.
Remember, your job as a programmer is not to find a solution to the problem. It is to find the simplest and the most optimum solution to the problem.
Not knowing when not to do something
The best programmers know precisely when not to do something.
They know that rewriting a library from scratch just to make it more readable, or switching to the newest framework from the older one are not always good decisions. The purpose of the code should be clear enough to grasp within minutes or even seconds.
The key is not to be risk-averse but just careful in picking the right battles.
Not admitting your ignorance
You’re probably a technical whiz kid, but even you will not know everything about your technology. It’s practically impossible.
On the other hand, the greenest kid in the room might come up with a sustainable, performance-effective solution to the problem at hand. Good programmers don’t impose their solutions on the team. Rather they cultivate a sort of democracy in which the best solution wins.
Bending under pressure
The code is like food. It can be fast, good, or cheap. Pick any two. A bad programmer overwhelmed by pressure tries to get the team to do all three things at once. They’re driven by deadlines and commitments made by somebody else knowing pretty well that it is not feasible.
A good programmer is all about “getting real,” and communicating that reality to all stakeholders up and down the chain in the fastest way possible.
Not networking and building trust
Yes, programmers can exist as lone wolves also but the best programmers are master networkers.
And The easiest way to establish trust and forge relationships can be by helping other teams in crunch situations. This way you start owing them ‘favors” which you can always ask without hesitation at the right time. Volunteering to help somebody with their initiative or going that extra mile to help somebody accomplish their work not only builds your expertise but also your influence within the organization.
Not seeing the big picture
As a programmer, most of the time, you will be working on a piece of code or maybe solving some production issues in existing code. You are doing the work assigned; nothing wrong in it. But if you want to a part of the entire deal; you need to take time to find out what the deal is all about.
And the best and easiest approach will be to take the help of a mentor who can help you develop your skills faster and keep you firmly grounded with the larger project perspective.
Always reinventing the wheel
Good programmers do not reinvent the wheel. They always reuse and build over existing functionalities wherever possible. This not only saves time but also builds a sort of camaraderie among the developers sharing code.
There are already existing answers to the problems you are trying to solve. So when you are trying to complete a task, check to see if someone else has already solved the problem. You are not cutting corners here. You are cutting the effort here.
Not knowing business rules well enough
We programmers sometimes underestimate the complexity of business rules. If we don’t know the business rules clearly we won’t know how to implement the solution effectively.
Remember, you need to adopt a business mindset while programming and create a workable solution in business terms that fulfills its objectives rather than focussing on a powerful technical solution.
Not communicating with team
While there are no set rules to communicate, (in fact, in software-project limbo, people are referred to as resources), getting a bit personal at work is required as part of our journey as Homo sapiens.
Knowing other programmers’ abilities and limitations, combined with knowing what they are interested in, will make you plan your development in a better way.
Not prioritizing health
Health is the foundation that accelerates everything in your life, including your career. It elevates your creativity, energy, and grit to get through the inevitable ups and downs you’ll experience.
Prioritizing your health isn’t just a one-time task. It means scheduling it into your daily routine, making investments to buy the right food and exercise regularly, and even giving up other bad habits.
Any career has ups and downs and it totally depends on the way you take it. You can either be knocked down by the negative things, or you can take it in a positive way and learn from it
As Carlton Fisk has rightly said:
“It’s not what you achieve, it’s what you overcome. That’s what defines your career.”