Tales about Aviation, Coaching, Farming, Software Development

Professional experience of Stephan Schwab

Based on my first lines of code written in the early 1980s and first publication in Computer Persönlich I’ve been honing my skills in software development and business since then.

My passion is software development in multiple programming languages and thanks to my demanding clients I keep up with current technologies being it languages, frameworks and also networking, operating systems or operations topics.

My work, on an international level, gets me in touch with many different national and corporate cultures. That allows me to see the bigger picture, provides me with a large arsenal of tools and therefore makes me able to solve difficult situations in a novel way.

A good example to illustrate some of my more special experiences is this story:

I taught a young developer in China at Huawei Behavior-Driven Development in Python using the framework Behave. She did not speak a lot of English and we were communicating through a translator who was sitting between us. As I was able to show in code what I was explaining in English - the translator turning my words into Mandarin - my coachee quickly understood the concepts and we were able to deliver a valuable service to her team.

Phone +49 151 6162 3277

sns@caimito.net

Availability

I am available for short and long term engagements for clients anywhere on the planet through one of my legal entities. Remote work is preferred but travel on short notice for a good reason is absolutely possible. I operate out of a well equipped office with high-speed Internet via Starlink and Internet safety measures are also in place.

Both of my legal entities do other business activities and also have employees independently from my own consulting/contracting work. Caimito Agile Life SL runs a farming business in Spain. Details are at https://www.caimito.eu. When I am not personally engaged with client work I contribute to these ventures. That also provides great opportunities for learning new things that my future clients can then benefit from.

Caimito Agile Life SL
Caimito Agile Life SL, registered as a limited liability company in Spain, does business within the European Union. Invoices are sent VAT free (reverse charge) and in Euro. The same goes for credit notes from agencies.
Caimito Services LLC
Caimito Services LLC is a limited liability company registered in the United States of America and does business in US Dollar for clients outside the European Union. For US clients Caimito Services can offer contract work on IRS 1099 basis.

Overview

Since the 1980s I have used a larger number of programming languages and countless tools and frameworks. I’ve seen methodologies and ways of management come and go. I have conversations on a daily basis in German, English and Spanish.

I successfully avoided to distance myself from the work in the trenches and always make sure to stay a capable software developer. At the same time I have extensive business experience and knowledge on an international level. To my clients I can be a team member but also an advisor.

In my engagement history I mention technical things that I have personally used and can use any time again. However, it is not difficult for me to pick up something new within a few days or weeks and rise quickly up to the expert level. After all that is what is expected on coaching engagements.

Everything that is mentioned on this page is what I have deep and personal experience with. It’s things that I have done and not delegated or have just been part of. Over the years a few technical things have stayed with me: C/C++, Java, JavaScript, HTML/CSS, Thymeleaf, event and messaging architectures, Docker, Linux, MacOS, TCP/IP networks

Roles

Throughout our lives, we all play various roles over time, and no single role is truly superior to others. As humans, we aren’t merely cogs in a machine; our ability to adapt is one of our greatest strengths. It’s important to move fluidly between different roles and stay connected to the real world.

Software developer / engineer role
As software developer / engineer I deliver a technical solution, alone or as a team member, using a wide array of tools, languages, and frameworks.
Management or team coaching role
Management is the art of setting boundaries and constraints to allow smart people to find solutions to problems in a self-organizing way. I can translate business problems into terms that highly skilled individuals in the technical domain can understand and act upon. Technical coaching (embedded) of team members is an effective way to achieve this. Approaches like Kanban, Lean, Scrum, and adaptive agile software development rely on such a role.
Advisor or coaching role
I make my extensive knowledge available to people in leadership roles and can also interact as coach for management and team members. That includes hands-on demonstrations or prototyping of potential technical solutions.

Agile Coaching

Unlike some of my peers in Agile Coaching I have never stopped programming personally and so I can do for real what I talk about. In every engagement that ability earns me quickly respect and people like to take my advice as it comes from the trenches and not from books or lectures.

I help CEOs and Department Leaders to improve value creation and cohesion within their organization. The outcome will be higher quality, customer delight and more revenue.

Agility and self-organization require technical competence. Scrum, Kanban and other frameworks and concepts do not work without technical abilities. I help everybody involved to acquire or grow these abilities.

My contributions help the organization to become more adaptable and more resilient so that it can prevail in global dynamic markets that are constantly changing.

