Christian Semmler

Reflections on 10 years as a software engineer

Sep 3, 2020
/assets/images/blog/blog-post-1.jpg
Photograph of The Lone Gunmen in "This" (S11E02, The X-Files)

10 years ago, I started working professionally as a software engineer. Now, in 2020, it’s time to take a look back. In this post, which is more personal than technical, I’m exploring how I turned my hobby into a profession, including examples of both personal and commercial projects, and how my perspectives changed along the way.

/assets/images/blog/blog-post-1-ti.jpg

While contemplating on what to write in this post, it occurred to me that I’ve never made a conscious decision to become a developer at any point in my life. In fact, most episodes of my past which eventually lead up to this moment appear to have been born as a result of random circumstances at their time, rather than deliberate action. Only in retrospect I’m able to discern some apparent connections, an underlying, overarching theme seemingly governing the course of my development. However, instead of losing myself in a never ending, philosophical thought experiment, I want to point out the following:

This post is not supposed to be career advice - or any kind of advice, for that matter. While a thing or two may be learned about me, it should not be taken as a model or example of how to get into coding, in case that is what you are looking for. Instead, it’s a highly anecdotal depiction of a series of personal events (and some decisions) not necessarily applicable to anyone else. YMMV.

Giving myself a sick note at school

/assets/images/blog/blog-post-1-workstation.jpg

I grew up in Germany and attended public schools until 2011 when I graduated from high school. The education system has been a burden for me for many years; A nuisance that I had to endure in order to get legal access to universities at some point, which the general public deemed a prerequisite for future “success” (and I believed that). I already had my passions and interests that I wanted to devote more attention to instead of wasting away at high school. A glimmer of hope came when I turned 18, when I was given the legal ability - which I often took advantage of - to opt out of school at will by writing sick notes. As long as I reached the minimum time of attendance required to complete the class, I was golden - and consequently, I spent more time than ever in front of my computer, hacking on software and playing video games. I did this because it was fun and interesting to me.

These were some of the most exciting and creative phases I can recall even to this date - on a quest to develop a multiplayer modification for Fallout 3 (vaultmp) I learned more about software engineering than ever before; mostly by trial and error, experimenting with various languages, libraries, compilers, debuggers, and a plethora of other tools. Learning-by-doing has always been my primary approach: while I did buy books to subsequently back up my practical knowledge, they never served as a starting point. Curiosity, time and access to the Internet was all that I needed.

A (financial) opportunity

It was in the same year that I was approached by a schoolmate who asked me if I was interested in participating in a software project. I have never worked for commercial gain before and didn’t even harbor the intention to do so in the future until then, but the idea was sufficiently intriguing for me to agree. The compensation was quite miniscule in retrospect, but more important than money was the experiences gained: working together in a team on software to be sold to a client. We did our best, coding every day in a rented classroom which served as our office. With sounds of the never resting coffee machine in the background, we managed to successfully deliver the product on time. We engineered everything from scratch, and even designed a domain-specific PHP framework that provided the basis for the application; a questionable decision, but we didn’t know any better.

/assets/images/blog/blog-post-1-orderpass.jpg

I passed my final exams with little effort and the future seemed clear: I have already taken some courses in the CS bachelor’s program while at high school, so the logical decision was to officially enroll as a student at the university to get my first degree. I applied for the study program and was accepted eventually. In the meantime, on a random evening, I came across a job advertisement on Facebook for a developer position at a local startup. I haven’t been actively looking for a job, but the project sparked my curiosity, so I gave it a shot and applied - despite not even meeting the JavaScript expertise requirement. My application consisted of an informal Email where I outlined my skills and previous work experiences. I was hired shortly after the in-person interview.

The startup’s goal was to design and implement a software solution enabling people to order items off the menus of restaurants & bars using their smartphone (on-site, not for delivery). It involved a web-based (PhoneGap) mobile app for customers, a Java mobile app used to control receipt printers in the background, and a Ruby on Rails app serving as the backend. I haven’t worked with any of these technologies before at the time - and didn’t even own a smartphone. A colleague borrowed me a device so I could get started coding. Most of the work happened remotely at home, we met occasionally but usually communicated using IRC online. The pay was low, the initial investment by private investors was minor, but we managed to develop and release an initial version to the public and even tested the system in cooperation with local companies. Ultimately, we didn’t manage to acquire any further funding. What remained was another batch of highly valuable experiences - and professional contacts that were meant to last.

