German citizen fluent in English, German, Spanish.
Hands-on, get things done attitude. Able to pick up quickly new subjects, languages, technologies and rise to expert level.
Since 2006 I have provided professional services in different roles to the following international clients. See project history for details below.
As a lifelong software developer (since the 1980s), I am proficient in Java, JavaScript, and Ruby, with additional experience in C, C++, and Objective-C. I can even read COBOL from back in the day. I also have contributed to Open Source Software as part of client engagements.
When embedded in a software development team as a Senior Developer Advocate I help to uplift the technical and organizational skills of all team members in collaboration with and reporting to senior management.
My extensive business experience and knowledge at the international level are invaluable when working with global teams and senior leadership. While most of my work communication is in English, I am also fluent in German (my first language) and Spanish.
At https://www.stephan-schwab.com I maintain a personal website and blog with technical articles that further shows my expertise and serves as a reference for my clients.
When you are looking for a contractor, consultant, advisor, or developer advocate to introduce better practices, you want someone experienced who can deliver measureable results. You don’t want a cog in the machine or a one-trick pony; you want someone who can quickly figure out how to best contribute to your business needs without being tied to technologies or limited by personal preferences. In a coaching role you want a seasoned practicioner instead of an outsider.
Client contacts and further details for the projects listed are available on request.
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
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 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:
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.
Technologies used: Java, JavaScript, Typescript, C#, Quarkus, Hibernate, Maven, Cucumber.js, VueJS, Vuex Store, Vuetify, Cypress, Docker, GitHub, Microsoft Azure, Microsoft .NET, MacOS, Linux, Ubunto MicroK82, Kubernetes, Terraform, Keycloak
2021 - 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: Java, JavaScript, VueJS, Vuetify, Cypress, Keycloak (OAuth2), Docker (compose), MongoDB, PostgreSQL, NGINX, Spring Boot (REST, Data, Mail, Thymeleaf, Security), Flyway, JUnit, Maven
2020, PH7, Japan, USA, Europe
Worked 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.
Technologies used: NodeJS, JavaScript, Cucumber.js, Chai, OneSignal, Firebase
2019, Raiffeisen Bank on site at subsidiaries in Sarajevo (Bosnia-Herzegovina), Belgrade (Serbia), Pristina (Kosovo)
Performed assessments of IT processes and systems for the executive board of each subsidiary.
Further on-site engagement was stopped due to the beginning of the COVID pandemic. It was planned that I take on the role of an embedded Developer Advocate with the aim of creating a new development center.
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.
Technologies used: Java, JavaScript, Docker, Vaadin, SQL
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.
Technologies used: Java, JavaScript, Docker, Vaadin, SQL
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.
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.
Technologies used: C, Cantata
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 advisor and developer advocate 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.
Technologies used: Java, JavaScript, Docker, IBM Websphere eCommerce, Spring Framework, Spring Boot
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.
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.
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.
2015, AXA Groupsolutions, Cologne, Germany
Performed introductory workshops about Acceptance Test-Driven Development for project leaders and team members.
Technologies used: Cucumber, Ruby
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.
Technologies used: Java, Objective-C, Android, IOS, Appium, Cucumber
2015, Huawei Technologies, Munich, Germany
Management report on organizational and human factors for dealing with complexity in software product development.
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.
Technologies used: Java, Android, Appium, Cucumber, Ruby, Python, Behave
2013 - 2014, Webtrekk, Berlin, Germany
Coached the CTO on agile principles and testing. Introduced Acceptance Test-Driven Development and coached Scrum Masters.
Technologies used: Java, Cucumber, Ruby
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.
Similar as with RAutomation at another client there was a need to have a testing tool for IBM MQ Series and I created it.
Technologies used: IBM MQ, Ruby, Cucumber
2012, Independent Health, Buffalo, New York, USA
Coached SOA teams on Acceptance Test-Driven Development and created a technical tool for doing it.
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.
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.
Technologies used: Java, Ruby, Cucumber, Spring Framework, Spring Batch, IBM Websphere, SQL
2008 - 2009, Serials Solutions, Seattle, Washington, USA
As part of a 6 person team I co-created the Summon product.
Technologies used: Java, Apache Solr, Apache Lucene, XML, Apache Camel, ActiveMQ
2008, Nationwide Insurance, Columbus, Ohio, USA
Coached software architects and team members on agile development practices including test-driven development and continuous integration.
Technologies used: Java, Ruby, Cucumber, Spring Framework, IBM Websphere, SQL
2007 - 2009, Caimito Development, Panama City, Panama
Developed the agile lifecycle management tool Caimito One Team, which was aimed at distributed Scrum teams.
2007, Cloud9 Analytics, San Mateo, California, USA
Built Cloud9's Messenger product (webapp) (from inception to deployment to production) using Scrum as methodology.
2006 - 2007, RealWorld Systems, Panama City, Panama
Coached team on Scrum and XP practices.
Technologies used: C, Java, Ruby, Cucumber, Spring Framework, SQL
2006 - 2009, Panama
Outsourcing projects for customers in USA.
Development of the agile lifecycle management tool Caimito One Team from idea to market introduction.
2003 - 2006, Florida, USA
Professional services in the areas systems operation, networking, software development.
1999 - 2003, Germany
Hosting of Application Servers
Operations of IP Backbone and access concentrators
Web development
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.
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.
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 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.
Want to leave me a comment? Please write to sns@caimito.net. Thanks! |
About me
Hello! My name is Stephan Schwab.
As International Software Development Coach and Consultant 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.
Learn about my professional experience since 1986.
Professional Services
I'm fluent in these human languages:
Scrum Pair-Coaching to develop technical competence:
Resources for new clients:
Search
Special Content
Highlights of the Year
Living on planet Earth
Open Source Projects
Stay in touch
My Books
Everything
See a listing of all posts on this site.