From Biochemistry to Software Development

From Biochemistry to Software Development

Depending on how I count it, I’m now working as a software engineer for either nearly seven or nine years. Sometimes, when I talk to colleagues or people in the same field, they’re rather surprised when they find out I never studied computer science or was formally trained in coding and software development. Sometimes colleagues forget this, even when they know it.

I also met a lot of people who also didn’t start out with computer science and still ended up in software development. I always find it interesting to hear their stories. I also don’t keep my story hidden. I even talked a bit about it in a podcast episode of my current employer. I still don’t know if this was one of my best moments. It felt too short and too long at the same time, too less reflected, and it wasn’t really well-prepared/scripted on my part. This post will be hopefully much more reflected and focus on my way towards software development and also in it.

Before we dive in, let me state this explicitly: If you expect an article on how to best change your career to become a software developer, this will not be it. This article will describe my way, and maybe you can relate to some parts. I will also put a section in it where I try to reflect on the skills which helped me make this career change. It also serves thrice purposes:

  • Telling my story to you
  • reflecting on my way for me
  • saying thank you

So, let’s begin at the beginning. I do have to tell you a bit about my childhood, youth and generally my CV. Because without this, it feels rather incomplete. I will do my best to not turn this in memoirs.

A privileged childhood

The older I get, the more it becomes clear to me, how privileged my childhood was. First, I’m cis, white and male. This goes as long way when interested in technical or science things, especially as child. Further, I did grow up in a home where we didn’t had to worry too much about money. My father was kind of an IT-Professional, even when working more as an accountant and later on as a managing director of a special-interest weekly paper. To put this into context, I talk about the time from 1980 to approximately 1995. He was also reading a lot of science-fiction. Generally, my parents were rather liberal and encouraged us to think for ourselves and make our own decisions. In short, they were very supportive.

I did start early to read science-fiction as well. This got me interested in astronomy and science. And before knew, my father took me to a community college (Volkshochschule) course on astronomy — if I remember correctly, I must have been younger than 14 at this time. We also started to do some astrophotography together. Around this time we also had some computer hardware at home, which I used mostly to play games. Things like a Commodore-64 with tape storage. Later we also got Datex-J access for BTX at home. I still don’t know if my father used it for working from home.

I think you get the picture, a lot of nerdy stuff at home, interested in science and science-fiction, supportive parents. This was rather privileged.

A privileged youth

But it didn’t stop there. Getting older my astronomy interest wasn’t compatible with social life anymore, and therefore actively practicing it whittled away. I started to read more and more books on physics and got more and more interested in PCs. To be honest, my biggest interest was to play games on the PCs. But as it was during these times around 1995, the experience wasn’t so smooth sometimes and one had to learn at least a bit on how computers worked. I learned about memory, drivers and how to tweak a DOS system to have more memory available. Later the OSes got easier to use, the games easier to launch, and suddenly there was network gaming. I shared an interest in gaming not only with friends but also with my father. So there were LAN parties using coax-cable, learning about network protocols (at least the names) and features. There was much less abstraction than today. And being exposed to such things nurtured my interest into them.

Regarding computers, we learned little in school at first, besides being forced to learn typing (way to late, I already had my own system) and the use of office software to write a letter. This changed when I finished secondary school (Realschule) and switched schools to get an Abitur (general qualification for university entrance). My choice fell on school with a rather technical curriculum. I had to learn things like technical drawing, bits of metallurgy, bits of electrical engineering. In short, a lot of engineering things. We also learned TurboPascal and generally how computers worked. Of course, there were also courses on logic gates and how to create circuits. And did I mention my father was occasionally doing some coding at home? In C? And worked also with an SCO Unix, OS/2 Warp system and later on Linux? So much exposure.

