In a nutshell, it’s sometimes hard to know if you’re persistent or caught in a sunk cost trap. I gave twenty months to my current project, worked on it for a total of two thousand hours and “lost” two hundred thousand euros in my decision to do this and not something else. The project has not yet been completed. Under the cut - a story about how it was.
Eyeliner
In early 2018, after more than ten years as a full-time developer, I was sick to death of office intrigue and wasting time in meetings. I really wanted to give up everything, become my own boss and leave my mark in the surrounding reality.
I was a cross between a tech lead, a department head and a project manager, I got good money, I had a lot of freedom in organizing work, I managed an excellent team, in general, I had nothing to complain about. I myself decided how to organize my working day or working week, participated in interesting and challenging projects, and the team was wonderful ... although I have already spoken about this.
And yet I was willing to sacrifice all of this, just to try something new on my own terms.
First attempts
I had a colleague and friend who also wanted to create their own products, so we started brainstorming together. It took us some time just to find the Idea (everyone probably knows about this anti-pattern). In the end, we were able to come up with two ideas that looked promising.
One was developing digital products for schools to help them track food, payments, attendance, and more. It was clear from what we observed in the experience of our own children that there were real problems with this that needed to be addressed. Several competitors were presented on the Belgian market, but not very many, and for our part of the country - none at all. Plus, we were planning a completely different approach.
The second idea was to create a digital platform for restaurants where they could post customized menus, connect with their customers (for example, send out special offers), build a reputation, and so on.
We started working on a product for schools. Since we are both full-stack developers, there were no big technical difficulties. We discussed our idea with several schools. The people we spoke to were enthusiastic but not sure if they could get the money out of their budget. In addition, the schools belong to the public sector, which means that we still had to go through tenders. It didn't scare me too much, I spent enough time on the other side of the barricades, participating in the public selection of applications. We firmly decided that it was worth trying. But after a while my friend was overcome by doubts, and he left the enterprise without even warning me. I continued to work, but felt acutely that I was left alone on the ship. Feeling lousy, I was disappointed.
After that, we had a conversation with another colleague who was also interested in joining us. This gave a new impetus, I figured that the three of us would be more likely to succeed. We decided to drop the first idea and tackle the second.
This time, things went further: we managed to get into the startup incubator. This gave us the opportunity to move forward, draw up a business plan, and so on. In the process, the idea changed its appearance several times, but we nevertheless started development. But then, unfortunately, everything went on the same tracks: the development took more time than the partners thought, potential customers did not immediately catch up with the idea. The partners quickly questioned whether we would be able to sell the product at all. I'm not sure if they were aware of it or not, but their motivation and interest in the project dropped to almost zero; I tried to keep working. Finally, I realized that they were no longer in business, and I gave up both ideas myself. I also lost my motivation - it was hard to come to terms with failure, and I again fell into despondency.
I believe that with the advent of COVID, the second product could become a stellar product. But at that time, the people with whom we were negotiating showed no interest. They were concerned about traceability, and they wanted to retain the ability to evade taxes (I mean it). So now we will never know what it would have turned out.
Hook through freelance
One way or another, I decided to implement another idea that came to me - to apply for freelance. My goal was to keep my income at the same level and at the same time gain some free time. At first I thought I could broaden my horizons through consulting. Therefore, in January 2019, I interrupted my ten-year career as a full-time developer for a year and started my own freelance business . There was no particular risk in this: in the worst case, my plan would have failed miserably and I would have returned to my old employer. I already had a contract with my first client (a small Belgian startup from FoodTech), and I was eager to fight.
However, after a few weeks, my dreams turned into something of a nightmare. I tried my best, but somehow it didn't work out. I didn't like the atmosphere and the client was not very happy with my work. The situation was getting tense. After three months, they refused my services. It was annoying and a little scary, because I had not prepared any backup plan. By the way, they never paid me for the last bill. Apparently, I won't see this money anymore.
It turned out that the company needed a leader who would be able to loudly declare himself and stuff like that. And I have always been a taciturn person, teamwork and a common idea of ​​the project for everyone is more important to me, I do not strive to shout down others. In general, my style of work, apparently, did not fit into the corporate culture.
I found the next client without much difficulty. By the end of April, I started work on another project and stayed there for several months. In short, everything went much better with him.
I was still haunted by the idea of ​​creating my own products. It seemed that these are the only path that suits me. I still think so. When you work in a company or as a freelancer, only other people's dreams come true. Money is, of course, good, but you cannot scale it in any way, and besides, you still remain "in the power" of other people. I didn't want that anymore.
During 2019, I also worked on my book, and this also took a lot of time and effort - almost a whole year.
The birth of the SaaS project
In May 2019, a former colleague introduced me to one person - her husband was a businessman looking for a partner for his new venture. Of course, I was interested in such an opportunity. He told me about the project and introduced it to the third future founder. They had been working for about a year and needed a technical director. The third partner dropped out.
The goal was to create a SaaS (B2B) product that would help companies run meetings more efficiently. It didn't sound very enticing, but I knew from my own experience how much time meetings can waste everyone in the room if they are not organized properly. Therefore, the thought of changing the status quo seemed quite sensible.
In addition, the third partner was a lean consultant with a large list of potential clients, which made the project even more attractive. She did not work in IT and, nevertheless, managed to create her own tool and methodology, which she used with great success in working with clients. So it wasn't about an abstract idea - there was a specific problem and people willing to pay for a solution. As you might guess, I was quick to join them.
First months
I agreed with my second freelance client for a part-time work, so I managed to free up about two days for a SaaS project. Not much, but it will work for a start. I was nervous, but at the same time I was in seventh heaven. This continued until the end of August.
In those first few months, I immersed myself headlong into the existing codebase, sorted out the stack without much hassle, did a GAP analysis, and helped me create a clear, working roadmap for the development and security project.
The project used CouchDB because the idea was to stand out from the competition with early implementation of offline support. I took it for granted and got to work. It soon became clear that the project needed to be rewritten practically from scratch. There were too many problems in the existing codebase, it was more like a proof of concept. We decided that we would do this work gradually so that we would not have to demolish everything at once. Subsequently, it turned out that the decision was wrong.
So, from May to July, we sorted out user stories, made a story map, made a roadmap and clarified the volumes of the minimum viable product. I created wikipedia, ported the code to the mono repository, created and cleaned up the backlog, and so on. Between July and September, I did this and that: build system, Docker / docker-compose, continuous integration, authorization, software localization, and the like. Also in September, we rode a trailer across France - the last major adventure before COVID. But that is another story.
Period of hard work
In September, I started working on the project for a full week. This was a risky step both for me and for the business - I lost income for several months, and the expenses remained the same. But I wanted to speed up my SaaS startup. It annoyed me that we were advancing so slowly.
We hoped to have the product on the market by the end of 2019. Unfortunately, it turned out, to put it mildly, differently.
However, from September to December, I enjoyed giving all my time to the project. I was able to really focus on it, worked the way I liked (finally!) And felt that the process was progressing at a good pace. I set up a release automation, made a sales infrastructure (switched to Kubernetes, tried AWS and eventually settled on DigitalOcean), implemented HTTPS support, implemented a basic search function, breadcrumbs, log out, created a test dataset, a command timeline interface, and etc.
In December, my eight-hundred-page book on TypeScript finally came out (this is more of a brick than a book), so I took one off my shoulders and could devote more time to my family ... and the SaaS project.
( )
Unfortunately, the most important and most difficult screen with the meetings was taken up only in December. With a big delay, but before we did not succeed.
By that time, doubts began to plague me as to whether we had chosen the right approach and how effective it was. I was exhausted, but things went very slowly. And you read people on Twitter - they release a finished product in a month or three. And I asked myself, “What are we doing wrong?”, But I could not find an answer.
At the end of 2019, I had already spent about a thousand hours on the project, that is, the lost profit for me was one hundred thousand euros (this is how much I would have earned in this period of consulting). Nevertheless, I decided not to listen to this inner voice and focus on the development of the project. It seemed to me that everything would pay off.
2020: three jobs, two children and too little time
In January 2020, it became clear that we had a long way to go. There was still a lot left in the backlog (important functionality, bug fixes, major security holes), so we pushed the release date back to June 2020. My partners were more optimistic, but I was already well acquainted with the real pace of work and understood that this time would not be enough. However, we decided to strain and try.
At the same time, I tried to find a client for consulting for 1-3 days a week, but I could not find anyone who would agree to such conditions. Therefore, I had to go back to work in the company part-time - this could be arranged, since I was going on parental leave.
I didn't expect to have to go back to my old employer, and that hit my motivation hard. After returning, I lost my position, status, team and everything else. The feeling was as if I had crawled to ask for help.
In my old place of work, I turned into a kind of firefighter who fixes difficult technical problems. It was interesting, but also painful: I liked working in a team, and now I had to act alone for most of the year. And when the pandemic hit us, it got even worse ... However, I shouldn't complain: there was enough salary to live on, which was very much approved by the family, and many had a much harder time.
At the same time, I tried to keep my enterprise afloat this way and that. There was little sense in these attempts. I used all the energy I could muster, I gave up free time, games, whatever. I turned into an automaton. While trying to maintain a healthy balance, COVID mixed all the cards. And yet I was able to snatch time for board games between billions of working hours a week.
Between January and July, we didn't do much for the SaaS project in terms of functionality. Things went slowly and tightly. I began to question my abilities and how I worked. I was more and more emphatic in favor of downsizing and focusing on the essentials, but I still didn't want to sacrifice code quality. Not that I demanded too much in this regard, but it was unacceptable for me not to pay attention to him at all. Instead, I urged partners to give up at least for a while from secondary things - for example, offline mode (for which we have already killed a whole month) or support for mobile devices, without which at first it would definitely be possible to do without.
We came to the conclusion that the UI / UX of the product is very poor and will not impress users. This primarily concerned the meeting screen, which was the most difficult. We decided to hire a UI / UX designer. It cost us three thousand euros for five man-days. The price was reasonable, but the integration of the new design required changes in several parts of the system at once (we replaced Angular Material with Tailwind, created our own theme, refactored the data model and something else), and this, in turn, moved the timeline even further. ... In terms of the total time spent, we let it go for more than two months, but the effect turned out to be excellent (even if we realized it a little late). This was clearly the right move.
What Kills Productivity
By June 2020, the minimum viable product was far from complete. We never finished the meeting screen, and there were a whole bunch of other imperfections. We have moved the release again, this time to September.
Throughout the year, our working conditions were constantly changing, and it seems to me that this was what hindered us the most. Speaking of me, I worked on a SaaS project on Mondays and Fridays plus two more Wednesdays a month. I had to switch between radically different tasks within one week, and it was very difficult, primarily psychologically.
At the same time, one of the partners (the one who is developing with me) often turned to me for help on arbitrary days. Before taking on this project, he left programming for many years, so it was more difficult for him. This further exacerbated the problem of switching between contexts. Several times a day I had to leave what I was doing to help him get off the ground, which made life even more difficult.
Of course, you can't judge one-sidedly here: my partner has the most experience in doing business, marketing and sales and an impressive circle of acquaintances, so he is also not deprived of strengths.
However, all technical issues, update management, bug fixing, security, documentation, backlog work, projections and so on, fell on me. A lot of things turned out, and this definitely influenced the release time of the product.
The NoSQL database took up a lot of our time, and now it is crystal clear to me that I shouldn't have been messing with it for the sake of offline mode. In the end, this could have been achieved with other solutions. By that time, we had already postponed offline until future releases, and our data model was highly relational. There was no longer any reason to cling to it further. She only slowed us down, complicating all the operations.
And yet, we decided to leave it, believing that the resource costs for the transition to the classic RDBMS would be critical and throw us too far back. I can’t say with certainty that in this situation it is wiser: to spend more time on changes for the better with the hope that in the future they will save us time, or to continue to implement functionality with a fight, risking low rates of work ... We went the second way - not I know if this decision was for the best.
After the first wave
Then we went out of our way, introducing authorization, setting state machines for different concepts (since collections have a certain life cycle, and this seems to us very important from an organizational point of view), implementing validation and various capabilities within the application - text formatting, export to pdf and so on. But the minimum viable product could not be brought to mind! But we have already cut it to the maximum.
At the same time, the funds in the company's account were melting like Olaf in the sun. Month after month passed, and little by little doubts returned. While we have achieved a lot in some aspects, the work seemed to be moving unbearably slowly.
What now?
Around October 2020, we started looking at where we could get funding. We thought about whether to take a loan with 50% insurance from the European Investment Fund, or maybe try to get money from the regional or national budget. We turned to the bank, made an application for financing from the regional budget, and so on, but so far nothing has passed.
Unfortunately for us, due to COVID, the customers we have counted on the most (hospitals) are now clearly unable to take the time to integrate our solution. That is, even if we prepare everything for them, they themselves will not be ready. So I had to look at other audience segments and re-evaluate the scale. This prompted us to outline a "next" release for ourselves, where there will be enough functionality to persuade other customers to buy the product. But at our current speed, such a version will be ready by the end of 2021, provided that we continue to work for half a working week.
In light of our doubts about the pace of development and the state of the market, we began to consider other bootstrapping methods. We are currently considering starting with a service model to buy time and warm up, and then move to SaaS. But so far this is only at the level of an idea. Everything is rather hazy.
And now, the beginning of 2021, another thousand hours spent, which means two hundred thousand euros of lost profits, and I am still working on this project, instead of doing something else ... And the project does not even have a chance to enter the market in the foreseeable the future.
Stress and doubt
To date, I have invested two thousand hours in the project, and this figure seems huge. I am almost ashamed to think how little we can charge for such costs. Maybe it's okay, maybe it's not. I honestly tried my best, but sometimes it feels like I don't know anything and am not capable of anything in my profession (hello imposter syndrome, how I missed you). I worked hard, sat on a project at night and on weekends, trying to speed up the process, but it's still slow.
By now, my company's bank account has clearly gone into negative territory. She won't last six months. I was exhausted from stress (although still able to put on a calm face and smile). I continue to work part-time and will probably continue like this for most of the year. It would be great to dump all these obligations into yourself and give all the time and energy to the project, but so far it will not work. There is a long, sad road ahead, and I am still not sure of anything.
We may have decided to leave the NoSQL database in vain. Perhaps the whole thing is undermined by the need to split between contexts. I may be a bad developer. Perhaps we are paying attention to the wrong thing. Perhaps I am too worried about code quality. Perhaps it was worth giving up a year ago. Perhaps we need another programmer. Perhaps, perhaps, perhaps.
Part of me is determined to continue. First, because I still believe in the team and in the fact that the product is really needed and able to help teams and organizations work more effectively. Secondly, because I still have a lot of energy, and perseverance. I hate giving up halfway. Finally, I've already put so much time and effort into the project; if you quit now, it turns out that everything was in vain.
And so, I sit here with my doubts, a lot of lost money, a lot of work ahead and a complete lack of confidence in anything. The feeling that I was caught in a vicious circle. To give up means to lose and, perhaps, to miss something important. On the other hand, continuing is the potential for falling into a sunk cost trap with the risk of losing even more. I do not know the correct answer, and no one knows. Both scenarios are very real.
Conclusion
Forgive me, I deceived you: this article has no conclusion. There are not even any specific questions (apart from those that are spinning in my head like a jammed record). This is just my story, not complete, but in an abridged version.
Here's what's strange: in 2020, I also spent a lot of time blogging - I took the opportunity to share what I learned while working on a SaaS project, and even made about a hundred dollars from it. There is not much to boast about, but it brightened up my year. Maybe it was this experience that pushed me to take up a new book.... Maybe this inner voice says to me: “Enough! Let's try something different! " Or maybe I just enjoy sharing knowledge and helping people. This would explain my addiction to counseling too. I don’t know though. I do not know anything.
It's two o'clock in the morning, it's already Monday. And on Mondays ... I'm working on a SaaS project. This is what I will do, because I have not yet made up my mind, although the pressure is powerful. Perhaps at the end of 2021, I will update this article with a story about how we conquered the market. And that's all for today!