Programming as a trade.

I had the following (paraphrased) conversation with my Master’s Thesis advisor.

  • (Prof) How would you become a master carpenter?
  • (Me) Ehm, what?
  • (Prof) I mean how can you become an renown expert in the field of making chairs.
  • (Me) Well, I guess, I’d start building a shitload of chairs?
  • (Prof) Well, let’s make chairs and start sitting on them..

It hit me after a few days, after I worked on, delivered that “chair”-slash-code, and got feedback on it when it was used.

Software Engineering is a lot like carpenting.

  • It’s a trade, and there are several ways to do it.
    Some carpenters cut and join parts, others prefer to sculpt wood. People have different kinds of expertise, and it doesn’t make sense to pigeonhole yourself into a specific niche. Try stuff out, challenge your views, and get out of that comfort zone! That’s the reason I started learning LISP.

  • In the end, you’re working with wood.
    You might work with planks, boards, joists, two-by-fours, four-by-fours, pine, oak…
    But looking past all that, you can’t escape the fact that it’s all wood. That motivated be to actually learn C, so I could get a better understanding of a lot of lower-level, underlying things about computers.

  • Use the right tool for the job.
    Surely, it doesn’t make any sense using a power drill to cut a plank.
    Plan ahead. Do your research, identify the problem you’re tackling and the possible paths to get a solution.

  • Know your tools.
    How would you feel about a professional carpenter saying “Wow, I never knew I could configure the cutting angle on my saw!”.
    There’s no excuse in not taking some time to accustomize yourself with your toolset, so that you can use it as efficiently as possible. RTFM has never been easier!

  • Work with a purpose
    For some people carpenting is fun in itself, for some not so much, but most will agree on the benefit of having an end goal in mind. Build stuff, showcase them to your peers, let others people to use them to get some feedback. Talking theoretically about the benefits of woodworking practices, reading books, contemplating the best type of wood to withstand heat and humidity; all of this is useful, but at some point you actually have to go out and make something useful!

  • Theory vs Practice in the Real World
    Reality has a surprising amount of detail. No matter how much you plan beforehand, when you actually start building your roof or deploying your server, things will break, and you have to display some adaptability. Remember to measure twice, cut once.

  • Having a mentor makes things .so. much easier.

Conclusion

That’s all. We’re all bad programmers, carpenters, plumbers, but hey, we’re still learning!
My personal goal is to keep going “out there”, getting inspired by other people that are constructing all kind of weird and beautiful items, from hand carved wooden figurines to wooden skyscrapers, and having fun!

Written on May 17, 2018