I’ve worked for Just Software as a Software Developer for seven years and seven months this month. It was one of the most intense periods of my life, not only personally but also as a developer, an employee, a colleague, a consultant and an Open Source enthusiast. The time at that awesome company has shaped me extremely and I’m leaving my team there with mixed feelings. We left the shores of our safe jobs to build the best team collaboration software in the world. In the beginning we didn’t even have offices of our own, sitting in two spare rooms of a company that our investor had some connections to and now I will leave behind an awesome 19-person team located in the heart of Hamburg’s St. Pauli district, an office with a view on Hamburg’s harbor and probably the best coffee in town. Why would anyone do that, you might ask?
Well, I’ve always been a man with strong principles and ideals and I am driven by mission. Leaving my job as an IT consultant for Just Software was an absolute no-brainer for me because the company has a clear mission and all its employees have a passion for what they do. We wanted to disrupt the world of business collaboration with a software product that is fun to use and at the same time trims hierarchies in internal communication to enable the most efficient way of working together in a team. On top of that we ourselves wanted to be a company where you go to work every day with a smile, where we respect each other and where you don’t have to work 60 hours a week to achieve our goal. I’m now leaving a team where many have kids, brew beer in their spare time and do lots of other cool stuff because our job is just a small part of what we are.
Change was a part of us
We started out with a classic three-tier java application: There was a web client written in GWT as a single-page application, the business application running inside of a Tomcat servlet container running a Spring application that persists data in a PostgreSQL database. GWT enabled us to develop new features quickly when the client was still rather small. Compiling Java to JavaScript was so awesome at the time. You had all the fancy stuff that you’d otherwise miss from JavaScript such as static typing, dead-simple refactoring and a clear separation of concerns with its MVP pattern. But as the application grew we kind of crossed a border where GWT went from speeding us up to significantly slow us down because compile times were really high (several minutes) and JavaScript evolved so drastically that it started to be a real joy to develop in it directly.
The developer tools in browsers started to get really good at supporting developers with features such as a debugger, network inspector, DOM inspector etc. Hence, we developed new functionality in AngularJS and integrated that into our GWT monolith. When React saw the light of day we started to develop functionality in React. In fact, the Just client now consists of a precisely orchestrated mix of GWT, React and Angular code and we are replacing old functionality written in GWT with new code written in React step by step.
On the server we started to split our monolithic application into a set of orchestrated microservices which is an approach that reflects our structure of internal development teams much better and lets us move quicker with regards to bugfixes, new features and new technologies. I introduced the first Go microservice at Just and other colleagues are experimenting with other languages and approaches such as Rust or reactive programming. We have a GitHub repo that hosts those parts of our code that we consider of value to a greater audience. Our CTO Susanne travels the world talking about our migration from monolith to microservices at various conferences.
As for our processes we started out with feature-based programming, made the switch to Scrum and ended up with a Scrumban-like development process. We grew in size and had to split the development team into two teams. We had to constantly align all our processes to new circumstances such as big customers, a shift in product focus (which happened not only once) or completely new teams such as our customer support team.
As you can see, change was a part of the company ever since and we got accustomed to the fact that today’s decisions might be revoked tomorrow by new insights. This also lead us to clearly sharpen and express the mission we always had: “Love your work”. This mission is executed in our product but also in the way we build it.
A new mission lies ahead
But, going down the road of highly mission-focused, passion-driven product development for a long time can be frustrating, too. In the beginning our customers didn’t fully understand the need for a modern collaboration solution and we went through a painful process of trying to convince customers of something that nowadays every good CEO/CTO/CIO knows. We had to make compromises and still do. In my years as an employee at Just I’ve accumulated very many compromises with regards to overall product direction and strategy as well as technological decisions. This accumulation got me to a point where I noticed that I just had to break free of the chains that all those compromises had put me in. As a mission-driven person I saw that after all those years it was time to set sail to new shores, with a new team where I can fully exploit my strengths again.
I have found this new team at Hermes Germany here in Hamburg and I am so glad and looking forward to invest my time, skills and passion in a product that everyone needs (parcel delivery) in a high-scale market (more than 500M delivered parcels per year) and an awesome workplace.
I wish everyone at Just Software and the company as a whole to succeed in its mission and to have doing so. Thank you for the great, great years and all the vaulable experiences, conversations, discussions and parties we had! Don’t stop to constantly change, don’t lose pace. Cheers!