When I was a kid, I was sure I was born to lead. I spent most of my days playing some sort of competitive sport. Either it was soccer, basketball, tennis table, karate or handball (Yeah, I played that too) - I felt like I knew how our team should play. I spoke up and lead on the playground.
As I grew up, I lost that feeling. It seemed like other people knew much better than me what’s the best thing to do. I didn’t care as much as them to take my ideas and spread them among the team. I took a step back and let other people lead. It’s nice, because being a “doer” is probably the most enjoyable position to be in.
A year ago, I took a step forward once again and took the position of VP R&D in my company. I felt like I was back on the playground, ready to push everyone forward. I have very strong feelings about how things should be done in software development. I also have more than 20 years of formal and informal experience in the field. How difficult could it be?
Very. I think I need at least 100 years to master this new trade.
The nice thing about it, is I keep learning new stuff everyday. Here are a few things that weren’t obvious to me when I took the new role.
1. You’re not the hero anymore
I used to be that developer who fixes the issue just before things go bad and saves the day. Not anymore. I took a step forward, so I had to take a step backward.
I let my team members be the heroes. They should be the ones writing the smart blog posts, giving talks about the company’s newest technology and saving the day when needed.
2. It’s easier to work with friends
I believe people only do things because they want to do them. I don’t think telling people what and how to do gets you anywhere.
It’s easier to talk to friends, consult and trust your team members to make the right choices. So I just see everyone as friends. It works better than bossing people around.
3. Asynchronous is not just for Node.js
I find it much easier to open my laptop and code something instead of opening my inbox or organizing the team’s agile sprint.
The problem is some things are better done asynchronously. If you don’t send them away, you’re blocking the entire company. We all hate Blocking I/O, don’t we? So I do my best to make sure everything has been “fired away” before I go back to my own coding work.
4. Feedback is important
I love getting feedback. There’s nothing better than hearing what you did great, good, okay and bad. It’s kinda as people appreciate you coming to work every day.
Tell people what they do great, it’s very important because not everyone is sure he’s doing the right things. Also tell people where they can improve. It’s harder, because it’s like telling someone he’s not good at something. But hey, it’s really important for them.
5. Let people figure it out
Don’t tell people how to do things. Guide them to find the correct answer. Or a good answer. The word “challenge” is the most appropriate. Challenge the people to come up with the best solution.
This is hard. It’s much easier just saying the answer that comes to my mind.
6. Let go
Not everything will be done as you wanted it to be done. That’s okay. Sometimes things will be better than how you envisioned them.
Other times, they will be opposite to what you believe in. That’s okay too. It gives room for discussion and learning new things. And who knew, I’m totally wrong many times. That’s how it is when working with smart people.
7. Changes
Nobody likes changes. Me neither. However, making thinks work better requires change.
Some people like making changes because they can. So the important thing to do is make changes when there’s a need. This is the only formula I know to make a change work:
Something could work better. Make people recognize that. Discuss a better way to do it. Do it. Look back and see if that change worked.
8. Make people learn
My dad always asks me what I do at my work.
“Dad, I’m being paid to learn new things. I come to work, read and learn, then use the company’s resources to practice my new skills. These idiots pay me to do that.”
People should learn new skills by doing their work, reading new things and talking about new technologies with their team mates and you. Make sure they think you’re an idiot for paying them to come to work.
9. Be honest
When interviewing new people. I tell them the good things, but mostly tell them the truth about the job. What’s great, what’s not great and why I stay at this job.
When doing something that I don’t agree with, I say that. It’s okay to disagree with other people in the company. I believe this opens up an “honesty channel” that allows anyone to speak their mind.
10. Confront ideas
I didn’t say “confront people” on purpose. I don’t think confrontation with people leads to anything good.
I learned that sometimes you have to go against your nature and ask more of people. Ask for a better idea, better answer to a question and generally don’t let ideas you don’t like spread.