Devs just wanna have fun — Part 2: Business and Fun
Last time, I explained why I made certain technical choices while building my own tech stack at My Good Client. The whole process ended up being challenging but fun; despite the initial overhead, development became straightforward and allowed us to move as fast as we needed. It was almost as if I was solving my own jigsaw puzzle — one I would build from scratch, rather than just assembling prebuilt pieces.
We also realized how building our own technology would benefit our business. There are specific reasons why this choice made sense. Here are a few.
Your technology is an asset
There’s a difference between mashing up libraries together and creating something from scratch. Certainly, the common 80–20 adage applies here; it says there are libraries and frameworks out there that will help you accomplish 80% of what you need so you can focus on that remaining 20%. But if you live by this assumption, then your core technology is only 20% of you build and ship; it means your efforts will not justify scaling an Engineering team over time.
This was not acceptable. Even though we funded the business with our own money, we wanted to remove any ambiguity for when an investor would approach us. We wanted to make clear the platform is a core product of the company, not just a byproduct of multiple packages we would find on the internet.
You are in control of what you ship
A small, self funded startup like ours did not need a lot of overhead to ship things into production — if anything, that would hurt the speed of development we wanted to keep. Pitchtarget on the average AWS infrastructure, making traffic consideration way ahead of time (and turned out, we didn’t have quite the traffic we had in mind.) The CTO and the team, all coming from a solid Ruby and Ember background, ended up adopting it for Pitchtarget too. Despite we spent close to zero time to setup the necessary infrastructure, the development was inherently slow. Ember is well organized, but it can end up being an intricate maze of code structures; Agile is also too slow for an early stage startup.
Keeping in mind that experience, I created a stack built for ease of development. With little traffic and users, you know you have to be fast, not necessarily scalable. It took me less than a month to go from zero to MVP; the MVP was basically Base and the Heroku setup with HHVM. In a team of three, communicating the needs of the company didn’t need agile boards, and we could push as soon as we were done; complete freedom came in just a git push.
It’s all fun and games until someone breaks compatibility
This approach was fun and crazy fast. I probably have never run so fast, ever. And if you’re moving crazy fast, it means you’re possibly being reckless. While I was at Facebook, we shifted from PHP and HipHop to HHVM and Hack; it’s quite the task, but the we could count on thousands of DevOps engineer who would take care of making that transition as smooth as possible for everyone inside and outside the company. Facebook had an ambitious (and crazy fast) roadmap — so fast they went to HHVM 2.2.0 to 3.0.0 in less than a year.
Knowing how and why HHVM was being built and shipped, I was intrigued to use it as our primary language. Seeing Wikipedia adopting HHVM around the same time I started building Base and My Good Client was obviously the positive reinforcement I needed.
But the key reason I adopted HHVM was its compatibility with PHP. You could run Hack or PHP 5.6 with the same engine; PHP7 was in the works, but its future was not clear; Hack seemed to have a clearer direction, and one didn’t seem to have to worry about future compatibility at all. In 2014, Hack even had a transpiler to help developers switch back and forth between the two languages. Heroku started supporting HHVM (although experimentally), so I didn’t even have to create a buildpack from scratch (although I still did it as we had a Node engine we used to compile static resources.)
It all worked pretty well, until Facebook decided HHVM would part ways with PHP7. But like I said, there would be a time when My Good Client would have shoulders wide enough to confront that heavy lifting. I’m glad the time is now.
