Skills

"Few things are impossible to diligence and skill. Great works are performed not by strength, but perseverance."
- Samuel Johnson (1709 - 1784)

Skills are acquired through training and hands-on experience. In a life as software engineer you never can stand still. You always try to perfect your skills. So what I state here is only a snapshot of my personal evolution, which is always in flux and will hopefully permanently change for the better.

Project Management

  • helping the company to adopt a development process that all parties support and live (this is currently Scrum).
  • serving as a contact to a key customer account.
  • supporting the development teams by removing obstacles.
  • making progress evident and problems immediately visible to upper management.
  • leading as a living example for the values I share.
  • facilitating the transition from a waterfall driven company to an agile one.
  • driving out fears that are obstacles to change.
  • co-defining the companies technical core architecture.
  • technical coordination of a 5 man team (including 2 external experts) and the planning of the new catalog management solution OpenMedia (All releases from 1.0 to 2.5).
  • requirements gatherung using Use Cases and release planning based on current project necessities.
  • priorization of features and development tasks together with product management.
  • project progress tracking comparing estimates with the actual time spend on tasks.
  • project documentation and status reports.
  • peading planning meetings and project post-mortem reviews.

Agile Methods, Practices and Tools

I was able to teach and apply the following Agile Methods and Practices:

  • Methods: Scrum, Kanban
  • I have a strong opinion on SAFe (I am glad to explain)
  • Tools: Jira, Trello and Notion for Backlog Management
  • Leading Retrospectives
  • Agile Requirements Engineering: User Stories, Acceptance Criteria, Story Mapping, Example Mapping, Impact Mapping
  • Team Topologies (Product Boundaries, Ownership, Segmentation)

Development Methodologies

Over the years I have seen a lot of approaches to software development come and go:

  • No process at all
  • Top-Down design
  • Waterfall-like processes
  • OOAD (RUP-like) with big upfront analysis and design using UML and Use Cases
  • eXtreme Programming
  • I personally tend heavily to the agile movement (and have also contributed a book)
  • I try to go down the Test Driven Development lane, though this is not so easy, when you are refactoring an existing framework
  • I am a Certified ScrumMaster Practicing and participated in the first ScrumGathering in 2004 in Vienna (Austria), and many more later on.

Programming Paradigms and Languages

I have seen many of them:

  • Structured and procedural programming (Pascal, COBOL, Modula, C)
  • 4th generation languages (Dataflex, Progress)
  • Scripting languages (JavaScript, Jython, Python)
  • Currently I do object-oriented programming (Java), now in the 23rd year.
  • Code Generation (having written a code generator myself).
  • Currently started to use generative AI using OpenAI's API, Weaviate.

Programming Practices

  • Using version control systems (from CVS and Subversion to Git)
  • Using build systems for CI/CD (Ant, Jenkins/Hudson)
  • Using testing frameworks (JUnit, Selenium, Cucumber/Gherkin, Mockito, FitNesse)
  • Using feature toggles
  • Doing code reviews
  • Building and using API's
  • Cloud Computing (mostly using Google Cloud Services)
  • Using UI libraries (Java Swing, Tapestry Web Framework, Handlebars, Vue.js)

Persistence

The style of data storage has also changed over the years. I have worked with…

  • Flat files
  • ISAM files (KSAM on HP3000)
  • Network databases (IMAGE on HP3000)
  • Relational databases (non-SQL: Dataflex, Progress and SQL-based: Oracle, Progress, MS SQL-Server, MySQL).
  • XML files
  • O/R Mapping Tools: Cocobase, TopLink, Hibernate
  • Explored Blockchain technology (Hyperledger, IPFS)
  • NoSQL databases (Cassandra, Firebase)

Tools

They come and go faster than you can blink with an eye!

  • IDEs: from different editors (like EDIT/3000, IBM's PE2, vi, etc.) to full blown tools like Visual Studio, JBuilder, IBM VisualAge for Java, Eclipse, IntelliJ and Altova XML Spy.
  • Design: From Visio to Rational Rose to Select Component Architect to (currently) Sparx Enterprise Architect.
  • Libraries and frameworks: XML parsers (Xerces, JDOM, dom4j, web frameworks (ASP, Servlets, Tapestry), RMI, Jini, JAI, Quest Software's JClass ServerChart, different JDBC-drivers, Swing
  • Office software: MS Office products, OpenOffice, Miro Boards.

Technology Interests

There are some main areas I am interested in as software craftsman:

  • Agile project management and processes (especially Scrum and eXtreme Programming)
  • Distributed systems (Jini) and Service Oriented Architectures (SOA)
  • Framework development and object-oriented system architecture
  • Aspect Oriented Programming (AOP) and its impact on OO principles
  • Microservice and Cloud Architectures

Other Skills

Some other useful things…

  • I am fluent in German, English, Italien, Czech and also know some French (though a bit rusty)
  • For more than 10 years I gave once a week lessons in speaking in public
  • I give talks at conferences and publish articles
  • I have given several courses and workshops teaching software development skills, like an overview of the UML2 standard through introducing teams of software companies and students at the Lucerne University for Applied Sciences and Arts to Agile concepts and Scrum.

Character

Traits you can observe, when you get to know me:

Positive

  • Searching to see the big picture
  • Always trying to look beyond my nose
  • Highly self-motivated
  • Love to work in a team
  • Pass skills on to others (teaching)
  • Able to take and give constructive criticism
  • Do not run from responsibility
  • Speak my mind
  • Open-minded and accessible
  • Pushing decisions to the people knowing most about a subject

Negative (?)

  • Unable to hide my thoughts (not always the best to do, when working with other people, especially managers)
  • Strong direct communication (whether you like it or not)
  • Sometimes pedantic when it comes to code quality (my own and of others)
  • Not as punctual and orderly, as I would like to be

Beyond Professional Interests

Life does also consist of other pleasures…

  • My caring wife Maria and my lovely twin daughters Michelle and Vanessa
  • Astronomy
  • Reading (my wife says, whatever I get in my hands)
  • Playing Basketball
  • Italian (especially Sardinian) food and wine
  • Traveling (last trip was to Japan)

I am currently reading…

  • Interventions - Noam Chomsky (for pleasure)
  • Pragmatic Thinking & Learning: Refactor Your Wetware - Andy Hunt (for work and pleasure)
  • The Corporate Culture Survival Guide - Edgar H. Schein (for work)
  • Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture - Christian Ciceri, Dave Farley, Neal Ford, Andrew Harmel-Law, Michael Keeling (for work)
  • Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture - Vaughn Vernon, Jaskula Tomasz (for work)

I am currently listening to…

  • The Allman Brothers Band: Live at Fillmore East
  • ulu: NERVE
  • Jamie Lidell: Multiply
  • Joe Strummer & The Mescaleros: Global a Go-Go
  • Medeski Martin & Wood: Let's Go Everywhere
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License