We also got internet access rather early at home. Therefore, I’ve got kind of a head start, again a privilege. I even got kind of my first professional project around 1998. For a dance school I was frequenting I created their first website. And also my first Java applet. Databases were expensive at that time, and we wanted for the customers to be able to reserve courses online by sending mail and being able to update the courses without having to re-write HTML all the time. I can’t say I did know what I was doing. But somehow it worked. And I had never pay again for courses myself. I was also exposed to web-hosting and different browsers, well Netscape and InternetExplorer.

The pivot

Around 2000, when I was about to finish school, the question came up what to do next. It was clear to me to go to University. But what to study. Up to now I was primed for either Physics or Computer Science. But somehow I didn’t want to. I’m not sure why. So I started to search. Somehow, I stumbled over ‘molecular biology’ and that this would be possible to do after a physics diploma. Well, that sounded interesting. I read up about it a bit and decided to study Biochemistry. Because why not doing something totally new. Finally, new things to learn!

Study of Biochemistry

Well, what should I say? The chemistry of life, it still blows my mind sometimes. And so much to learn. Chemistry, physiology, biology, cellular biology and also a bit of bioinformatics. It was a lot to learn. And it was complex. In fact, it was also way too much to put it all to memory, at least for me. Instead of commiting facts to memory, I’ve started to look for patterns and connections. Luckily, I found this rather natural. Around the 2000s was also the time literature databases and online papers were available. Yay, more exposure to the Internet. During my studies, I toyed with the idea to additionally start to study bioinformatics. But there would have been the need to take more math courses. And at that time I didn’t want to do this. Now I regret it sometimes.

During this time, I never lost my love for Linux. I still remember the weekends when my roommate wasn’t around, and I could use both ISDN phone lines to download the linux kernel source code overnight and configure and compile it during Saturday. I maintained my own website and toyed around with computers in general. Well, there was also such stuff like telneting into random SMTP-Servers to send mails, trying to break things and understand things.

A botched PhD and more IT exposure

After finishing my studies of biochemistry, I was set to do a PhD. Well, it was the natural course of action and what else should I do anyway with a diploma alone? I picked a position with an institute of virology, working on one of the Herpesviruses. Interesting times, I learned for myself I’m not very good at doing manual work where I have to concentrate all the time. Guess that it had it share in not finishing my PhD. For sure, there were also other reasons. After six years, it was finally over. And I was glad. And a bit sad. But wow, what did I learn during this time:

  • tenacity (ever made an error and had to throw out weeks of work and then start over?)
  • a lot of uncertainties in complex systems
  • a lot how to handle complex systems
  • how to work with people
  • how to network with peers
  • how to digest information quickly
  • how to integrate information
  • how to do statistical analysis with R
  • how to design an experiment, including how to use indirect readouts
  • how to be in kind of not-trustworthy community where everybody is out for personal gain (don’t get my started at academia and the incentives set there and what is wrong with it)

During this time, I also found myself in charge of a website for the graduate program I was taking part. My partner at that time was doing technical writing and had a background in IT. I also got involved (shortly) with the “Piratenpartei”. Guess what, a lot of people from IT. I played a geolocation-based game and met again a lot of people interested in IT in general. An acquaintance persuaded me to go to the Chaos Communication Congress with her and some friends. The next year another friend took me with him. (Sadly, this was the last time I went.) So much exposure. Not only to technical things but also to people thinking about sociotechnical issues. Still, one sentence stuck “Do not try to solve a social problem with technology only.” I felt at home with most of these people. Much more as with the academic community.

A phase of orientation

There I was, no job, a broken relationship and PhD not finished but in the need for money. So I took a job as an inside sales accountant. What a glorious term to glorify a better call center work. I was selling B2B cell phone contracts. Not enjoyable, but I still did plan to write my thesis (which I did and then got stuck in the review process and didn’t find the energy and will to get unstuck). Besides learning what I didn’t want to do, I learned I enjoyed solving the customer problems or analyzing their contracts and usage to custom tailor a new one. Sadly, this wasn’t what I was paid to do. This didn’t end well.

