How to be an awesome programmer
You wake up one morning after having a revelation, you decide to do one good thing in your life, instead of your usual rant. You think, OK I’ve been a jackass lately at work and I want to start being nice to others. Maybe I was too harsh to the new recruits and I didn’t want to make them cry on their first day. I want to make a difference today.
Stop where you are.
This is a guide to help you become the most awesome programmer in the whole world. It’s easy. You only have to pay attention as this is important.
Hey if you are still programming like you are living in the cave, hiding stuff for yourself or idealising your abstractions and minimising other people effort, bragging your self out like you are the god-programmer with 100x productivity or whatever you want to call it, please stop it before you proceed further.
Acting like that will not get you further. You will always be a caveman in others people eyes.
Do something different instead. Showcase your code, share your opinions, don’t minimise other opinions different than your own and stop calling yourself productive for the first time.
That will help you follow the next advice.
You can be awesome. If you respect yourself as much as you respect your work.
Of humility. Being humble is not a bad thing. You will not only better liked, as you might imagine, but you will also more effective. This will help you maintain a self-control that will make the other people near you feel safer. They will value you more gracefully and will more likely be less prejudiced of your actions.
Of your work ethics. It’s important to maintain your integrity and when asked to always give constructive and honest feedback. You need to act with a responsibility for your actions. Don’t hide staff under the carpet not thinking that other people near you will not notice. Have some chip on your shoulder. Do not let the quality bar fall for any reason. Be consistent on your commitments and keep an eye on other people to motivate them as you go along. This will help you establish a zone of awesomeness when people are around you.
After you have mastered that you are ready for the next advice.
Programmers become more effective and efficient at creating software by improving their ability to understand, communicate with, and collaborate with other people.
By building trust. If people trust you they will help you. If not they will ignore you. Trust is not assumed. It’s gained. So in order to gain or build trust, you need to trust other people. That may be the most difficult part for some people.
By showing respect. You are not alone. Before you enter work, drop your ego to the floor. You will be giving criticism as well as receiving criticism a lot, so you better learn how to accept it. Even if they come from the newest team members, with less experience from you. You have to show respect and listen. Practice on your wordings. Instead of saying “hey this is stupid or “this is crap start talking about “confusing factors or “it’s not obvious that way, maybe if you can do it differently”. Discuss not attack.
By living in the ground, not in the sky. No-one likes a smart ass. Be humble and not provoke your fellow teammates with pointless arguments. Remember, you are human and not Superman. Instead, build on your social skills. Have fun by being a genuine person.
Software Development is a Team Effort. No single piece of successful software was build by one person.
Drop your ego to the floor and start taking responsibility.
If you follow the next advice you will achieve godly status.
You don’t learn much if you work alone.
Of team Culture. Value code reviews, test-driven development, good design docs, team social events. Maintain an ethos or a principles list that all should respect and defend. Otherwise, it will be a chaotic mess and the one shouting the most will prevail. It will be a mad max world with lots of aggression, ad-hocism and randomness.
Of performance. Promote consensus driven development. This may mean you may drive some processes from start to finish, or you just give it a gentle push in the right direction to speed it up. Grab people out of their desks if you think the process is driving to a halt. By grabbing of course I mean being on top of any problems. Make sure you grab the right people at the right time.
Working alone is inherently riskier than working with others Focus on the people as much as you focus on the code. A 10x programmer with a -10x peoples skills is an impediment.
No amount of smarts or knowledge can substitute good team-working spirit.
Building a healthy software development culture is more like an art than a trait as it depends solely on genuine interactions between teams. Not having those is like binding wood and steel together with glue. No matter how well you apply the glue, it will eventually break…
Skilled leaders serve their teams, not the opposite. Other wise it would be too easy to take advantage of the situation and to fulfil their own agendas.
Shipping great software requires shaping great relationships first. That applies to any shippable goods that involve collaboration, not only software or services.
I hope you take that on board on your next social interaction. Until then I wish you fare well.