Andreas Schwarzkopf
Dipl.-Inf. | Senior Developer and Software Architect |
Team Lead | Mentor | IT Consultant

My name is Andreas Schwarzkopf and i am a professional software developer located in the Rhine-Main metropolitan area in germany.

I live in Hanau and regularly commute to Frankfurt am Main, where i currently work for ioki, a DB company, on a thriving, sustainable and innovative mobility project. My current position is 'Head of Backend Engineering' and i have the honor to work in a setup where multiple strong scrum teams create an awesome software product and everyone contributes and learns as we proceed.
I also run a business, where i develop the cloud based multitenancy web app ChurchCurator, a collaboration and management software for volunteers and churches. I do no longer offer standard development services for customers.
However i still assess projects, give architectural consultancy services and coach teams and project managers. I might offer working on code, if the problem domain is sufficiently demanding and interesting or if you can enthrall me - databases or complex algorithms might be candidates. Finally i usually mentor one or two developers or young professionals.

I am truly excited about my profession; i think the IT world is the most awesome to work in.

Passion for software

From a technological point of view i worked mostly as a Full-Stack-Web-Application-Engineer. As a developer i focus on software architecture, scaling, algorithms and a sound codebase as the foundation of a real world product.
My current toolset mostly revolves around Ruby on Rails backed by a PostgreSQL database. I usually find myself more on the backend side and i like the algorithmic parts best. I've fallen in love with PostgreSQL over the last years and i generally admire the power of databases. Speed, scaling, databases, C extensions, stored procedures - this stuff keeps thrilling me. But there's more about software that makes me love my trade.

Passion for development

There's architecture, which involves topics from design patterns to IT infrastructure, from composition to orchestration, from theoretical requirement analysis back to hands on development. And then there is the development process itself, which is a real big thing: On one hand it is about working in a team with great people following best practices and on the other hand it is about your personal development and your ability to solve problems. While the team always plays an important role, you still often depend on yourself and your skills. It is all about self organization, endurance, the ability to work diligently on a topic, understanding your tools as well as the problem domain, making sound and sustainable decisions, breaking down problems and ultimately it is about finding feasible solutions.

Passion for projects

Finally there is the project with so many facettes: All processes and prerequisites that are needed to succeed. Choosing the right technologies and tools. Understanding the business domain. Estimating time and budget. Hiring and developing people. Making architectural decisions. Requirements Engineering. Leading formally and informally. And the actual project management itself. Bringing a large software project to life is an adventure and i am passionate to learn so much more.

It is about making all the external and internal conditions fit - a great team, with an agile attitude, a visionary leader, the best tools money can buy, self discipline, the hunger and skillset to get the job done. When everything fits together, the rewarding result is a great software product.

CV

