This continues from part one.

First job and the discovery of teamwork

My first job was doing Java at an “e-commerce” firm. I spent some time churning out alone large amounts of code, and quickly understood that this must be the most inefficient way to deliver software. As cool as having the laser focus of the “lonely cowboy coder” is, you can achieve much more when people don’t see you as the hermit guy with the red stapler from Office Space but are instead enthusiastic about working with you and you are enthusiastic about working with them. Few years later, when I joined a really strong team at a company doing mobile call processing software, it felt even more true.

Several jobs and teams later, I still can’t really point my finger on what constitutes a great team. It may boil down to having some common ground with your colleagues, which leads to you quickly understanding each other without the need to resort to corporate speak, but I don’t know what is it.

Algebra and the rediscovery of abstractions

Turns out, reminding yourself about the math you studied in the university several years after graduating is a good way to boost your programming skills. I came back to abstract algebra recently and it feels like it’s worth it (for recovering programmers, this book may be a good introduction). Surprisingly many problems in very different domains can be expressed using a semiring or similar structure, which gives you lots of room in how you can reason about them. I, essentially, learn to write as little code as possible to achieve the same goal.

It looks like I’m not the only one out there trying to reach for this goal. Forth people have long ago discovered the usefulness of programming with as little as possible. Languages with strong type systems can help achieve the same goal.

This part is very much a work in progress, but one thing is clear to me: the problem of composing large pieces of code together without driving your development team crazy is both important and not solved. I saw many companies working with large code bases throw lots of manpower at it and I definitely would like to get better at dealing with it. It’s now fifteen years since I’ve started working in this industry — here’s for the next fifteen!