It’s unfortunate that they used the word customer once in the post. Total omission would have been so perfect. The point of the satire is devs navel gazing rather than focusing obsessively on who their customer is and their customers needs and solving that customers problems.
There is a failure mode that has a dev team obsessing over building abstraction layers, tooling, automation etc and not writing a line of code that solves customer problems.
It doesn't seem to be satirising something that actually needs to be satirised, as there is not a significant number of startups in the real world actually operating like this. A startup that operates like this wouldn't (barring a major mistake) get funding from YC or any other competent investor.
The Silicon Valley sitcom is funny and successful because it satirises stuff that really does happen in the startup/tech/VC world (I know, I lived through much of it myself), but it noticeably doesn't stereotype founders as utterly clueless and hapless the way this piece does.
With the sitcom, anyone who knows the startup world can point to real-world people/events on which the people/events in the sitcom are based. I don't think you can say that about this post. It's hard for me to believe the writer of this really knows any significant number of real-world startups.
I can't think of a specific example, but when BLOCKCHAIN was the new kid on the block, every startup and it's mother just threw that word into their company somewhere somehow. How many of them got very far?
The irony of that is, that simply posting a parameterized version gained a lot of traction as well, because the satire just hits home so well (the product is good).
Also, I've seen the same stacks succeed and fail. The only common thing I can see is:
- when the tech team fully understand the stack they're using - when the tech team fully understand the product and business they're building (and can make appropriate trade offs)
There are a bunch of basic tech things. E.g. the underlying infrastructure has to be performance, scale, secure etc. There's also the issue of choosing a tech you can actually recruit for.
Shoddy architecture and even a bad product can be compensated by marketing, hype or a good sales team, while the most pristine architecture and codebase will not help you at all without any customers.
We technologists often focus on the technical aspects, but in many domains they are the least important part for a startup.
It is true that having a nice tech stack can make doing your thing easier, but it can also distract you from doing your thing well.
Later in the post:
> Had we had more funding, we would have taken the time to rewrite our app in $ELITELANG instead. Our startup could have been a unicorn.
Although this is satire, it's something a lot of funded startups do. They think they've solved user acquisition by getting investors money (hey, let's throw a couple thousands at Google/FB Ads, although there are 15+ viable acquisition channels we could try [1]), and spend time on building things in their own bubble.
Also, the launch mention is pretty accurate:
> We launched v2 of our product with a splash.
Wonder if many startups would have better results if flipped the switch and treated product creation as a "launch" (a bunch of big sprints with a deadline) and user acquisition as something they do steadily, over a period of time.
[1] https://zerotousers.substack.com/p/15-acquisition-channels-i...
I say this with much respect for what they built, and someone who also tends toward focusing on the technical when things get hard.
Regarding marketing and selling what we have: we tried that and it's pretty clear we're missing important bits, in particular packages for common vendors (stripe, slack, etc), and a package for user management, as well as common things like validation. People love the concept (as do you, thanks!), but were struggling to build things because of what was missing.
As we went to build these, the tech/product debt that we had built up during our experimental phase really started to become apparent. We were missing common and expected things like user-defined types (maybe not important for dynamic langs, but we're a statically typed functional language, so being able to create types is kinda important), configurable (or at least changable) HTTP middleware, and a few other things.
The reason for the rewrite is that had been taking long detours around our tech stack for a while. Now that there's limited resources (as in, just me), the cost of taking the long way to everything we build is just a little too high, so it feels like a rewrite (note: just of the backend, the majority of the code is in the frontend and doesn't need to change!) is necessary to get to product/market fit.
I also hope it won't be the death of us. Fortunately, F# isn't a valid value for $hotlang! (Good thing I didn't pick Rust!)
The constant technology change is just self comfort/pleasure and ultimately an expensive distraction. Look how busy we are. Look how cool our work is. In the end, no one cares about that.
It's unfortunate that so many start ups continually have to relearn this basic truth.
Their desires could be far more cheaply satiated with a side project, but this way they don't have to use $boring_stack in their day job.
Not being bound by the traditions of the large enterprise they used to work for, they're free to choose a stack that might help them be more productive. As an added benefit it helps recruitment - against the long hours and (relatively) low pay of startup work, they get to balance a mission and the opportunity to work with interesting technology.
My actual beliefs are somewhere in between. I think the 'fast moving' world of javascript frameworks is a major contributor here as almost anything you chose in the last 5 years is obsolete.
Not all tech stacks are predominantly web though. You might decide to build in Erlang/Elixir. You would be using something that's 30 years old, proven, not going out of fashion any time soon and the right tool for a lot of jobs. You'd be more productive in it than C++/Java, but that's what most enterprises would require.
The product itself was not used, dunno how folks assumed a rewrite would solve everything.
Because it is. It's satire. Also posted yesterday with Rust and Haskell.