tamberg's Blog

2011-09-21 by tamberg

Role Models

It has now been ten years since I started working at Oberon microsystems, a small software engineering company, right after finishing my studies in computer science at ETH Zürich. During university, minimizing work hours and attendance did often seem more important than getting in touch with potential mentors. In retrospect this was of course a blatant waste of opportunities to meet interesting people and learn something worthwhile. But, thanks to the engineering-centric culture at Oberon and the exemplary dedication of my friend and colleague Marc Frei, this was about to change for good.

Guided by Marc's deep literary knowledge and his ability to pull out every relevant book, paper and blog post on a certain topic, we became a sort of sect worshipping scientists and engineers: First, there were the pioneers, the undisputed gods in our Olympus of computer science. Dijkstra taught us through his (hand-) writings how not to make a mess of it. Parnas showed us the criteria to be used in decomposing systems into modules and Niklaus Wirth told us to make our programs as simple as possible, but not simpler. We also spent quite some time going back to ETH to see lectures by Don Knuth, Adele Goldberg, Leslie Lamport and Anders Hejlsberg. Oh and then there was that conference in Austria, where we went to hear Tony Hoare, Wirth and Jayadev Misra, but somehow ended up going for a drunk midnight swim in the Wörthersee wearing Brad Fitzpatrick's favorite robe.

Depending on the focus of our work at the time, we also had different "holy" books and authors. Early on, still at ETH, we read a paper by Doug Engelbart describing the mother of all demos. This was probably the first time I understood that passion can arise from reading such papers and trying to grasp their importance for how the world looks today. Later on, in the deep trenches of our daily software engineering work, many more or less practical books and methodologies drew our interest.

Bertrand Meyer's Design By Contract methodology heavily influenced our style of programming and is definitely our most important tool besides modularity. We also devoured Clemens Szyperski's book on component software, Sofwarearchitektur by Siedersleben, Mössenböck's Softwareentwicklung mit C#, as well as Krzysztof Cwalina and Brad Abrams' Framework Design Guidelines and Miro Sameks work on hierarchical state machines. And of course Spolsky. We even named an internal software after him. In terms of tools and libraries there was Lutz Röder's Reflector, Peter Foot's Bluetooth library, Jens Kühner's NETMF libraries and Adam Dunkels' uIP TCP/IP stack.

You might be surprised by the wide range of people listed above, but such are our daily battles that we sometimes look up more to the guy who made it work, rather than him with the noblest ideas. My personal heroes in this respect are the Makers and DIY engineers able to take an invention to the next stage by implementing it in the best possible way. Such as Bre Pettis, Zach Smith and Adam Mayer who built the Makerbot, Jean-Claude Wippler from Jee Labs who builds poetically simple wireless sensor nodes, or Ian Mercer, the king of home automation.

Besides gaining a lasting passion for engineering and other people's work and ideas, we probably also underwent a transformation from being theoretically sound (which goes hand in hand with over-design) to having the right intuition about what's really needed. But then again, there's a lot more people to meet and things to do and learn.