7th April 2020. Today is a great day for me. I have finally completed 21 years in programming.

Whew! it just seems like yesterday and here I am today, blogging my heart out as a 21-year-old mid-aged programmer who has successfully survived the sinusoidal crests and troughs of the treacherous world of the software industry. Yes, it is a defining moment for me, to say the least.

Having said that, 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.


Mistake 1 — not saving your paychecks for a rainy day.

The trajectory of your career will be largely based on how you decide to spend your initial paychecks. You’ll be tempted to spend it on getting a nicer car, upgrading your clothes, and going out to fancier restaurants.

While it is not wrong to splurge occasionally, you need to plan to spend your money on acquiring knowledge instead. It’ll not only give you the greatest return on investment but also be the one thing that lasts over time.


Mistake 2 — 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.


Mistake 3 — burning bridges

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.


Mistake 4 — 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.


Mistake 5 — 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.


Mistake 6 — 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.


Mistake 7 — cutting corners

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.


Mistake 8 — 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!!!


Mistake 9 — avoiding politics

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.


Mistake 10 — 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.


Mistake 11 — underestimating the importance of code sense

According to Robert Martin, “writing clean code requires the disciplined use of myriad little techniques applied through a painfully acquired sense of “cleanliness”. These little techniques are collectively called code-sense.”

This code sense not only helps us to differentiate between good code and bad code but it also helps us in forming strategies to transform bad code into good code.


Mistake 12 — 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.


Mistake 13 — 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.


Mistake 14 — 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.


Mistake 15 — 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.


Mistake 16 — 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.


Mistake 17 — 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.


Mistake 18 — 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.


Mistake 19 — 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.


Mistake 20 — 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.


Mistake 21 — 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.