2018 – ongoing
ioki GmbH - a brand of Deutsche Bahn AG
Sector: Mobility & GeoSpatial Algorithms. Fullstack WebDevelopment, focus on scaling, algorithms, databases and integrations.
Role: System Architect / Head of Backend Engineering
Achieved: Major extensions on the algorithmic core, massively extending the feature set in close colaboration with mutliple scrum teams, internal and external stakeholders. Leading the backend team through integrations of multiple external APIs, like ticketing, public transport information, payment gateways. Actively shaping and developing the product roadmap with other leads, PMs and the product owner.
Frankfurt a. M.
2017 – 2018
Deutsche Bahn AG
Sector: Mobility & GeoSpatial Algorithms. Fullstack WebDevelopment and scaling.
Role: Senior Software Developer | System Architect
Achieved: Built from scratch; Developing, shaping and scaling the matching algorithm, core business ERM and backend stack including APIs for multiple touchpoints.
Frankfurt a. M.
2011 – 2015
Supervisory Board Member (flinc AG)
Darmstadt
2011
Published Scientific Paper
“Volumetric nonlinear anisotropic diffusion on GPUs”
Sector: Adaption of classical algorithms for massively parallel computing.
Third International Conference on Scale Space Methods and Variational Methods in Computer Vision (SSVM) (May 29th - June 2nd, 2011, Ein Gedi, Israel), LNCS 6667, 2011.
Darmstadt
2010 – 2017
flinc AG
Sector: Mobility & GeoSpatial Algorithms. Fullstack WebDevelopment and Scaling.
Role: Since 2010 Software developer. Since 2015 Senior Software Developer.
Achieved: Built from scratch, scaled > 450.000 users.
Technology & Tools: Agile software development, Scrum, BDD/TDD, REST API, geospatial algorithms, stored procedures and database development, delayed jobs, in memory databases, HTML5 & Canvas, jQuery, Ruby on Rails, Metaprogramming.
Darmstadt
2010
Diploma Thesis
“GPU based nonlinear volumetric anisotropic diffusion filters”
Sector: GPGPU (CUDA), massively parallel computing.
Rated “excellent”.
Darmstadt
2008 – 2009
GSI Helmholtzzentrum für Schwerionenforschung
Sector: Academic Research at the linear particle accelerator.
Role: Student Research Assistant for the working group “Radiation Biophysics”.
Task: Expanding an existing radiation planning software written in C by 4d structures and non-rigid transformation algorithms.
Left the group with an excellent reference.
Darmstadt
2006 – 2007
Lexmark Deutschland GmbH
Sector: Print Manufacturer, Operations Management, Controlling and Marketing
Role: Student Assistant. Development of inhouse database and finance software.
Left with an excellent reference. Started to focus on GPGPU and the diploma thesis.
Dietzenbach
2003 – ongoing
Start of voluntary service at C3 Church Hanau
Sector: Voluntary Service. Supervising teams, team leaders and operational processes.
Started 2003 as a voluntary team leader. Since 2009 “Division manager arts & technical services”, supervising 40 people in 4 departments.
Since 2011 lay pastor. I decided to professionally work and lead in that part of my personal life.
Since 2015 I have a paid part time job at C3 Church Hanau.
2000 – ongoing
Self-employed, IT business „PCT“
Sector: IT Company. Role: Sole Proprietorship. Started with SOHO Hardware and Networksolutions, Simple Customer Service and minor inhouse repairs.
  • Since 2004 Specialized in Webdevelopment & Databases.
  • Since 2005 Cooperation with media- agency MKZ Mainhausen.
  • Since 2007 Hosting and Domainreselling.
  • Since 2008: Development of proprietary Web CMS “ContentCurator”.
  • Since 2014: Cut down of former businesses and started development of a multitenancy web app "ChurchCurator", which is a collaboration and management software tailored to the needs of churches.
Hanau
2003 – 2010
University: Technische Universität Darmstadt
Diploma Thesis on Volumetric Anisotropic Diffusion on GPUs (A), Minor Subject Bionics (A), left the university with a diploma in IT (B). Voluntary focus on IT Security and networks. Optional ungraded studying of Business Administration.
Darmstadt
2002 – 2003
Community Service: St. Vinzenz Hospital
Short assistant job afterwards until university started.
Excellent employers reference.
Hanau
1993 – 2002
High School: Karl Rehbein Schule
High School Diploma rated: “Excellent” (1.8). Main Subjects: Math, Physics
Hanau
1989 – 1993
Primary School: Paul-Gerhardt-Schule Kahl
Kahl a. M.

My Journey
A written overview of my IT career

The early days of my career

I was born in 1982 and at the age of 12 my dad bought me a personal computer. It was an Intel 80286 - and the world changed forever. I "entered the game" another 2 years later: Writing code in Basic and Pascal. DOS died; Windows came. I heard the sound of dial up connections, learned HTML, surfed the NetscapeNavigator at its peak in 1996 and learned JavaScript. I actually earned some really good money working at an early web agency - transforming templates into websites day and night. During the whole "dot com bubble" i still earned my money with web programming, i witnessed AJAX being born, Flash peaking and dying, and JavaScript being revived.

During the late 90s i gradually became a solid programmer: I did all types of interpreted and compiled Basic dialects up to Visual Basic, worked with Assembler, with C and from Pascal to Delphi. At the age of 17 i finally wrote a two component client/server freight planning software for a logistic company in Delphi - and i felt satisfied when this software was actually used by real people. I learned what it felt like to "ship software" and decided to start a solid IT career.

