Drawing parallels between home renovation and software development
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.
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.
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.
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.
Subscribe to new posts via the RSS feed.
Not sure what RSS is, or how to get started? Check this guide!
You can reach me via e-mail or LinkedIn.
If you liked this post, consider sharing it!