How to get things done?
I was talking with a friend a while back. He’s a tech lead at a local company. We were discussing our ongoing projects and what is stopping us from completing them. He made an excellent observation:
“Skill alone is not the biggest predictor if a project will get completed. There are observable patterns between people that get things done and people who get stuck. It’s hard to pinpoint the actual reason, but it is easy to recognize when you see it.”
In the following days, I was meditating on this topic. What are the these that help us to finish our projects? I observed the following patterns that were a good predictor:
Solving things one-by-one
People who solve problems one-by-one have a good track record of finishing projects. Projects are always full of unknowns, and almost impossible to solve problems. Taking in all of the issues at once can be parallelizing. I’ve noticed that people who are good at finishing projects are good at picking a problem out of the bunch of hard problems and solving them without worrying what comes next.
A work environment where you don’t need permissions
The work environment is as important as your individual qualities. If you need to get permission for every little decision, a person’s motivation plummets. Good environments allow you to do anything and will stop you when things start to look bad. Bad environments will prevent you from doing any work before you are absolutely sure that it will be a success.
Doing things you don’t know how to do
“I’m not a CSS expert, but I can fix this one border-width” is the right mindset. When we are not comfortable doing things outside of our primary domain, the set of problems we can solve soon becomes very limited.
People who are good at finishing projects are fearless. “I need to write a sales pitch? Sure, I can try it.”, “The metrics servers is broken? I can take a peek.”. More often than not, problems are not so scary as they seem.
Perfectionism (and generalization) is the prime killer of projects. Exciting problems usually don’t have a clear, “mathematically complete” solution. I’ve noticed that people who embrace the fuzziness and try to implement the sub-perfect solution are usually the only ones who figure out the perfect solution in the long run, while the perfectionist crowd is still discussing what can go wrong.
Investing in the meta-problems
More often than not, the problem that is too hard to solve is only so hard because you don’t have the right tools and the environment. People who zoom-out and solve the meta-problems are the ones that are good at finishing projects.
For example, reducing the number of defects in your system can feel impossible. As soon as you fix one, another one pops up. But the deeper meta-problem is that you are not writing tests. You must solve the meta-problem before you tackle the real one.
Asking for help
Getting stuck is OK and natural. Getting stuck and not asking for any help is foolish. There are so many places where you can find help these days. You can ask other people in your team, you can ask online, you can ask a friend.
We sometimes limit ourselves and stay stuck in the problem. The productive ones are asking for help in multiple places.
Asking for help and listening to answers
Asking for help is the first step, but listening to the answers is the crucial part. We sometimes get so stuck in the problem that we refuse to listen to answers.
When you mentor others, you learn an important lesson: You can only teach a person who is ready to learn. Try to be a person that is always ready to learn.
People who are good at finishing projects are good at listening to answers.
Thought I’d share this in case anyone else finds it useful.
Have a great day!