Engagement History

Developer

2024, Caimito Services, USA

Development of an agroforestry planning and design tool. ChatGPT is used extensively for research about plant species and their properties as well as a means to speed up development tasks. GitHub Copilot in VS Code helps to quickly prototype the application. The development approach is trunk-based development with git commits and pushes directly to the production environment.

Technologies used: Spring Boot, Thymeleaf, htmx for HTML5/CSS3 frontend instead of a framework, ChatGPT

IoT Developer

2024, Caimito Agile Life, Spain

Evaluated, planned and installed IoT gateway and end nodes to monitor soil humidity, temperature and conductivity to provide automated irrigation to a Miyawaki style forest co-financed by the European Union's LIFE program (via LifeTerra foundation).

Created dashboards and automations for power monitoring, to control water pumps and other devices. Did the electrical installation and software. The system is solar powered and off the utility grid.

Technologies used: Internet of Things Network, LoRaWAN, NPC, BLE, Home Assistant, Dragino, Milesight, Shelly, and SMA devices

Magic Link Demo

Magic Links are a simple way to allow authorized access to a website without building a full-fledged user management system. This code repository shows how this can be implemented easily:

Demo code on GitHub

Product Designer and Developer

2022 - 2023, Caimito Agile Life, Spain

CaimitoEU is a frontend application to promote an ecosystem restoration project in Andalusia, Spain. The application contains a shop for packaged products and also an innovative butcher shop to facilitate the sale of fresh Iberico meat.

It is written in JavaScript with VueJS (version 3), HTML5 and CSS3 for styling. After a bad experience with TailwindCSS the styling was redone in pure CSS3. It is deployed as a Docker container with an NGINX reverse proxy in the front and for handling SSL encryption. CaimitoEU consumes an API provided by GranjaEU and does not have local data storage.

Secured via Keycloak, CaimitoEU calls the backend API REST endpoints authenticating itself as a service account.

To process payments PayPal is integrated. CaimitoEU displays information in English, German, Spanish languages via vue-i18n and some Vue Router tricks to redirect to language specific pages for larger content.

Build and deploy happen via GitHub Actions to a staging and production environment. The multi-stage build includes Cypress UI tests and also Cypress smoke tests before a candidate container is marked as ready for deployment.

More complex features that take longer in development are controlled via feature flags in order to make them visible in the staging but not in the production environment.

GranjaEU is the backend API for CaimitoEU and also a small-scale ERP system for running a farm which is being used daily by the workers of Granja Caimito.

The backend API is coded in Java with Spring Boot. It exposes REST endpoints to the GranjaEU webapp and also a secured public API, via Keycloak, for CaimitoEU (in the future, other farm applications as well).

User management is done within Keycloak. Data is stored either structured in PostgreSQL or as documents in MongoDB.

The user interface is made with Vuetify and supports English and Spanish languages via vue-i18n.

GranjaEU also sends emails via JavaMail and the Google SMTP server to customers in response to shop actions and to notify customers about state changes for their orders.

Test-driven development and rapid prototyping are two of the methods used. Actual farm workers use the application at a very early stage and provide feedback. Deployment to production - in the sense of trunk-based development - for both applications happens multiple times per day in small chunks.

As with CaimitoEU build and deploy happen via GitHub Actions as a multi-stage build pipeline. Maven is building and running a large number of JUnit unit and integration tests. Cypress is used to test the GranjaEU web UI and also runs smoke tests of the deployed application for selected critical functionality. The output is several Docker containers which are stored at GitHub's container registry and deployed via SSH to a Docker Compose to staging and production environments.

All servers running Docker Engine based on Debian Linux are maintained by myself.

Technologies: VueJS, Vuetify, Cypress, Keycloak (OAuth2), Docker (compose), MongoDB, PostgreSQL, NGINX, Spring Boot (REST, Data, Mail, Thymeleaf, Security), Flyway, JUnit, Maven

Developer

2021 - 2022, Mercedes-Benz, Germany

Worked 100% remote with an international DevOps style group on an internal application to manage SonarQube in combination with GitHub Enterprise.

Backend work with Java, Quarkus, Hibernate, Maven

Frontend work with VueJS, Vuex Store, Typescript, Vuetify, Cypress automated testing