Lessons learned

I see the long road we've come and i have a good understanding of why we are here. A lesson learned is that the constant noise of the ecosystem makes it hard to see the real game changers while they are happening. When new ideas gained traction or paradigms started to change the way things were done, it often didn't feel like ground breaking changes - at least it felt no different than all the other stuff no one would remember one or two years later.
Object oriented programming, for instance, was an academical concept, used in Simula since the 1960's. Classes, instances, late binding, encapsulation. But it was just not relevant for years until its ideas slowly creeped into many existing languages. For me it was switching from PASCAL to Delphi and i can say i was there when it changed everything for the average coder.

My studies

After highschool i started studying computer science at the university of Darmstadt. My studies took place from 2003 until 2010. I added Java to my toolbox, but most working hours were spent with PHP 3 to 5.
I developed something really cool, which did not have a name back then. I used it to edit content of webpages dynamically. I worked really hard on it for over 2 years. When Typo and Wordpress flooded the marked i learned that such a thing was actually called a CMS and i recognized that Wikipedia will never list me as the inventor. But i can cope with that as i still value the time i worked on this project and for myself i consider this to be a true invention - i was just a bit too late. It was then when i realized that my coding skills had to become better and it was then when i learned about things like software patterns.

During the main study period i focussed on three things:

  • IT Security, which gave me a deep insight into protocols and networking.
  • Computer Graphics, which led to an exciting diploma thesis at the GRIS (graphic interactive systems group), where i worked for the first time with the rather young GPGPU technology and solved the three dimensional heat equation on NVidias CUDA framework.
  • Bionics, which was my minor subject. I attended a rather demanding but interesting lecture on radio biophysics. I got into contact with the biophysics working group at the GSI Helmholtzzentrum. These guys, located directly at the ion beam accelerator ring near Darmstadt, were working on research topics around cancer treatment with particle beams. And i had the chance to contribute code to a mature treatment planning software that was written in C - while at the same time diving into a physical/medical problem domain.

Languages, Frameworks and the problem domain

Another thing i learned in those days was the fact that learning a language is not as hard as learning frameworks. I was skilled in C++ and in Delphi but it took me weeks to figure out how OpenGL worked. There were bindings for C++ and Delphi but the framework took way more time to understand and explore.
And there was another dimension to writing purposeful software: Writing a game engine involved some serious math. I realized that for real world problems the language and the frameworks are the tools, but it can sometimes be much harder to truly understand the problem domain. Granted, most of the times you need only the basics of your skillset. But writing outstanding software is more than plugging preexisting components together. At some point you need to solve something on your own.
I have a very special opinion on what a senior developer is and in addition to all the common aspects i have a strong emphasize on the ability to create something truly new for your problem domain. So i learned that many skilled programmers called themself senior developer, but some were more equal than others.

My focus shifted from languages and frameworks to software architecture, problem domains and the development processes.

I also worked two years for Lexmark Germany during my studies. All these experiences led me into the direction of pure software development and contributed to my interest in algorithms, data structures, complexity analysis and filled my mathematical toolbox. At the same time i had gained insight in academic, governmental and enterprise working situations.
At the end of 2010 i left university and joined flinc, a small, visionary start up developing a ride sharing platform. I learned Ruby and became a seasoned Ruby on Rails programmer. During the next years i had the privilege to work with great people.

Where am i today?

My current journey in software development is not centered around languages or frameworks anymore. Learning a language is a matter of hours to days; likewise Frameworks a matter of weeks up to months. Also, the problem domain as well is not my primary focus: I have worked through some tough domains already. My personal focus is on architecture and the actual development process. It is centered around the question what it actually needs to get a product finished with as least dependencies as possible. What it takes to build strong teams. Hiring the right people, using the best tools available, investing in growth. Good software is developed by smart individuals, having bright ideas, strong teams with a clear vision and within sound organizational structures.
This is why i - over 20 years later - still work hands on developing software and leading teams to success. It's just fascinating for me when creativity, knowledge, will and time are poured in a project and working software emerges.