I had the opportunity to do some slight renovation on an apartment.

It was nothing fancy, it involved the following:

  • removing the old carpet
  • removing the wallpaper (surprisingly difficult and annoying!)
  • plastering, filling in holes
  • painting the walls
  • installing new power sockets
  • installing the cheapest laminate flooring

I expected it to take a few months’ worth of weekends. Took over half a year. Oops.

During that time I had a lot of time to think about all sorts of things. It was a nice zen activity for me if we leave out the part where I was physically exhausted, but on the bright side I was mentally relaxed by the time I got back to work. And by the time I was mentally exhausted after a long work week, I was ready to do some physical work.

My previous experience with construction and renovation work is pretty minimal. I have a toolbox, and I’m a tool myself, but that was pretty much it. This experience was characterized by a lot of improvisation and a little bit of googling for the parts where I felt genuinely out of my depth, such as installing the laminate floor.

I realized quite soon that renovation and software development are very similar in a lot of ways. After all, both involve building something and they both contribute to my back pain and deteriorate my dwindling sanity.

Here are some parallels that I observed during the many, many weekends spent renovating an apartment.

Prep work is everything

I did my best to reasonably plan ahead and calculated things like floor and wall surface areas with a reasonable degree of accuracy, plus 10% buffer. That buffer paid off big time.

The part where you have to prepare a surface for plastering and painting is super annoying, but the end result is dependent on this step going well. It’s like planning in software development: if you just start coding and ignore the rest, you will end up with a crappy result.

This part of the job is absolutely horrible. It sucked. Annoying as all hell.
This part of the job is absolutely horrible. It sucked. Annoying as all hell.

Making a few initial up-front investments into dust-proofing a room during renovations is also a wise investment. Learned that a bit too late myself.

Being in the zone rules

I felt it multiple times during the renovation work, sometimes you just get into a groove and the time just flies. It was usually interrupted by my body letting me know that I should probably take a break and eat something.

The right tool can make all the difference

Doing something manually sucks. The speed at which a sanding machine can make the walls nice and smooth is crazy. The feeling is comparable to writing Java in Notepad vs IntelliJ IDEA, one is infinitely more convenient and faster, but costs more in money.

Learning and acquiring new tools is fun

At some point it’s counterproductive, and you’re unlikely to use them all, but nevertheless it’s fun to browse around and pick something new up. Kind of like opening up awesome-selfhosted list to see what else you can put on your home server.

Refactoring

It’s terrible to redo something you already did, but sometimes it has to be done for the best end result.

RTFM - read the fucking manual

I didn’t do this for one room, and it bit me in the butt a few months later with the floor. Oh well.

Prepare for unforeseen consequences

Sometimes you’ll discover an exposed electrical wire behind the wallpaper.

Things that you don't want to see: exposed electrical cables. Aluminium exposed electrical cables? Even worse.
Things that you don't want to see: exposed electrical cables. Aluminium exposed electrical cables? Even worse.

Sometimes removing the baseboard removes a lot of the plaster on the wall.

Sometimes you will trip over the big bucket of water and cause a big mess.

Sometimes you’ll unknowingly drill into an electrical cable.

It happens. Be ready for it.

Makita makes some good drills, but they are a really poor substitute for a light switch.
Makita makes some good drills, but they are a really poor substitute for a light switch.

Estimates

I blew past any pessimistic estimates that I set up for myself, mainly because of the fun little surprises I had during the construction work.

Tech debt

I knowingly left some work unaddressed because tackling it would’ve required a significant time and money investment. It’s fine, we’ll get to it later, I promise. With one area it has been working out fine, but in other area I am starting to suspect that doing things the proper way would’ve probably been a good idea. It is what it is.

Professionals are expensive

And for a good reason. I’m starting to think that hiring one would have helped avoid a lot of the headache, but then I would have missed out on learning things myself and learning more about the history of the apartment.

Hourly rates are high in both construction and software development, unfortunately.

You can cut corners

In construction, literally.

With the hallways, I could not be arsed to do everything properly there as well and did things a bit differently and more creatively, and it turned out okay. MVP mindset!

Professional guidance can be invaluable

I asked a local electrician for opinions on the electrical wiring, and ended up getting valuable advice that saved me a lot of potential headache and additional construction effort.

The big difference

It would be unfair of me to discount the back-breaking effort that goes into construction and renovation work.

In software development, you usually don’t end up maiming or killing yourself. I cut myself up accidentally a few times, but luckily it was not that drastic. Even managed to avoid being electrocuted, somehow.

Other observations

I love Torx screws now. Never had a stripped screw head with those, but I had at least 10+ with the normal Phillips heads. The Torx heads have numbers in them, so it’s very difficult to accidentally mess up.

Cutting baseboards is my least favourite activity, I can never get the cuts right even with guidance and hand tools. A table saw would have probably helped a bit, but I don’t yet have one.

Closing thoughts

It was fun to learn something in an area that I don’t usually dabble in. It felt incredibly rewarding to take a room that was kind of crummy and turn it into something nice-looking and livable.

I made some mistakes, but I see them as a very valuable learning experience that I will hopefully get to utilize when planning and building my dream home, with a garage, workshop, server closet and a great sauna. I love building, I love learning, and that explains my passion for software development and self-hosting very well.

It was also good to work on a project with a set goal. It’s unfortunately very often the case in software development that you’ll have a project with non-stop work. No matter what you achieve and where you get with the project, more work awaits. Always. There is little time to regroup, reflect, and be satisfied with what you’ve achieved. There is no set end point. With renovation, I finally felt that, and I wish to bring more of that into my day job.

After all that effort, software development doesn’t sound all that bad, even if it has some existential issues around maintenance, security and the freedom to do whatever you want with your devices.