Craftsman

My tale of becoming a craftsman

// 20.03.2020

First project

In late 2016 I had the privilege to work on a green field project as a junior software engineer in a financial software company. The project was called reghub which needed to go live on a specific date because a european regulatory became effective beginning of 2018. After two years the project got into troubles because developing new features got slower to almost no progress.

the craftsman, the journeyman, the mentor

At one day we could hire someone who has a lot of experience in software and requirements engineering. After some time we figured out that this guy knows more than we first thought. He first proved his skills by writing very solid code and it seemed he always has already a plan B for everything, was just one step ahead. At the end he was it, who rewrote the whole over-complicated and fucked-up core of the application to a nicer piece of code which everybody can understand and extend. And the most important thing about him was: He did not blame anyone, but started to teach others.

Sharing the wisdom

He lend books (Clean architecture, the software craftsmanship) to other developers like me. Step by step we introduced code guidelines until we finally could enforce them. We wrote many automated tests that refactoring became just as easy as writing new code. The business-code got well separated from the API definitions and from the DAO-Layers.

It is all clear now

Looking back to this project, so many moments come back to my memory, where I totally failed as a software engineer. I agreed to so many things just because I was afraid to argue about it or to show I didn’t fully understand it. Sometimes I also was just to lazy to make it right. Now I know, software craftsmanship is black and white. It is that simple. There is no: “We will do it later”. There is no architect who is responsible for what you do.

  • If somebody writes code and annotate it with a //TODO you need to consider it as not done.
  • Every workaround becomes the final implementation.
  • No one will ever will thank you, that you skipped this and that to deliver faster.
  • Craftsmanship is not about age or seniority status on paper. At the end its about the maturity of code which is pushed to the repository.
  • Don’t write code in a way to make some other guy happy. Defend your way if you think its the most simplest solution.
  • There is no: “Keep it like this, we might need that in the future”.