Tag: Career

  • How to Find a Good Hobby as a Programmer (That Isn’t More Code)

    How to Find a Good Hobby as a Programmer (That Isn’t More Code)

    Here is a typical developer evening: you close your work laptop after eight hours of screens, walk two metres, open your personal laptop, and relax by… writing more code. Then you watch a video about code. Then you scroll through other people’s code on social media. Then you dream about a bug.

    Sound familiar? You might need a hobby. A real one. One that does not end with npm install.

    Why programmers need hobbies (seriously)

    This is not just “have more fun”, although fun is great. A good hobby makes you a better developer:

    • It gives your brain background-processing time. Some of my best solutions arrived while doing something completely unrelated. The brain keeps working on problems when you stop staring at them.
    • It protects you from burnout. If your whole identity is your job, one bad sprint can ruin your whole month.
    • It reminds you what learning feels like. Being a beginner at something again makes you more patient with junior teammates, and with yourself.
    • It fixes your back. Your spine was not designed for twelve hours a day in a gaming chair, no matter what the RGB lights promise.

    The hobby matrix

    The trick is to pick something that balances what your job lacks. Programming is high-screen and low-movement, so the best counterweights are the opposite.

    Hobby matrix: screen time versus movement, with climbing, running and gardening in the sweet spot
    The hobby matrix. Aim for the corner your job doesn't already live in.

    Some ideas that work great for developers

    Things with your hands

    Cooking is basically following a recipe (an algorithm), improvising when ingredients are missing (production incidents), and getting immediate feedback (it tastes good or it doesn’t). Woodworking, drawing, LEGO or model building scratch the same “build something” itch as coding, but you can hold the result in your hands, and there are no dependency updates.

    Things that move your body

    Climbing is popular with developers for a reason: every route is a puzzle you solve with your whole body. Running, cycling or long walks are perfect thinking time. Martial arts or dance force you to be fully present, which is a great antidote to a mind that is always half in Slack.

    Things that use a different part of your brain

    Learning an instrument is humbling in the best way. Learning a language (a human one!) pays off on holidays and in remote teams. Gardening teaches patience: you cannot hot-reload a tomato.

    Things with other humans

    Board games, team sports, volunteering, a book club. Remote work especially can make weeks go by with very little real-world social contact. A hobby with people in it is worth double.

    What about coding side projects?

    They are allowed! Side projects can be a wonderful hobby, as long as they are fun and not secretly a second job with no salary. Ask yourself honestly: does this project give me energy, or is it another source of guilt? If it’s guilt, it is not a hobby. It’s homework.

    How to actually find your hobby

    1. Try things cheaply. Don’t buy a 1,500 € camera before your first photo walk. Borrow, rent, take a single beginner class.
    2. Give it three tries. The first session is always awkward. Judge a hobby after the third time, not the first.
    3. Accept being bad at it. You are not here to optimise. You are here to enjoy. Nobody is reviewing your pottery in a pull request.
    4. Put it in your calendar. If it’s not scheduled, work will eat it. Work always eats unscheduled time.
    5. Notice your energy. After a good hobby session you should feel lighter, not more tired.
    Weekly energy chart comparing weeks with and without a hobby
    A rough weekly energy chart. Spot the days a hobby saved.

    Warning signs your hobby has become work

    • You made a Jira board for it.
    • You are tracking KPIs for your sourdough.
    • You feel guilty when you skip it.
    • You are planning to “monetise” it before you’ve enjoyed it.

    If you checked more than one box, step away from the spreadsheet.

    Final thought

    You are more than your GitHub contribution graph. The best developers I know are also climbers, cooks, musicians, parents, gamers and terrible-but-happy gardeners. Those lives outside the screen make them calmer, more creative and much more fun to work with.

    So close the laptop. Go find your thing. The bug will still be there tomorrow, and you will probably fix it faster.

  • How to Become a Better Developer, One Embarrassing Commit at a Time

    How to Become a Better Developer, One Embarrassing Commit at a Time

    There is a special feeling every developer knows. You open code you wrote six months ago and think: “Who wrote this garbage?” Then you check the git blame. It was you. It is always you.

    Good news: that feeling means you are getting better. If your old code never embarrasses you, you have probably stopped growing. Here is what actually helped me level up, from WordPress themes and PHP back-ends to React apps and real-time 3D, minus the motivational-poster fluff.

    Developer confidence curve from Hello World to I know everything to I know nothing to It depends
    The developer confidence curve. Most of us visit every point on it at least twice.

    1. Learn the fundamentals, not just the framework

    Frameworks come and go. I have watched jQuery rule the world, then politely leave the room. The things that stayed useful through every trend: how the browser renders a page, how HTTP works, how JavaScript handles async code, how data flows through an app.

    When you understand the fundamentals, a new framework is just new syntax for ideas you already know. When you don’t, every new framework feels like starting from zero.

    2. Read more code than you write

    Writers read books. Developers should read code. Open the source of a library you use every day. Read the pull requests of the best engineer on your team. You will steal (I mean, “learn”) patterns, naming habits and clever ways of handling edge cases that no tutorial teaches.

    3. Build things that are slightly too hard

    Tutorials feel productive, but they are like watching cooking shows: entertaining, educational, and you still can’t make dinner. Real growth happens when you build something just beyond your comfort zone and have to figure it out yourself.

    • Never built a real-time app? Make a tiny chat with WebSockets.
    • Curious about 3D? Put a rotating cube on a page with Three.js, then make it react to the mouse.
    • Only done front-end? Write the API for your own side project.

    You will get stuck. That is the part where the learning happens.

    Developer skill tree with fundamentals, debugging, reading code and testing unlocked
    Pick your next skill like a game skill tree: one branch at a time, with the basics unlocked first.

    4. Get good at debugging

    Debugging is the most underrated developer skill. Bad debugging is changing random things until the error goes away. Good debugging is a calm, boring, scientific process:

    1. Reproduce it. If you can’t make it happen on purpose, you can’t prove you fixed it.
    2. Read the actual error message. All of it. Yes, even the scary part.
    3. Form one hypothesis and test it. Change one thing at a time.
    4. Shrink the problem. Remove code until the bug disappears; the last thing you removed is your suspect.
    5. Write down the fix and the cause. Future you will hit the same bug. Future you deserves notes.

    5. Ask for feedback (and survive it)

    Code review comments can sting. “Why is this 400 lines?” feels personal. It isn’t. Treat every review as a free lesson from someone who spent their time on your growth. Ask senior developers “how would you have done this?” Most of them love answering, and you get years of experience in a ten-minute chat.

    6. Write things down

    Keep a simple “today I learned” file. Write short notes after solving a tricky problem. Explain things in a blog post, even if only five people read it. Explaining something is the fastest way to discover you don’t understand it yet, which is the first step to actually understanding it.

    7. Care about the user, not just the code

    The best developers I know don’t only ask “does it work?” They ask “is it fast on a cheap phone?”, “can someone use it with a keyboard?”, “will this confuse a new user?” Caring about the person on the other side of the screen turns a coder into a product engineer, and product engineers are the ones teams fight to keep.

    8. Protect your energy

    You can’t become a great developer while running on four hours of sleep and pure panic. Take breaks. Go outside. Close the laptop at a reasonable hour. Some of my best solutions arrived in the shower, on a walk or while washing dishes, never while staring harder at the screen.

    A simple weekly plan

    • One hour reading good code or docs.
    • One small experiment with something you don’t know yet.
    • One note about something you learned.
    • One question to someone more experienced.

    It doesn’t sound like much. Do it every week for a year and you won’t recognise your own code. Which, as we established, is exactly the point.

  • Software Engineering Is Mostly Thinking (and a Little Typing)

    Software Engineering Is Mostly Thinking (and a Little Typing)

    When I tell people I am a software engineer, they picture me typing furiously in a dark room, green text raining down the screen, hacking into something important. The reality is less cinematic. Most days I am staring at a function, holding a coffee that went cold an hour ago, whispering “but why would it do that?”

    Software engineering is not mostly about typing. It is about thinking, reading, communicating and making trade-offs, with a little typing sprinkled on top. After more than ten years of building things for the web, from WordPress plugins to real-time 3D configurators, here is what I wish someone had told me on day one.

    Pie chart of a developer day: reading code 35%, thinking 25%, typing 15%, meetings 15%, googling errors 10%
    An honest breakdown of a developer's day. Your numbers may vary, especially the meetings slice.

    Programming vs. software engineering

    Programming is making the computer do something. Software engineering is making the computer do something for years, while other people change it, the requirements change, the framework releases a new major version and someone in marketing asks if it can “just also do this one small thing”.

    A good rule of thumb: programming is what you do alone; engineering is what you do with time and other people. The moment your code has to survive a colleague, a deadline or next year’s version of you, you are doing engineering.

    You read code far more than you write it

    Every line you write will be read many more times than it was written: by reviewers, by teammates fixing bugs at 6 p.m. on a Friday, and by future you, who will have no memory of writing it and will be personally offended by it.

    So optimise for the reader:

    • Name things like you mean it. data2, tempFinal and handleStuff are cries for help. unpaidInvoices and retryWithBackoff are documentation.
    • Keep functions small enough to fit in your head. If you need to scroll to understand it, your teammates need a map.
    • Comment the “why”, not the “what”. The code already says what it does. Tell me why it does it in this weird way, so I don’t “fix” it and break production.
    // Bad: tells me what I can already read.
    // Add 1 to retries
    retries += 1;
    
    // Good: tells me what the code can't.
    // The payment provider rate-limits bursts, so we back off
    // instead of retrying immediately (see incident 2024-11).
    await sleep(2 ** retries * 250);

    Simple beats clever (every single time)

    Clever code feels amazing to write. It is a little poem only you understand. Unfortunately, it is also a little trap only you can get out of. The best engineers I have worked with write code that looks almost boring. That is the point. Boring code is easy to read, easy to test and easy to delete.

    Before you add an abstraction, ask: “Do I have three real cases for this, or am I building a cathedral for one tent?” Duplicating two small things is often cheaper than inventing the wrong abstraction and living with it for two years.

    Bugs get more expensive the longer they live

    A misunderstanding caught while sketching the solution costs a conversation. The same misunderstanding caught in production costs a hotfix, a postmortem, an apology email and possibly your weekend.

    Bar chart: the cost of a bug grows from design to production
    The life cycle of a bug's price tag. Illustrative, but anyone who has done a Friday hotfix will tell you it's not far off.

    That is why engineering habits that feel slow are actually fast:

    • Ask questions before you code. Five minutes of “what should happen when the list is empty?” saves five hours later.
    • Write tests for the scary parts. Not everything needs a test, but money, permissions and anything with dates absolutely does. Dates are cursed. Respect the curse.
    • Review code like a teammate, not a judge. The goal is a better product, not a scoreboard of who found the most typos.

    Every decision is a trade-off

    There is no “best” framework, database or architecture. There is only “best for this team, this problem and this deadline”. Junior engineers ask “what is the right answer?” Senior engineers answer “it depends”, and then, crucially, explain what it depends on.

    When you make a decision, write down:

    1. The problem you were solving.
    2. The options you considered.
    3. Why you picked this one, and what you gave up.

    Three short paragraphs. Future you will send present you a thank-you card.

    Communication is part of the job

    I used to think the “soft” skills were optional extras. Then I watched a technically perfect feature fail because nobody explained how it worked, and a slightly messy one succeed because the developer kept everyone in the loop. Writing clear pull request descriptions, giving honest estimates and saying “I’m stuck” early are engineering skills. They just don’t compile.

    Ship, learn, repeat

    Perfect software does not exist. Software that is in users’ hands, teaching you something, does. Ship small pieces, measure what happens, improve. A good engineer is not someone who never makes mistakes; it is someone who makes small mistakes quickly and big mistakes rarely.

    The short version

    • Write for the reader, especially future you.
    • Choose boring, simple solutions until you can’t.
    • Catch bugs early: questions, tests and kind reviews.
    • Every choice is a trade-off. Write it down.
    • Talk to humans. They are part of the system too.

    And reheat your coffee. Cold coffee has never fixed a bug, although I have tested this hypothesis extensively.