But it wasn’t all bleak. I found a new partner. She was working as a software developer and later on as a scrum master. This gave me again much more exposure to the world of software development. Further, after the sales job, I was entitled to Arbeitslosengeld (social transfers) and also in psychotherapy. This was a necessary break to think what to do with my life. And this was also the time I decided to switch careers and navigate more towards something with IT. My partner and friends encouraged me. The Arbeitsamt (employment agency) not so. I was thinking about getting a formal education as a software developer. In Germany, there are these so-called “Ausbildungsberufe” and application development can be one of it. In the end, it turned out I arrived at a good time at this point in my life. After a few months of unemployment and therapy, I was ready for a change. And I got lucky. I found a job offer from the “DKMS Life Science Lab” in Dresden. They were searching people with a life science and technical background. And I had both. Life science by training, technical by hobby, and it may sound strange, also by school.

Liquid Handler, Databases, Automation and me

Being unemployed while preparing for a job interview has its advantages. They were hoping for PL/SQL experience. While I had some idea how SQL and relational databases are working, I decided to really prepare for that interview. And I did pass. I did even pass the practical test writing some complex, analytical queries. I got the job. Little did I know what would happen over the next years.

I learned to program liquid handlers, how to write programs for them with the technicians using this system in mind. I learned and explained how important user acceptance tests are, how important test environments are. We migrated from SVN to git, and I kind of spearheaded the education on it. I introduced (more) foreign keys, learned and lectured about database normalization. I learned how to use technology to actually solve problems. I also learned I had a knack for structuring and analyzing processes. And thanks to Geoffrey Behrens, I also learned to realize when I was too harsh on myself or others. Thank you!

It was a bit of a wild ride, and I have to tell you a bit about it.

Geoffry and I used Python and Cytoscape to parse and analyze some of the programs we wrote for the liquid handlers. Goal was to clean the programs and shared parts up. I used Excel and VBA to automate some calibrations we had to do once in a while. This included using Excel to get the results directly from a device.

While working there, I also learned C#.NET. I used Udemy courses by Mosh Hamedani. He not only explained the syntax, but also Entity Framework and the importance of tests and concepts like dependency injection. I soon used this new skill to write a log watcher tied to an alert application to raise an alert if one of the devices had an error. I still feel sorry for the people who then had to maintain this. After all, it was my first real C#.NET project. And I had no one helping me with it.

There are two more things I have to write about the things I did there. Most of the devices supported only VBS to connect external systems to. This was mostly used to write directly into a database. I started to write tests for these VBS and we introduced VBSEdit as an IDE. And, when I already had quit, I introduced C# COM interop to allow VBS to call C# code which in turn could do more complex stuff, like calling a WebAPI and do some transformations. I was able to do the basic workshops and create the first framework implementations. As far as I know, it was still used at least a year later. I’m quite proud of this, I must say.

During this time, I also was exposed to machine learning and decided to learn a bit more, this time using Coursera. I toyed around with writing an Alexa-Skill for the local public transportation. Further, being in a long-distance relationship prompted me to write a Python script querying Sparpreise for the Deutsche Bahn and email me if a fitting and inexpensive one was found. This saved quite a few bucks.

But enough of me, this would not have been possible in every organization. We had a very trusting CTO, and there was a lot of trust in the team. Also between the team I was working in and the technicians working in the laboratory. And I had a lot of freedom. This helped a lot. It also gave me self-confidence and a feeling of self-efficacy. I got really lucky, I think. This was one of the turning points in my life.

Becoming a Software Developer

As mentioned above, I was in a long-distance relationship. After a time, this had to change. So a new, self-confident me started to search for a full time software developer position. And I was rather surprised having three offers in a short amount of time. One was kind of catastrophic, but would have allowed me to stay in the laboratory field. The other two were both nice. One was in a small company, just about to scale up, I would have been one of the first hires. The other one in a bigger company, already established on the market. It was hard to decide. I chose the bigger company as I was hoping to learn more and faster when there were already more people involved.