Development environment was Docker, GitHub Actions. Production deployment to Azure Kubernetes cluster. Worked on Quarkus Native Executable on GraalVM as Docker container. Did minor changes to Helm charts and within Microsoft Azure.

The application uses Keycloak for authentication and I also got to do some work with its API and manage local deployment for testing purposes.

Worked on a demo setup for a different group to enable them to use Microsoft .NET on Kubernetes. Development with .NET on Mac OS and deployment to selfhosted Ubuntu MicroK8s.

Did some limited coaching on Object-Oriented Programming and Test-Driven Development for the colleagues with a SysAdmin background.

Developer

2020, PH7, Japan, USA, Europe

Working on a NodeJS based API to orchestrate a number of external services. Functional programming style and use of Promise and lodash/fp. Unit testing with JEST, acceptance and smoke testing with Cucumber.js and Chai.

Geographically distributed team with team members working from individual locations in Europe, Japan, and USA.

Consultant

2019, Raiffeisen Bank, Pristina, Kosovo

Performed an IT process and system assessment for the executive board.

Consultant

2019, Raiffeisen Bank, Sarajevo, Bosnia-Herzegovina

Performed an IT process and system assessment for the executive board.

Consultant

2019, Raiffeisen Bank, Belgrade, Serbia

Performed an IT process and system assessment for the executive board.

Agile Coach

2018, Alfa Insurance, Moscow, Russia

Continued the work from 2017. Worked with several teams and senior management on improving engineering practices. Advised on network security and information security practices. Introduced a former coachee to the teams to support XP style testing practices at the team level. Consulted on Self-Contained Systems (SCS) based on Docker containers to improve application architecture.

Agile Coach

2017, Alfa Insurance, Moscow, Russia

Performed an audit of the software development and operations groups in preparation of a larger engagement to uplift skills and create a DevOps structure. Did some initial coaching on two teams to lay the foundation for future coaching work with these two teams and additional groups to follow.

Agile Coach in cooperation with other Agile Coaches

2017, Alfa Bank, Moscow, Russia

Continuation of the 2016 engagement. Objective is to create a DevOps culture inside the bank and restructure the whole organization accordingly.

Agile Coach

2016, Thales, Stuttgart, Germany

Within the axle counter group of Thales Transportation Systems I coached project manager and solution architect on their new roles of Scrum Master and Product Owner. Introduced technical team members to Test-Driven Development in C using the tool Cantata.

Agile Coach

2016, Versandhaus Walz, Bad Waldsee, Germany

The engagement started as a group of three coaches for their main office and an external development partner. Initially I trained and coached on technical matters in a Java J2EE environment with IBM Websphere Commerce. Over time I became the main coach for the main office and worked with a larger group developing the new eCommerce shop for Walz. Coaching topics included product development vs service delivery, information visualization, integration of non-developers, restructuring a traditional retailer to become an eCommerce company, new roles and skills. For 2017 Walz wants to bring all shop development inhouse and I started in 2016 to train newly hired developers on microservices architecture and the DevOps model.

Agile Coach in cooperation with other Agile Coaches

2016, Alfa Bank, Moscow, Russia

Did anamesis with a number of several development groups over the course of a whole week and created a proposal about creating a DevOps culture within a division for management. Received approval to proceed in 2017.

Agile Coach

2016, Deutsche Bank, Frankfurt, Germany

Tought Product Owners and team members from different vendors the basics of Scrum. Introduced User Story Mapping. Performed a three day learning week to introduce kanban elements and the concept of 3 Amigos via paper prototypes amongst others. Consulted on team size and shape and what Scrum can do for the organization.

Agile Coach in cooperation with other Agile Coaches

2015, Bank Otkritie, Moscow, Russia

Performed initial workshops about team formation, team coaching with management. Did organizational anamnesis and proposed potential solutions to populate first version of Coaching Map as a guiding tool going forward.

Agile Coach in cooperation with resident Scrum Master

2015, AXA Groupsolutions, Cologne, Germany

Performed introductory workshops about Acceptance Test-Driven Development for project leaders and team members.

Consultant / Trainer with resident Scrum Master

2015, Virtual Solution, Munich, Germany

Performed workshops, in the form of code retreats, with two teams on test automation, clean code and architecture, intra-team collaboration and Specification by Example for IOS and Android platforms.

Consultant working with Department Leader

2015, Huawei Technologies, Munich, Germany

Management report on organizational and human factors for dealing with complexity in software product development.