To drop out or not

Shortly before I began my studies at the university, I had the desire to move out from my parent’s place. Using the money I earned while at the startup, I rented my own apartment and started living by myself. Despite having found a reasonably priced apartment - which was rather difficult considering the town was popular for its university and had a great number of students - the money didn’t suffice, so I applied for a position as a student assistant at the university. I was hired after a short interview.

/assets/images/blog/blog-post-1-uni.jpg

The part-time job consisted of working on various software projects, most notably Stud.IP (student platform) and FlexNow2 (exam management). I developed a number of PHP plugins, enhancing and adding new functionality to the student platform, and improving exam result PDF renders by rewriting XSLT scripts. I also devised a system for managing media files on a remote server using a native C++ Windows desktop application.

I ended up working as a full-time developer, neglecting my studies, which I gradually lost interest in. Part of the reason was that the CS program required me to take part in mandatory cross-discipline courses (of my choice). I had a strong interest in IT and software development specifically, but I was frequently reminded of the situation in high school: being force-fed outdated information of dubious value originating in seemingly irrelevant topics, only in order to obtain a degree.

What did I need a degree for, anyway? I realized this environment was not for me. My goal was to become a better technician, a better engineer, with an ever growing wealth of knowledge and experience. The university did not support me in this goal, it turned out to be another obstacle instead. Despite the numerous warnings of people around me not to do so, I decided to drop out.

To FAANG or not

/assets/images/blog/blog-post-1-google.jpg

The contacts to professional developers I made during the years as a developer now turned out to be a great asset: together with a small, but trusted team of highly skilled engineers, I have co-founded a software agency after my university drop-out, with the goal of developing and implementing highest quality IT solutions for clients from various industries. Our company is 100% remote first, we are working from different places all around the world to this day.

I was also given the opportunity to work at Google. More specifically, the opportunity to work on Google Search and Google Maps, some of the most frequented software in the world. The position promised a FAANG-level salary and all the benefits that came with it. One downside was the necessity to relocate to Ireland. More importantly though, I realized I’d give up the independence and liberties I grew so fond of. In all my previous jobs as a developer I was in charge of business critical elements of the software, taking up significant responsiblity. I knew this would not be the case at Google: likely, I’d just be a tiny cog somewhere in the gigantic hierarchy of executives, managers, and countless engineers and other employees. Consequently, I politely rejected the offer and other ones that came after it.

A house by the sea

/assets/images/blog/blog-post-1-sea.jpg

Taking advantage of the ability to work remotely, I decided to fulfill a childhood dream of mine by building a house near the sea. I moved to Stralsund, a mid-sized town in north-east Germany. Over the course of almost 3 years I managed to find a suitable plot of land and a contractor to build my bungalow - construction finished in 2019. The quiet of a life undisturbed by neighbors who live wall to wall with me, and a large garden to wander at will has resulted in unanticipated, remarkable improvements in my productivity and well-being. I can’t imagine ever moving back to a busy city full of students.

Beyond code

/assets/images/blog/blog-post-1-code.jpg

Next to my ongoing position as a software engineer, I started exploring new hobbies and novel ways to spend my pastime: cooking, gardening, and keeping house rabbits. I can’t overstate the significance of the role of location-independent work in this: it enables me to organize my day freely in ways that would otherwise be impossible. This quality of freedom, to me, has no equivalent in monetary value. I would not exchange it for a billion dollars.

Over the past few years, I’ve found that technical leadership and management is a fulfilling job alongside coding. It adds a level of responsibility that goes beyond the mere technical and promises new challenges that I’m excited to face.

In conclusion it appears the main values I organize my life around are independence - independence of state schools and universities, parents, (large) corporations and employers, landlords, etc - and the desire to continuously take full responsibility for all of my work. My profession turned out to be a vital component of my life; it’s not just a job, a hobby or vehicle to earn money, but a fulfilling, meaningful activity. Here’s to the next 10 years and many beyond!