I was right, I did learn a lot. I met some great people there, among them Nadja Deuerlein, Florian Irmert and Christoph Neumann. However, the culture wasn’t one I could thrive in. Too less freedom, too less responsibility, too many fractions and too much friction. However, I did learn a lot. I’ve read books on SOLID principles or dependency injection and had some great discussions. And also used a lot of Pluralsight courses. I learned about team dynamics and how they affect me and my behavior. And realized how important social skills are. For various reasons, I decided I need to quit. When I quit, Christoph gave me a copy of “The Phoenix Project” by Gene Kim. Reading this book opened my eyes. While I already was introduced to an incremental and agile type of work, this book brought so much together. I’m very grateful for that gift. This book was kind of an awakening.

Michael Knorr deserves a special mention. He pointed me towards the Softwerkskammer Nürnberg. A community centered around software crafting. The meetups really helped me learn more. Thank you, Marco Emrich for organizing them! Without this community and Michael pointing me to it, I would not be where I am today.

Switching gears and stacks

Looking for another job was actually not very difficult, but I took my time. I had companies not wanting to hire me because they thought I would get bored and run away after two years or so. Other ones had just not good enough offers. Or I spotted red flags when visiting the teams I would have to work with. My partner mentioned the company I’m working for right now. I didn’t feel that confident in applying there. Consulting company, looking more for Java/SpringBoot developers — it didn’t feel like a very good match. Nevertheless, I applied, got through the technical interview and prepared for an on-site interview by setting up a kubernetes cluster at home, reading about SpringBoot and JHipster. These were the unknown things mentioned in the interview. This is something I really like about software development. A lot of the tools you can try at home don’t cost much or are free. You need some halfway decent hardware and time.

Being in the new job, I got lucky again and was assigned to an internal team developing software for a client. COVID hit 6 weeks in the new job. Fantastically, this changed not much as the team was remote anyway. We soon started a second project which was, for various reasons, a perfect learning project for me. I had to learn many things fast: SpringBoot and Angular. And I somehow took some technical responsibility in this project. It just happened. I’m very grateful for Thomas Berendt and Ralph Reithmeier to be around when setting out on this endeavor. And I’m especially grateful for Patrick Prill. When he joined, we could pick up speed. Not only is he a skilled tester, he is also a system thinker. Also, we kind of were often on the same page. That gave me a lot of self-confidence. Well, the project wasn’t exactly a great success, for a lot of reasons. Some outside the influence of the team. Sadly, Patrick left the company during this project.

But projects end and new projects start. In my case, part of the team I was working with also changed. With Patrick gone, there was room for Constance Armitage to join. I really enjoyed working with her and learned quite a bit of soft skills and awareness from her. Sadly, she left as well in the meantime. We also got a new product owner for this new project. André Lauterbach, actually an enterprise architect, took on the role. André thought me a lot about standing my ground, picking my fights and argument my decisions, also on defending team decisions. While we often disagreed on the style of the discussion, we didn’t disagree on the fact a discussion was needed. Besides that, André encouraged me to further learn concepts, and as I heard later, he advocated for me in the background. Thank you for this and all the other things I had to learn in the time we worked together.

Being called Senior

Well, there I was. Suddenly got the label “senior” attached to my job title and earning more money. While I still give little about labels, the extra money was nice. It also showed appreciation. André left, the team was shrunk, but the project continued. With Julian Traut a new product owner came. The project continued. But there was change: Julian is a totally different product owner than André. He gives the team much more responsibility and expects the team to think and also to be part of product decision. We all had to learn how to handle this change. I felt a bit like back im my job at the DKMS, clear guidelines but a lot of leeway when it came to the exact solution.

In the meantime, I’ve decided to try and get rid of the feeling to be an imposter. I decided to take on advice André gave me, I decided to start doing certifications (you can read about them in this blog). Not for the CV, but for me and my head. It helped, but sometimes the imposter syndrome still strikes.