Agile Coach / Scrum Coach working with Project Managers and Department Leaders

2014, Huawei Technologies, several cities, China

Introduced ATDD and situational kanban after client’s failed attempt to do so to several teams and coached middle management on agile principles.

Agile Coach / Scrum Coach pairing with resident Scrum Masters

2013 - 2014, Webtrekk, Berlin, Germany

Coached the CTO on agile principles and testing. Introduced Acceptance Test-Driven Development and coached Scrum Masters.

Interim Scrum Master for development group</br> Agile Coach / Scrum Coach working with Department Heads

2013 - 2014, OBI Smart Technologies, Wermelskirchen, Germany

Led a Scrum team. Added testers to the team. Improved requirements gathering and intra-departmental collaboration. Coached department heads on agile values & principles.

rmq - Ruby Wrapper for MQ Series client API

Similar as with RAutomation at another client there was a need to have a testing tool for IBM MQ Series and I created it.

Code on GitHub

Agile Coach / Scrum Coach working with team leaders

2012, Independent Health, Buffalo, New York, USA

Coached SOA teams on Acceptance Test-Driven Development and created a technical tool for doing it.

RAutomation - Small and easy to use library for helping out to automate windows and their controls for automated testing

At a client there was a need to automate windows desktop application for Acceptance Test-Driven Development. After some experiments on my own I discovered another developer on GitHub and started to collaborate on the project with the gracious support of my client.

Code on GitHub

Agile Coach / Scrum Coach working with Iteration Managers and Application Development Leaders

2009 - 2011, Nationwide Insurance, Columbus, Ohio, USA

Participated in an agile transformation spanning 23 teams and personally provided technical and organizational coaching to 6+ teams and about 80 individuals.

Software Developer on a self-organizing geographically distributed international team

2008 - 2009, Serials Solutions, Seattle, Washington, USA

As part of a 6 person team I co-created the Summon product.

Agile Coach / Scrum Coach working with Software Architects

2008, Nationwide Insurance, Columbus, Ohio, USA

Coached software architects and team members on agile development practices including test-driven development and continuous integration.

Project Manager, Scrum Master

2007 - 2009, Caimito Development, Panama City, Panama

Developed the agile lifecycle management tool Caimito One Team, which was aimed at distributed Scrum teams.

Software Developer</br> Agile Coach / Scrum Coach working with Project Manager and CEO

2007, Cloud9 Analytics, San Mateo, California, USA

Built Cloud9's Messenger product (webapp) (from inception to deployment to production) using Scrum as methodology.

Agile Coach / Scrum Coach working with team members and CEO

2006 - 2007, RealWorld Systems, Panama City, Panama

Coached team on Scrum and XP practices.

Founder and CEO of various ventures

Founder Caimito Development S.A.

2006 - 2009, Panama

Outsourcing projects for customers in USA.

Development of the agile lifecycle management tool Caimito One Team from idea to market introduction.

Founder Caimito Technologies LLC

2003 - 2006, Florida, USA

Professional services in the areas systems operation, networking, software development.

Founder, CEO at DINX GmbH

1999 - 2003, Germany

Hosting of Application Servers

Operations of IP Backbone and access concentrators

Web development

Co-Founder, CEO at Farside Communications

1997 - 2001, Germany

Regional Internet Access Provider for the region Rhein-Neckar in the southern part of Germany.

IP backbone network with of 4 intra-city distribution hubs for DSLAMs and several BGP connections to other carriers.

Security systems including firewalls, intrusion detection systems, virtual private networks on a national and international scale.

Co-Founder, CEO at VentureNET

1995 - 1996, Germany

Co-Founded VentureNET GmbH in Heidelberg, Germany, together with Heidelberg based consulting company OSS Consulting GmbH and two partners. Served as member of the board and was responsible for the company's Internet division.

Co-Owner, Software Architect at SoftStream Development

1989 - 1996, Germany

Convince, an illustration and presentation graphics program was developed from 1989-1990 and marketed in Germany. It was written in Modula-2 for the GEM/3 environment on DR-DOS and MS-DOS.

DEO - Documents of Embedded Objects - was a software technology in C/C++ on Windows 3.0 that is a little bit comparable to OLE 2 from Microsoft. The product knew a container application with software components running inside. Available software components were a spreadsheet, illustration graphics, presentation graphics and a word-processing component from a third party.