Intro
This serves as a reminder/guide/aspiration for myself first and foremost. Some days you perform better than others. The goal is to be a cracked dev every day.
I recommend creating a daily mantra you read every morning for the things you're weak at.
I've been at many early stage startups. So I'm writing this to my younger self. These are more or less observations I’ve seen in real practice and admire.
Get technically good
First thing, get technically good. Honestly, the only way here is to build a lot of things. Build like crazy. Build a lot of side projects. Dig deep into several areas. Have breadth but at the same time depth.
The goal is to be able to ship fast while at the same time trying to find simple solutions to complex problems.
Is what you're working on important?
Ask yourself every day, what I'm working on, is it important?
Priorities change day by day, week by week, what you worked on yesterday might not be the most important thing to work on today for the company.
Say no
It's easy to just say yes to everything. By default, say no to things that aren't top company priorities.
If yes, communicate what you're working on and don't give false promises.
Leading a project
Don't make scope too big
Don't make scope too big. Think about the minimal thing to ship to customers so you can iterate based on feedback.
Overcommunicate how it's going
Overcommunicate how it's going. Make sure people are aware of the progress. Make sure it's clear what's being done + why it's being worked on now (should be done before project starts).
Single place for communication
Make sure there's a single place for communication. A place all stakeholders can go to to understand the progress + if the project is on track.
Linear Project Updates are perfect for this.
Be a driver
If you see something that should be fixed, fix it. Make a PR and ship. If it's something you don't know how to fix, make sure to raise awareness plus make sure it gets shipped.
For me, this often means asking the person who knows how to fix it how to do it so that I can learn and next time it occurs I can fix it myself.
Dealing with discussions/disagreements
When discussions happen, ask yourself, what's the fastest way to get to action here? How can we get “data” whether we’re on the right track or not?
Surprisingly many discussions can be shut down by having someone do prototypes and see how things work. It's easy to discuss and talk about things. But getting to the action and shipping is what matters.
Remember, in discussions, always take a step back and ask yourself "why?". Your idea is an idea among ideas. The goal is figuring it out as a team.
Talk to users
Talk to users. Talk to them every day. What problems do they have? What do they like/dislike? How are they actually using the product?
You will be surprised how little devs talk to users. It makes you so disconnected from the product if you don't do it.
Dogfood
Use the product. Use it with intentions same as your users. You will come up with more ideas. You will notice things that need to be fixed (then you ship the fixes).
Spend time doing this. It's much more important than you think.
Think like a founder, as if it's your own company/product
The key to really becoming a cracked dev is to think like a founder. As if it's your own company/product. You're gonna do everything you can to make it successful.
The devs I’ve worked with who do this re the ones I admire the most.
Even if you don't have the motivation to do so, see it as a learning experience for yourself when you go on and start your own company. That'll serve as motivation for thinking like a founder and really pushing yourself in the company to do your best work.
Loved the post!