If Your Only Tool Is a Hammer Then Every Problem Looks Like a Nail
If the only you thing you know how to do is code, then you will try to solve all your problems with code.
This is normalif you’re a junior, but learning how to stop this will put you on your way to becoming a senior(not how many years you’ve worked, that by itself means nothing).
Few people know the difference between 10 years of experience and 1 year of experience 10 times
Although code can be applied to many things, it can also not be applied to many other things, so it might be worth your time to stop coding and learn other skills. I guarantee they will allow you to code less and have a bigger impact.
Coding less will make the code you write more meaningful.
Just coding less won’t make a difference, you need to learn why you need to code less. Keep reading for a personal story of how I learned it the hardest way.
Let’s go:
I experienced this the hardest after quitting my job to pursue my own company. My background is software development and I’d never had a job that wasn’t software related.
- I spent months coding a site
- Made internal tools for myself
- Prepared a hiring process using mailchimp and google sheets that automatically sorted candidates based on interests, results of a non-verbal IQ test, and personality traits
- Designed some cool lead-magnet quizzes
- Automated many processes
I also immediately thought about delegating these tasks and hiring a freelancer to do them, but I figured I’d do a better job, and just the time it took me to find one would be too much.
I knew this wasn’t actively getting me more clients, I did it anyway, because, well, I liked doing it.
“We all often think about what’s easy to think about, rather than what’s right to think about.”
― David Rock
The project was ready to go and to scale. But I got 0 leads and 0 sales via my web presence.
Because, even though at this point I could semi-effectively sell, market, advertise, influence, and negotiate. I didn’t realize the full impact of investigation and making a true minimum-profitable-product(MPP).
Had I put an hourly value on my personal hours, which I value at around 100€ per hour, and that I worked around 12 hours per day 7 days per week, I calculated that in those 4 months I “spent” 78,000€.
So what did I do wrong?
I felt like every problem I encountered had to be solved with code! And since I know it very well, it’s only natural to want to use and abuse it.
I learned that, in a startup phase, if you can’t justify paying someone to do the task you’re currently doing, it means you’re working on a very low-impact task and it probably doesn’t need to be done right now.
This doesn’t apply only to startups, but they are a popular example because startups need to work efficiently and keep waste to a minimum.
What could one do instead?
This framework bases its performance on what some would call laziness, but I call deferred productivity.
You wouldn’t think twice about deferring a large javascript file that you don’t need at load time, but then why would you synchronously “load” 40+ hours of complex work to solve a badly described problem?
The principle is simple, given a problem:
- Assume you don’t know everything there is to know about the problem, because the people who told you about it also don’t, and the people who have it also don’t.
- DON’T TOUCH ANY CODE YET. Spend just 5 minutes to 1 hour digging deeper into the problem
- Use the new knowledge to reformulate your initial strategy to solve the problem
As a software developer, your brain is wired in a way that makes you a great problem solver, but > you need to learn to find the exact problem, it’s not always code.
The hardest part here is digging deeper, this always involves some sort of communication, and people will be against all your ideas, unfortunately.
It’s your job to learn to ask the right questions and what the right question is.
“> The uncreative mind can spot wrong answers, but it takes a very creative mind to spot wrong questions.” – Anthony Jay
This is exactly where you need to git gud. People are more complex than any system you will ever work on, but figuring them out doesn’t need to be hard.
Example
How this might go based on a real life example:
- Someone creates a task for you to debug/fix or replace the image upload system for your company’s blog.
- You ask why, he says “because it doesn’t work for Jenny”
- You ask Jenny what’s up, she says it doesn’t work and uploads always fail
- You ask if she’s sure she’s uploading an image, she says yes
- You ask her to try it whilst you watch
- You notice that she exported her image from Photoshop as a PDF, and the image uploader doesn’t accept PDFs.
All those steps above can take just 5 minutes, and in those 5 minutes you found out that the problem isn’t even code, it’s good ‘ol layer 8.
Then you tell this to your manager/product person and have him write a document with content submission guidelines.
The reason non-technical people blame code/tech for a problem is because they don’t understand it, that’s it.
It’s the same reason your mother blames you playing a video game once for her internet being slow.