My Vision & Me
My name is Simon.
I'm a visionary for software engineering and a pragmatist in writing code. Since my studies I’m inspired by the expressive power of computer science. Numerous processes from the physical world can be simplified with a digital product. The computer is our tool to soon start realizing at low cost. It’s fine if it fails with the first attempt. With an iterative process, constant feedback from users and data-driven observations we can validate our idea early and regularly and improve our development process organically.
During my three years as a professional full stack developer I got the chance to move to the beautiful city of Lisbon. On top of my daily coding time in various projects I became a mentor for new hires. For each new Portuguese colleague I had to come up with an optimal strategy for his on-boarding. My key to success was to be patient to understand his level of knowledge first. I wanted to understand if he is a top-down or bottom-up learner. Then I thought of different ways to explain a subject and visualize it such that my mentee could actively dive into the complexity of a big software system. It makes me happy when people succeed with my support. And it's also selfish: I feel deepening my own knowledge every time I share it.
The amount of acquirable skills in IT are endless. One can get lost. The best ways to learn coding and software engineering is to collaboratively work an a project that matters to you. Information needs a purpose to stick in our brains. That is why I encourage people to learn tech to achieve a certain goal, one that you stand behind. It might be a pet project you are passionate about, or it might be something that is useful for the public or even a company from the very start. That motivating factor is the first key to learn how to connect technologies to a working system.
The second key is a mentor. Information technology its derivatives tend to be complex (at least as complex as the complexity of the problems it solves). The first dive can perfectly happen on the basis of an online course, but soon a mentor to answer specific questions and to guide through a focused learning path becomes crucial. That is why every software engineering company does peer reviews of code and architectural decisions.
The conclusion for working on software in teams is straightforward: If a culture of conveying know-how to team mates prevails, even complex software projects will succeed, simply because everyone stays motivated and is at the edge of the team's proficiency.
For the craft of coding, I’m supporting the following credos:
Explicit is better than implicit
Simple is better than complex
Complex is better than complicated
Recently I decided I'm still too young to stay at one company until all my hair is grey and I started to work as a trainer and freelancer in various fields. Checkout what I can offer for you.
Download my one-page resume.
Technology that I use and still like
The only cliche about programmers that holds true for me is my adoration of coffee. I usually enjoy a Flat White I produce manually by my old-school Bialetti. Definitely a good start into a high motivation day using some of this technologies:
|Golang||Used it daily for my full-time job to build microservices. The language and its great standard library is so easy to learn. I became an expert in this language and enjoy working with it.|
|Python||Used it at university, my student jobs, mostly together with Django for web projects and Jupyter / Pandas for scientific projects. I like it for its diversity, ecosystem and it is still the fastest way to build prototypes or combine existing systems.|
|Docker & Kubernetes||It's my go-to solution for products that demand high development scalability; the only way to achieve this for the long-term is to strive for incrementally updatedable microservices from the very start. When integrating microservices into modern cloud platforms' ecosystem, the main focus should be on clean APIs between services, to the "outside world" and the fine tuning of the services' interaction with the cloud's built-in infrastructure. Over the course of three years, I learned how to make it a rock solid deployment strategy.|
|Google Cloud & Microsoft Azure (managed with Terraform)||I was lucky to work with both clouds on projects scaling to multiple regions. I'm used to having a staged deployment strategy with at least three stages and automated tests to ensure continuous deployments never break the production system. I was specifically involved in configuring cloud infrastructure to enable system tests running over multiple services, both on deployed systems and as part of a continuous integration pipeline.|
|PostgreSQL||Some classic things are here to stay. For most problems, even in distributed microservice architectures, (multiple) PostgreSQL databases are still the best choice for clean data organization.|
|Flutter||In my last project at work, we built a stock receipt management platform interfacing with a Flutter app developed by us as well. The app facilitates the work of thousands of employees. I was code owner for the distributed & offline capable authentication process and ensured its security. I also architectured asynchronous data synchronization mechanics for extensive base data. Currently I'm using Flutter in a pet project where I build an App to democratize transparent food production.|
|ReactJS||My choice for web frontends, at least if I start from scratch. For example, this very site is built using Gatsby, a static site generator based on React allowing me to write my blog articles in lovely simple Markdown.|
|Java EE||In my internship at Ergon I got in touch with the Java EE stack and built a visual configurator with Java Swing and custom extensions. In my first project at freiheit.comj I also used Spring Boot to build a customizable real estate search.|
I worked for
My journey at freiheit.com got extra exciting when I was selected to build up the first international engineering hub in Lisbon, Portugal. The initiative got a huge success and I could outgrow myself in one of my strength: integrating new hires into a highly motivated and effective team following highest engineering standards.
Development of a tool for flexible polls with PHP/MySQL.
Development of an interactive visualization of telecommunication products with Java.
My educational path might be impressive, but I'm more proud of my contributions to this students association, where I helped to scale dance classes to thousands of pariticipants every year by digitizing all repetitive processes. The team backing that association was built by students of various backgrounds and all of them did join the project solely by intrinsic motivation (and some free pizza). Since I experienced this environment of people with a strong common goal, helping each other to push boundaries, I believe every team should carefully cultivate the sources of motivation.
I specialized in distributed systems and programming methodology. My Master Thesis about a static analyser was awarded with the highest possible grade.
My roots are swiss and after Gymnasium I moved to Zurich to start my studies in Computer Science at ETH Zurich. While I enjoyed the diversity of subjects at my beautiful Gymnasium in Wohlen AG, I was eager to enter the world of science and challenges that would really ask for my focus. The first years were tough, but priceless to learn how to get self-organized and tackle any level of complexity.
My work stack
|Text Editor||Visual Studio Code and sometimes IDEs from Jet Brains|
|Terminal||Oh my Zsh|
|Computer||Thinkpad X1 Carbon Gen 8|
|Keyboard||The self-soldered version of an Ergodox EZ Mechanical Keyboard|
|UI Design||Pen & blank paper, sometimes Figma|
|Headphones||I love silence at work, but I do play the violine or the guitar when I need a virtuosic break.|
|Inspiration||This I get from mindful Yoga breaks or by having a swim in the beautiful atlantic ocean.|
The site is hosted on GitLab Pages.