Hone Your Craft
Tags: development, productivity
Published: 2024-07-09 09:46:52

I've been a dev for 10 years, and it's been a bumpy road, full of bad choices, a few good ones, and a lot of interesting lessons. 

Let's get to it.

## the climb.
I started in the worst possible position as a web developer: CTO. I started my own company, had no professional experience whatsoever, just a box of tools that I barely knew how to use, and the confidence that goes with any idiot that just came out of a double degree in entrepreneurship and software engineering. In other words, I was a ticking time bomb, the most fertile ground you could think of for a proper burnout. And Burn out I did. 

I didn't know how to code properly, yet I was coding. I never stopped to think and reflect on my life, mostly because I had no life. I had customers, and I was a slave to my "product". And my product was shite.

But we had customers. So I pushed on. And when we finally crashed, what did I learn ? Did I find a job as a junior developer in a nice company that could help me get better through the help of a wise, caring mentor ?

No sir. I made the complete opposite. I started another company. And guess what. Second burnout in a row. Long story short, it took a miracle to get me out of here: I won a hackaton, that earned me a trip around the globe. Finally, I had time to breathe. And I learned the first importants lessons:

- In between jobs, take some time off. Relaxation is not a reward, it's a requirement toward any meaningful achievement.
- Start small. Be Humble. Sites like [roadmap](https://roadmap.sh/) can help you tremendously. Because in life, everything valuable takes time.
- It's OK to ask for help, both for your job and in your life.

## the peak

after 3 years of building abominations through carefully sabotaged codebases, I decided it was time to move on. And so, I joined the worst best company of my career.

This company had everything a 27yo could ask for: early stage, young team, only rowdy guys (our slack history would send us all to jail), afterwork twice a week, and a codebase that was so toxic it's a miracle it didn't spontaneously exploded. but boy did we have fun adding GIFs and sparkles and hover effects.

And guess what ? Another terrible thing happened. We raised funds. Like, a lot.

Raising funds when your product is unstable is not unlike throwing water at a raging kitchen oil fire. You're in for a nasty surprise. And when your customers start asking for simple features, but your codebase is but a glorified diarrhea, you start to think "hmm, maybe we should have used Typescript". 

Because asking the following questions really hurts:
- Why does our landing page take 8 seconds to load ?
- Was it such a good idea naming that variable "x" ?
- How did we manage to turn our most important user story into a 1800 lines function that is, obviously, not tested ?

So, we did what we had to do. And it felt soooo good.

```sh
rm -rf client
rm -rf api
```

Yup. We started new. And let me be clear: the only reason we could do so was because we raised funds. We were overpaid kids playing around with bits of code that had nothing to do with our core product. 

it took us 2 months to rebuild the app, with the help of a great freelancer that helped us design, build and test the app.

For the first time in my career, I understood what it meant to believe in a product, to fight for it, and to nurture it. Our backlog slowly started to pile down, our customers were happier than ever. But karma is a bitch, the pandemic came, we "crashed" (AKA, the company didn't have any money to pay the tech team), so we all left, hoping that things would get better, but just like pauses don't work in relationships, they don't work in jobs either. I moved on, and evolved into a brand new kind of idiot. But in the mean time, I learned some new lessons:

- Building a great product takes time and conviction
- Its a good thing to have a nice team. It's better to have a good team. It's a miracle to have a team that is both benevolent and efficient. 

# the fall

From 2020 to early 2023, I never managed to keep a job for more than a few months. Why ?

Because I was stupid. That's why. Here's a program to completely fuck up your life:

- Be nice and charming
- A company reaches out to you
- Interviews go well, because you are self-confident
- Your get hired.
- You're good at talking, but not good at coding
- Because you have 6/7/8 years of experience, your salary is HUGE.
- Company slowly realises that you are not qualified for the job.
- Everyone loves you, except the people that work with you on a daily basis.  Think "Oh, we just hired a golden retriever to code our most anticipated feature. He can't code whatsoever, but he's a GOOD BOI"
- HR thanks you and ends up your introductory period.
- back to step one.

I did this not one, not twice, but 5 times in a row, blissfully happy, not realising that the only reason I was getting hired was because I'm good at selling myself. After the 5th failure in a row, karma struck me. And almost killed me. Literally. But more on that later: the main issue with this endless cycle was that staying in a company for such a short amount of time is not enough to make you better: you cannot get a grasp on the product, you do not have enough time to start building something meaningful, and because I was not good at coding, I couldn't even help the junior devs (who were sometimes better than I was).

So I learned the most important lesson of them all:

- I suck, and that's alright, as long as I'm able to acknowledge it and decide to get better. 

Which leads us to the main part of this story

## the forge

Early 2023, I started reading. A lot. About coding, about health, about habits. And I completely reshaped my life. 

Here is the complete path I took:

## Acknowledge

You have to understand that the quality of your work is merely a reflection of your life, and therefore, of your habits. And my habits were a mess. From video games to sleepless nights, from alcohol to sedentary lifestyle, I had it all wrong. 

I used Google calendar to write down what my weeks look like. Every single thing, from sleep to work to fun. And I picked 3 things I wanted to change.

- Take care of my health
- Stop playing video games
- get better at coding

## Act

So, that's all I did. I removed everything that was not aimed toward that goal. Sold my gaming computer, subscribed to a weekly delivery of healthy food, set my alarm clock to 6 in the morning, hit the gym. It took me 3 months to turn this into a routine.

Here's how the day unfolds now:
- wake up at 6AM
- Drink water
- hit the gym for 60 minutes
- cold shower
- Get to work
- set my to-do list using calendar
- Get back home
- read/practice guitar
- No more screen time after 9PM
- Sleep at 10PM

My instagram feed went from cat videos and sexy girls to self-help and music. My youtube feed went from video games to coding tutorials and self-development. My salary more than doubled over 18 months. 

but here are the key insights:
- Went from 4/5 MR a week to 3/4 a day
- Went from 20+ comments per MR to 1/2
- Went from "senior" to lead developer
- Went from 68kg skinny fat to 84kg bulky (I'm 1.84m tall)
- went from bragging self-confident to silent self-confident.

## Track

Here is the single most important change that I made: I started taking notes. Meaningful notes. I use Obsidian as my note app.

- After a workout, I write down my weight, and how much I lifted. Reps, weight, everything.
- When learning a new skill/library, I write down valuable bits of code
- Every morning, I write down about the previous day. What did I do ? How did I feel ?
- Every valuable tutorial/post/video is turned into a new page.
- Tags and [Links](https://help.obsidian.md/Linking+notes+and+files/Internal+links) are your best friends.
- I organise my notes using [this method](https://www.youtube.com/watch?v=Xw3SkhB4dMk) and [this method](https://www.youtube.com/watch?v=hSTy_BInQs8&t=973s)

Taking notes is not only a great way to keep track of your progress, it also tremendously helps your memory. Reading documentation is not enough, you have to write down what you understood, challenge it, and then use it.

Here are the tools I use on a daily basis:
- Obsidian
- Google calendar
- Minimalist phone. Basically turned my smartphone into a Nokia 3310.
- Turned off all notifications
- Spotify. Hans Zimmer is the GOAT to get into a state of Flow. As a matter of fact, I'm listening to the interstellar OST while writing these lines.
- ChatGPT. It's only getting better and better.
- VSCode, zen mode.

And here are the last lessons that managed to reshape me.
- Your job is an extension of your day. Not the other way around.
- Do the things that matter first thing in the morning. There's nothing more frustrating that coming home after a long day of work and realise that you didn't do anything except work. 
- understand that everything that is not an investment is a liability. 
- Keep track of your progress. I use [obsidian tracker](https://github.com/pyrochlore/obsidian-tracker) to keep track of my habits, workouts and so on
- Be benevolent. Your goal should always be to either get better, or help people get better. Which is basically the same.

I hope this post will help you get better at whatever you consider to be important.