I can’t believe it’s been five years since my last post…
Five years since I decided to join an early stage startup as the CTO / “the tech guy”.
Five years since I took my last train to the office in Manhattan.
It feels like the whole world changed multiple times over – first with the lockdown during the global COVID-19 pandemic, then again with the start of the war in Ukraine, followed by the war in the Middle East. All of that spiced up by the great divide of the country, influx of the new money and resulting inflation, vaccination cards, Messi finally winning the World Cup, presidential elections circus and massive advancements in the blockchain and AI technology.
Wow, after re-reading the above just making it to today feels like an achievement.
When I was initially approached by one of the founders there was no product and no team, just a half backed tangled messed built on the Salesforce platform by one of the top consulting firms (yes, it wasn’t cheap).
As it often happens in the “done for you” engagements the business requirements have evolved shortly after technical specifications were done and passed to the development teams… When the product was finally delivered, it was pretty much useless to the target customers.
Sounds familiar?
That’s where I stepped in.
Yeah, right. In all honesty it was more like this:
Do think you can fix this, Sergey?
These were the words I’ve heard after about an hour of the first meeting with the founder where we desperately tried to connect all of the missing business dots.
I can’t exactly recall what I was thinking at the time, but I’ve heard myself saying something along the lines of “No promises, but I’ll give it a shot”. It’s always fun to tinker with another software project, right?
Well, I’ll tell you what, based on my experience these are the situations that push you to the new heights (or take you down from the fantasy land, haha). You take a plunge into unknown, step out of your comfort zone and make you best effort not to land on your butt. Even if you do you typically end up in the slightly better place.
Now, let me be real for a second. I did have quite a lot of experience in tech behind my shoulders at the time I was approached. Yes, I didn’t have prior fintech experience and never touched Salesforce project before, but I’ve seen and delivered enough to be able to ask the right questions.
On the flip side I’ve encountered situations where people took on opportunities they had no business taking. Recent example – non technical founder contacted his friend from the business school to help him staff tech department with offshore developers just because he was “very sharp” and happened to speak a foreign language. After couple months of searching they were able to find someone who claimed to be the developer. Great! It took them another three months to realize it wasn’t a good developer and then another month to fire him. In the end they were back at square one with nothing but soured relationship, wasted time and money.
Stay in your lane, Steve.
Shortly after our meeting I was faced with a pile of Salesforce code that I didn’t know how to run and vague explanations from business side in terms of the original intent, so my next move was to get help.
Well, to be completely honest, my first idea was to roll up the sleeves and try to figure it out by myself but fortunately I was able to take a step back and approach it from the “business-first/engineering fun last” perspective.
After quick google research I identified and approached couple people who specialized in Salesforce, but to my surprise they were all very busy. Turned out Salesforce development was a very hot niche that I didn’t know even existed. Fortunately one of the consultants I initially reached out to referred me to the Belarusian agency that had hundreds of Salesforce engineers on staff, so that’s where I ended up going. They quickly assigned two engineers to the project and almost in no time we started moving in the right direction.
The dev instance was brought up, the files I had on hands were packaged up and deployed. It was a go time! Yes, there were a lot of loose ends and broken code, but after couple months of long nights and gallons of beer we were able to hit the business goal of demoing and then signing of the first two clients (banks).
Things started to shape up!
Once they began interacting with the product, we started receiving our first real feedback (or should I say problems?). New ideas from business started to come in almost at the same time. Behind the tech curtain it was still just me along with Salesforce developer that I’ve got from the agency. The other one was “reallocated” to another client shortly after contract was signed, I guess he was there mostly to make a good first impression.
The pressure was mounting… As I dove into the Salesforce world with it’s unique deployment options and subscription based model it became clear that in order to achieve fast, predictable and reliable iterations for our clients, we would have to start building out our own platform.
Don’t get me wrong, I have nothing against Salesforce here – it definitely has a lot good things going for it (just look a their impressive year to year revenue growth), it just wasn’t a great choice for our SaaS offering.
We needed very granular controls over many aspects of the product but it was difficult and in many cases impossible to achieve with their platform. In addition to that it was raising questions with potential investors who expected us to have full control over software they were planning to support financially.
Everyone liked the idea of having our own platform, but we couldn’t just stop and rewrite everything. After years in software development with many projects behind my belt I knew full “stop-the-world” rewrite was out of the question, so after some consideration we decided to go with the ninja move.
Which ninja move am I talking about? Glad you asked.
Since our clients were financial institutions who were already familiar and comfortable with Salesforce we decided not to rock the boat too much and continued using it as our frontend for the time being, while re-pointing the entire storage layer to our own APIs.
There was just one problem – the amount of work lined up made it clear I had to either complete my transition to the startup or step away and stay safe in the stable corporate world.
If you happened to read some of my latest blog posts (five year old at this point!), you know I was ready for the new opportunity. Coincidence? Manifestation? Who knows, but thanks to the MVP we were able to secure some initial capital which meant I didn’t have to work for free if I were to join in. Deep down I knew it was the right choice so after getting a blessing from my wife I went for it.
Within the next couple of weeks I was heading to Denver, Colorado to rub shoulders with the rest of the team in the little office overlooking the mountains.
For the first time in a long while I felt truly alive and aligned. A feeling that often times comes with new chapters in life. Sometimes all that is needed is a simple change in perspective, a new job or connection so I urge you to start exploring if you feel like you are drifting too far away from your dreams.
Now that the biggest obstacle was removed, it was time to double down. With couple additional clients being onboarded and platform work lined up it was time to bring on the first key hires and build out the team. After couple painful mistakes I quickly came to the conclusion that all initial startup hires need to be very experienced hands-on leads. There is just no cutting corners there, unless you like the sound of your own voice and want to micromanage every aspect of the project.
The team composition setup I went for was pretty straightforward – Platform, Backend, Frontend, QA and Design.
For the Platform we went with AWS since that’s were I personally had the most expertise. We dockerized the application and deployed it with Kubernetes – pretty standard stuff.
For the Backend we went with Golang. It’s a bit of wild story here related to acquisition of another company, but I’ll save it for another day. Let’s just say that we still have internal debates weather Golang was the right choice… Later on we tried Rails for another project and it felt like much better option, especially if you are building standard CRUD type web application. I would say internal expertise in the team should dictate the stack choice on the initial stages. It’s not a secret that most engineers like to experiment with new shiny tech especially when it comes to the new projects, but you just can’t afford it in the startup where the main goal is to iterate as quickly as possible in order to test validity of the business idea on the market.
We went with React ecosystem for the Frontend because it was the most popular choice at the time. One word of caution – try to keep it as simple and boring as possible otherwise you are risking creating the monster. Here is more detailed article by our VP of engineering on the topic. You will thank me later.
When I was younger I thought QA was the thing from the good “old days” that should be replaced with the automated tests suit. After accidentally hiring one great QA engineer I quickly changed my mind. Today I would say it’s one of the most important departments on my list. The amount of my time saved by QA team is insane. There is a bit of upfront investment (like with most good things in life) for proper onboarding, but once enough product knowledge gets absorbed it’s a pure joy to watch.
Design started on Sketch but transitioned to Figma as it took over the market, but again – huge gap between good and great product designer based on my experience. A great designer always chasing the actual problem first instead of jumping into work without connecting all of the dots. If you get one – be prepared to have answers, a lot of answers… A great designer keeps everything organized along with decisions / comments blocks and constantly communicates with developers to make sure final designs can be integrated into the product without too much drama. A great designer knows how to sell ideas to the stakeholders, when to push and when to pullback.
Once the team is in place, your job as a tech leader is pretty straightforward – to create and preserve the right environment for them to excel. Stop giving commands and ask more questions. Focus on identifying real business problems, communicate them to the team and stay open minded. It works like magic if you do it right.
Fast forward to today and we have:
- a team of over 20 exceptionally smart and highly skilled engineers
- simple and effective change management process that helps to bridge business with tech worlds and keeps everyone on the same page in terms of progress and current priorities
- continuous delivery practice that allows us to reliably and efficiently move software between different environments to production as often as necessary
- our own SaaS B2B platform that took on all of the functions of the Salesforce MVP with the ever expanding host of new features added on top
- automated SOC2 framework that helps to stay on top of the ongoing repetitive compliance tasks
- extensive suit of end-to-end tests that helps us release more often with high degree of confidence
- uniquely positioned B2C mobile-first payments product ready for market domination
Obviously we still have a lot of things on our roadmap but I’m very proud of what we were able to achieve so far with such a compact and clever team!
__
As I sit in my home office and scroll through the past five years of photos on my phone a lot of great memories come rushing in. Want to see some? Ok, I’ll post couple pictures at the end of the post for those brave ones who will make it to the very end ( and we are almost done here, I promise 🙂 ).
The most important personal win was the opportunity to truly LIVE. To create my own little world operating on transparency and common sense. To appreciate the moment without dwelling about the past or waiting for some distant bright future to materialize. To stay close to my family through the happiest and darkest moments.
Obviously I’m fully aware that things might shift at any moment, but isn’t this what life is about? Constant change. A sudden punch in the gut that takes all of the air out just when you thought you got it all figured out or a pleasant surprise that you didn’t see coming… One day at a time my friend, one day.
If I were to list main takeaways from my startup journey so far, it would look something like this (in no particular order):
- Have reserves before you jump in, no matter what promises you hear
- Most likely it will take longer (or much longer) than you expected to gain traction or exit
- Document your journey if for nothing else but to see your own progress
- Learn to live in the present moment, every day is a blessing
- Build out a team as early as you can – two is one, one is none
- Ask more questions instead of giving orders
- Focus on understanding real business problems
- Not all business problems require technical solutions
- Ownership and legal paperwork is important – request, review and understand
- Be proactive, take initiative, trust your intuition
- Give out credits and take on the blame
- Optimize for remote-first, limit private DMs in favor of public conversations
- Make sure payroll is fully figured out and works like a clock
- Get help if you feel stuck, network and pay to get answers
- Understand how long is the runway and next milestones to hit
- Be present, honest and transparent when things get tough, over-communicate
- Summarize and record outcomes of the meetings for off-line readers
- Don’t be afraid to hire smart people
- Consider hiring remote / offshore especially on the early stages
- Get yourself a hobby to unwind after long lonely days
- Interviews could be misleading unlike actual work output
- Take good care of yourself
Looks like each one of these points deserve its own post. If you are not part of my list and have some interest in the area of technical leadership, product building and simply living the life – make sure to sign up below so you don’t miss future updates.
One last thing before we wrap up – after five years of grinding under the rock I feel like things stabilized a bit to the point that I can try to take on a new project on the fractional CTO basis. If you know someone who might have a need for the technical leadership, feel free to have them reach out.
Not only does this helps to keep my tools sharp, but it always been been a passion of mine to help out people who try to go from 0 to 1. Plus my wife needs another bag.. haha
And finally, just like I promised, here are the highlights from my personal archive. Enjoy! 🙂
Also published on Medium.
That’s quite a story! Thank you so much for sharing such an experience. A special thanks for the photos—they’re very cool and full of life, making me want to scroll through my own photos and reflect on past moments.
Ha, Yura, long time! Thank you for your kind words, hope you are doing well!