Hold on. YAML gained popularity as a nice syntax for JSON, which itself was a subset of JavaScript, a full programming language. Now, we are adding some computational capabilities back to YAML? Wouldn't it be better to just execute JavaScript to generate a JSON object and skip building a new language inside of YAML?
The question is what happens to these lifestyle businesses when a VC backed company comes along with a $100MM raise in the space and a free product. Do they survive? Does the team lose their livelihood?
VC money does not fix TAM, be it 100M or 1B. What is does; allows startup to pivot and find other areas of growth (hopefully really fast), which is not easy or guaranteed to work either. Recent examples like WeWork, Zume and many more... I must also add, sometimes not everything that one sees fits in the definition of TAM... by true definition of TAM, AirBnB and UBER would have been a lifestyle business when they were first started....
I do agree that Kubernetes is too complicated an low-level for most needs, especially for small projects. However,
my experience is that while most apps start out really simple, if they are even modestly successful, they'll eventually need something not supported by whatever PaaS/Serverless/whatever they've chosen for deployment.
The hope with Adapt is that you start out with a really simple interface that looks like a PaaS/Serverless (Heroku, Zeit, adapt new/run etc.) but can be tweaked over time without having to throw out everything that was great about the PaaS. And by no means is Adapt limited to Kubernetes, it's just what is there now.
I think that a simple interface to something like Fargate/ECS with Adapt would be pretty nice as it removes the K8s complexity but handles all the container build/repo management stuff for you.
That is exactly the idea behind Adapt (and said better than I've been saying it). The goal is to hide all the DevOps details but still make it easy to customize the parts that you need to customize via JSX and React concepts.
If you check out some of the components in adapt/cloud/src, most of them are small too, and just use other simpler components like LocalDockerImage, DockerContainer, RepositoryImage, etc.
I think the real problem we have with infrastructure is one of evolution, abstractions and leaky abstractions.
First, infrastructure is not a static thing, it changes over time in response to code updates, environmental load (autoscaling), etc. And the details here matter. How should new code be rolled out (blue/green, how fast, what are the quality metrics, etc.). What should happen to the old instances while the new stuff is rolling out? When should they be killed?
What we really need is a good way to declaratively specify what to do, and how the components in that declarative specification should evolve as new stuff is rolled in, load changes, etc. We need a good way to specify the control plane for our infrastructure. adaptjs (adaptjs.org) is our TypeScript-based open source project to provide this. It is still early stage, but I think it is pretty promising.
The second issue is one of abstraction. All these things are complex and often need customization to suit the particular application challenges. Using templates, CDK, Pulumi, or anything else to generate YAML is fine, but as the article points out, you have no insight into how your specification got realized into the low-level infrastructure.
Moreover, you have to care since you need to know the low-level implementation to debug, understand cost, analyze logs, etc. Adapt has some machinery so that you don't always need to understand the low-level implementation for this stuff, but since it is still early, that part of the system needs work before it is ready for prime time.
More generally, waiting until the end to write tests is a great way to get poor code coverage, and test cases that are very hard to debug. Unit tests as you go along is the way to go. If you must, reserve system testing until the end.
There is what the standard says, and there is what people actually do. If everyone promotes char to int in practice, then any machine where this doesn't happen is going to have a tough time running the bulk of code out there.
In a standards committee, the standard is the standard, in practice common practice is the standard.
An important point that the article doesn't discuss is understanding the possible value of your options if the company actually exits.
There are few factors here - what percentage of the company's total share count do your options (vested and unvested) represent. How big of a liquidity preference are you sitting behind. What are the odds the company clears this liquidity preference. What is the likely valuation of any successful exit (i.e., one the clears the liquidity preference, and in the case of options, clears the strike price of the options issued). What are the odds of such an exit. And finally, what are the change of control terms.
In terms of what fraction of the company do your options represent, you'll have to ask how many shares are outstanding and then make a guess as to how many more will get issued between now and success. Remember, each financing results in lots more shares being issued.
What is the liquidity preferences your options sit behind. Usually options convert to common, so that means you are the lowest person on the totem pole. If the company has raised $100MM, there is very likely at least a $100MM preference. That means that if the company exits for $90MM the common shareholders (that's the employee option holders) will get nothing.
In terms of valuations, you can figure out what your options are worth at various exits above the liquidity preference, but only if you know the terms of later financing rounds. Generally, I'd recommend exercising at least 1 share of options as soon as possible so that you have shareholder information rights which should tell you what these terms are so you can calculate the option value.
More importantly, what are the odds of such exit. Generally, a company has more options to exit for $100MM than it does for $1B than it does for $10B. Of course, if the company is wildly successful, the higher the odds of a bigger outcome. The question is, what threshold of success is needed for the options to have enough value.
Finally, you should consider the change of control terms. If a company is acquired, do your shares vest immediately, or are they converted to shares of the acquiring company? What happens if the acquirer fires you? If you are early enough you might be able to negotiate for better change of control provisions. You want to avoid a scenario where the company has a successful exit and the acquirer is not incentivized to keep all the employees that have meaningful option stakes. This is usually less a problem in software developer roles, and more of an issue for sales and executive staff (CFO, CSO, etc.) but it doesn't hurt to have better terms.
In any case, employee stock options are complicated, and often the terms matter more than the price. There is a quote, can't remember who said it, "You name the price, I name the terms."
All totally good points. I can make this even more complicated!
>If the company has raised $100MM, there is very likely at least a $100MM preference. That means that if the company exits for $90MM the common shareholders (that's the employee option holders) will get nothing.
In this case, won't blocking rights prevent that exit in most cases? Investors with liquidation preference might not want an exit that comes in lower than their cost basis...
Maybe. Investors can give up on a company and want to get their money out which would result in this kind of sale. More likely, as you said, the company will be forced to go for bust given the current climate.
It is also possible for investors to block an exit that can be great for founders and employees. For a $1B fund, a $150MM exit on $10MM raised doesn't move the needle, but it could be life changing for the founders and early employees. Good investors will care about this and try to figure something out. Others might just block the transaction.
It seems like there are a lot of these IPOs lately. The article mentions Uber and Lyft, but there are others. Peloton is a recent one. WeWork had to shelve its IPO. Pure Storage is still losing money. How many of these companies can never make enough money to justify their IPO price, and how many are wisely investing in growth and market dominance. How long does it take to tell? Amazon took over a decade to show profits, if memory serves.