Why being the smartest developer in the room is not enough
When it comes to hiring developers for a project, the requirements for programming skills are very high. Clients are usually looking for people who have lots of experience with every possible technology; they call it full stack developer, but often the requirements describe an entire IT department. They often get what they ask for: smart programmers with lots of knowledge, but sometimes the project still does not prove to be successful. Why?
It is truly mandatory to know that being a very good developer is not only about coding skills. Of course, it helps (a lot, actually), but that is not enough. Every project means teamwork, human connexions and communication. It requires soft skills which are usually not emphasized enough, but they actually have a big impact on the project. Invest in both tech and soft skills.
“Soft skills get little respect, but will make or break your career.” ― Peggy Klaus
“Without your involvement you can't succeed. With your involvement you can't fail.” ― APJ Abdul Kalam
If there’s a team, there has to be a way to split the tasks. But splitting tasks should not mean that you are only concerned about your slice. You are part of a project and there should be no drawn lines between your work and others work. You have to understand the business logic, you need to have a good idea of what the entire app does, because maybe at some point your slice will become bigger and you won’t have any idea how to deal with it.
Imagine a puzzle of 100 pieces (I guess it’s a “3+” 🙂) and you’re given 5 small pieces. Would you know where to place them if you had no idea about the big picture? You would, but only if you’d be aware of the puzzle pieces that the other team members have, only if you communicate.
Take responsibility and help your teammates
“We are very good lawyers for our own mistakes, and very good judges for the mistakes of others.”
You have to take responsibility for your work. There is no project without issues; if you break something, just admit it and fix it.
If somebody else breaks something, ask if they need help to fix it. You work with your mates, not against them. The most important thing is to repair what is broken without passing the guilt. Giving guidance to the ones that make mistakes will help them grow and the project blossom.
Not to forget, if you fix something, make sure that whoever tests it knows what the issue was and how to test it; just give them a brief description about the fix. Sometimes it’s straightforward, but sometimes it can be pretty tricky and it is really important to save others’ time as well.
Listen and embrace other ideas
“More the knowledge, less the ego; lesser the knowledge, more the ego.” ― Albert Einstein
Having a lot of experience behind does not mean you always have the best idea, and if others have different opinions it does not mean that they are wrong. Having different ideas means diversity and it is good to have where to pick from. Accept and listen to your team members’ ideas as well, understand the rationale behind their solution and together pick the best one.
Invest time in your work
“If you build the guts to do something, anything, then you better save enough to face the consequences.” ― Criss Jami
Being super fast is not always a great approach. Take the time to look for the best solutions. It is sometimes cheaper to spend more time on finding a good approach from the start instead of having to change it later; more than that, you could also invest some time in making it easily replaceable. Make sure that the solution you implement fits the entire project. Make sure you fix something without the cost of breaking something else.
However, be careful what you spend your time on. Communication is key in saving time. If a task seems like it would take too long and you are not convinced it is important, just ask your PM or your leader. If you do not have enough details, ask for more. If you have any kind of questions, don’t be shy, get answers. Save precious time.
“Organization Isn’t About Perfection; It’s About Efficiency, Reducing Stress And Clutter, Saving Time And Money And Improving Your Overall Quality Of Life.” ― Christina Scalise
Do not limit yourself on “making something work”. Programming is art. You don’t have to be Van Gogh to create a masterpiece.
Think of it this way: You have a better chance of finding your socks if your bedroom is clean and clutter free. Do the same with your code: once you have it running, refactor it as much as possible, clean it up. Make sure that you use explicit names (“lMthA” is not very explicit) and that you are consistent with the project coding style. Make it readable in such a way that it will substantially reduce the amount of time anyone would spend understanding your code. It will help not only your teammates, but yourself too. Time has this bad habit of erasing information from our head, it’s up to us to leave traces that we can follow later. Plus, keeping maintenance for the project will be much easier.
Document, document and document! Specs will be lost at some point; tickets and shared files are updated or removed, they are not reliable on the long term. Why not document your code and add the most important info right there, so that you’ll have it at hand any time in the future?
Add as few purposes per commit as possible and describe in a few words what you have changed and why. Not only will reviewing your commits become easier, but this process is really helpful to keep track of the progress. Additionally, it helps you find the code that could’ve introduced a bug.
“The problem with putting off things you’ve always wanted to do is that eventually you run out of always.” ― Robert Breault
At times you will come across things that need improvement, but you will have to postpone due to a lack of time. Relying on your memory is not an option, you won’t remember everything that you want to do. Just add TODOs, describe them explicitly - what’s done and what needs to be done - and make sure they are never forgotten.
Being a good programmer does not depend only on the technology stack that you offer, but on your character, on your personality and your attitude. You are part of a team: you fall together, but most importantly, you rise together.
Bring value to your team by showing them you can grow together, you trust them, you care about their opinion and you care about their time. After all, time is precious.
Success can only be achieved when you give it your all.
“If you want to go fast, go alone. If you want to go far, go together.” [African Proverb]