Onwards

And again. There I was. Work was okay. People at work also. COVID was over, the in person meetups of the Softwerkskammer were starting again. I had learned a lot in the last years. But what now, should this be it? Well, it wasn’t. I still had contact with Thomas. In 2023, we decided to share a room and go to the SoCraTes conference in Soltau. What a blast. I’ve met so many great people there, learned a lot in a couple of days. You can read about it here. This conference gave me so much energy and ideas. I do have to single out one person I’ve met there. Thank you, Lisi Hocke. Thank you for your openness and willingness to listen and talk. Without you, this blog would have fewer articles. Without you, I would not have even dreamt thinking about a taking on a side project. And of course, thank you and Philip Zug for starting to work on the SecCard-Game. This had a tremendous impact on me.

In 2024 again, a new project started at work. This time I took more responsibility from the beginning. I again defended team decisions and felt much more comfortable in facilitating decisions, and sometimes taking the lead. I also went to the SoCraTes conference again. This time it was different, but again it gave me a lot of energy and things to think about. Who knows what will happen in 2025. I may take on more leadership, I may try to give something back to the community. Who knows, certainly not me. It also feels like I will circle back to the times when I was thinking about the social impact of technical solutions.

Skills which helped me

As written at the beginning, I grew up with computers and electronics around me. In school, I also had some basic education on computers, electrical engineering and also programming. Sometimes it feels like the study of Biochemistry was just a detour.

The basic understanding of how computers and networks work did go a long way. I’m sometimes still surprised of what I know. Learning to program in school helped as well. The study of Biochemistry also trained me thinking in concepts, networks and dynamic and complex systems. It also trained me to accept uncertainty. And to work empirically. My time at the DKMS helped me to work in a regulated environment using technology to solve problems. And also to solve problems together with the people having them.

How did I learn to code professionaly?

Online courses, books and peers. And solving problems. I didn’t care too much about the language or tooling I had to use. I think my first encounter was C in my youth and then TurboPascal. When learning to code in a professional environment at the DKMS the basics helped a lot. Later on, reading existing code helped. Also code reviews, both giving and getting. Reasoning in a group or in a pair also does go a long way.

What surprised me the most

People. Communication and people are everything. Without it, the software one develops will be no good. I kind of suspected this already, but I’m still surprised at the extent this holds true.

Missing ethics. That may sound harsher than it is meant. Working with living things and with the building blocks of live during my biochemist part of life always had some sort of ethical implications. Or at least they were never far. While those discussions are present in the tech sector, it feels like we aren’t there yet.

Community. In general, the tech community as I experienced it is very welcoming and helpful. The bubble I’m part of is also very open and understanding. I truly wish this would be the norm throughout society. And I’m grateful to be a tiny part of it.

What do I like the most?

The variety of tasks and the constant changing field. So much to learn. So much to try. It never gets boring for long.

Do I have advice?

If you want to get into software engineering, there are so many paths.

Obviously, it helps if you learn to code. But which language or which framework? To be honest, I think it doesn’t matter much. Pick a problem and try to solve it. Maybe write a macro for a game you’re playing. Try to scrape a website for information. Build a small website. Just start small. It will get bigger fast.

It also helps if you learn how to use git and a command line (at least don’t be afraid of it).

But most importantly, learn to reason aloud and explain your thinking. Learn to listen to people, be respectful, embrace diversity. Polish your social skills. Learn to say “I do not know.” when you don’t know. Experiment. Be curious. This will take you a long way.

A note on the thank yous

Some people are mentioned by name in this article. I most certainly forgot a lot of people I’m thankful for. Or didn’t thank some people enough. I owe thanks to all the people I’ve met in my life. Some more, some less.

When it is something I learned besides work-related stuff: You’re nothing without the people you’re interacting with. Interacting with people can be tiresome, but it is the only way to really grow. In all aspects of life. And it is very rewarding to grow together or see people grow.