I was working for a company (name omitted on purpose) that was (and is) still running on really old technology. Perl, Vanilla PHP, jQuery and all intertwined in a complicated and awkward manner using tons of IFrames, 5-second polling to mimic real-time communication, etc. 🧟♂️
But that's all okay. The company was founded 15 years ago and the software grew, adding things to existing blocks. Also, the company does not have the time or know-how to develop upon new technology. Due to massive client pressure. ⏲
I was extremely frustrated in that job, because time pressure was crippling which forced me to deliver very sub-par results, building on sort of outdated tech. I wanted more. Deliver great software, built on current technologies.
Even though the company depended on me a lot, I decided (for my own sanity) to leave the company and dedicate myself to learn about all the tech I wanted to learn when I was still employed.
I am extremely fortunate to have built-up somewhat of a financial cushion 💰 in order to survive a couple of months. But even though, leaving my job with a steady income and do "nothing" meanwhile was a big gamble.
But it was blissful! 🤩 Just amazing to be able to discover all kinds of new technology I so craved. I mainly focused on Vue.js and Node.js. I started writing blog posts about the stuff I learned and -finally- understood.
At some point I arrived at the state where I thought "Hey. I know everything I need to in order to re-create the software I was working on with the company I left with 2019 technology." 🤔
It is a chat system 💬 which has many other components included (video, co-browsing, screen-sharing, etc.). I decided to start with the ground work. It had to be secure and perfect. Authentication should be well thought-through, as well as the mix between real-time and other web communication.
I actually started the project in order to have something to show for in my portfolio. After I "finished" what I was shooting for, I thought that it had potential to actually replace the company's legacy software.
Therefore I spent a lot more time and effort on the project, in order to take care of edge-cases, avoid future problems, solve existing problems, now tailored to the very company I left months ago. I did this in silence and I was very uncertain if they one day would go for it to purchase the code from me.
One day when I found that the project was advanced enough to provide a solid ground for future development on the software, I contacted my former boss. To be honest, he wasn't thrilled. At first he thought I wanted to create a competition for his company (which I also could have done). 😱
After explaining in more detail what I was working on, the more convinced he got that maybe it was worth to take a look at. I got invited to the company for two days in order to present my development work and convince the existing team that what I was building is great work. 👍
I was extremely nervous, because a lot of time and effort went into this, and a lot was riding on it. But at the end, I seeminly convinced the team to get aboard.
I negotiated with my boss the terms and price they'd pay for what I built. They ended up paying 20000€ for the code as it was, plus 10000€ for one months of further customization on the project and training the team to learn to code on my basis. 🎉
If there is a take-away from this story, I think it is that sometimes it's worth to take a leap of faith and throw yourself into the unknown.
Because if you do a great job, believe in yourself, work your ass off, and deliver something you honestly think is worth it... Then maybe someone will pay for it.
The point I tell this story is to motivate other developers to take a step back, invest in themselves and eventually it will pay up. 💪
Some might argue there are legal gray areas here.
You should never publish code that seems like it copies a company you just left, without consulting with them. It could be illegal, depending on your situation.
Also, don’t sell it to someone else. That for sure is illegal!