# How it all started

After working in my previous company for three years, building a product for transport companies, I was looking for a new challenge. That was back in mid 2017. I cancelled my job contract before looking for a new job. I still had about three months in that company, so I thought that's enough time to look for a new job.

Within two weeks, I had about nine job interviews. Eight of those nine companies offered me a job. Two companies stood out.

The first one was a fin-tech startup, backed by a huge company. The second one was an in house startup at a huge e-commerce company (~5000 employees). Ever since my apprenticeship, I have been in two companies, one with about 10 employees and one without about 80 employees. I also wanted to experience what it is like working in a big company.

The fin-tech startup actually offered me more than I requested (> 10% on top). I still denied. The main reason for the denial was the lack of responsibility. Due to the criticality of fin-tech, operations and development were strictly separated. I didn't like the thought of not being responsible for hosting/maintaining the software I developed. You build it, you run it.

The other company offered me about over 10% less in annual income. On top of that, when I went to the job interview, they did not have a single internal employee, and they were using Node.js. The past few years I have been developing in the JVM ecosystem and I never developed a Node.js application. This was actually one of the reasons I decided to work at that company. I wanted to do something completely different, a new ecosystem I am not familiar with. For personal growth and to have a real challenge. Another major reason for starting at that company were the conversations I've had on the job interview. But it wasn't the developers that convinced me, it was one of the founders. In my prior company the CEO didn't really have a clue what we were doing in those three years and did not seem to care either. I wanted a leader that is actually interested in the product that is being developed and pours his/her heart into that. I was convinced, even though the income was significantly lower and I would start in an environment I didn't know much about.

The work on the product began the end of 2016. The two founders, with the help of other internal employees who voluntarily spend some of their time next to their main job, evaluated the idea and did a market acceptance test. The market acceptance test went so great that the company allowed the team to continue. Ever since, the product was live. Back then there were no developers. The customer-facing shop was provided by another small company and hugely customized. Literally everything was done manually. That surely didn't scale and overwhelmed everyone. In September 2017, the team and product had been approved officially. They were allowed to hire developers. To quickly pick up some speed and relieve the team members workload, freelancers were hired.

A few months later, in January 2018, I started my first day. That day, another freelancer started as well. I was the first official internal developer, the team was stuffed with freelancers. Some freelancers who started in September 2017 were already gone. Two weeks after me, the second internal developer started.

I vividly remember the first day. On the way to shoot a photo for my employee ID card, one of the team members, that was responsible for all the organizational stuff, told me "Oh by the way, they are using something different now, something starting with C...". He wasn't a developer. Something with C? What could that be? Knowing how Kotlin was spelled, I assumed my colleague might not, so I asked him "Do you mean Kotlin?"? "Yes, that's it". I had mixed feelings about that. One of the main reasons to start at the company was the completely unfamiliar Node.js ecosystem. I wanted to challenge myself. On the other hand, Kotlin is pretty cool and I will get up to speed very quickly as I've been programming in the JVM ecosystem for years. The main reason for the switch to Kotlin was simple. There's just more developers familiar with the JVM, so it is going to be easier to hire new developers.

On the day of my arrival, there were three freelancers (including the one that started on the same day) and me that formed the development team.

Something that I greatly appreciated and would recommend anyone: On the very first day, I implemented my first ticket and deployed to production. A freelancer helped me with the setup and all the questions I had. That was amazing. Rather than reading outdated documentation or setting up my environment for a week, I have actually done something productive and shipped a tiny feature on the very first day. For me, this is the very best way to learn. Personally, I have introduced every other colleague this way too. Quickly set up the environment together and then implement a small task and ship to production. Besides learning a lot, you get a sense of achievement.

During the first few weeks I also realized that the team lacked organization. Many tasks were simply requested mouth-to-mouth. The tickets barely contained any details on what or why it was supposed to be done. You basically just sat down with the requester and worked it all out during implementation. While this was a great way to get started and implement features in extremely fast feedback cycles, this wasn't a permanent solution. At some point, the lack of organization will take over and slow you down, especially when the team size increases.

We had one huge monolithic Node.js application that was backend & frontend (back-office application for management) at once. The freelancers already migrated most of the logic to Spring Boot + Kotlin services. Many of the processes were still done completely manually or with great manual effort. The focus of the first few months was automating the happy path. In the context of software development, a happy path is a default scenario featuring no exceptional or error conditions.