TL;DR: You can accumulate responsibility faster than you can learn how to harness it. The main learning points are listed below:
Startups are agile boats, but the decisions you make on day one do have rippling consequences over time. You should appreciate that the infrastructure, frameworks and languages you choose will stick with you for a really long time
You should appreciate that technologies have a surprisingly short lifespan. You need to budget time and strategize for the replacement of technologies. You accept long-term “technical debt” with the adoption of any technology.
Components and libraries you write are going to hang around for a long time. However nicely or badly you write them, they’ll remain in the same state — therefore it’s good to invest a little more time than is comfortable building them well for the sake of future maintainers.
Try to make small improvements to the areas of code you work on.
No matter how many times you’ve read about how a company’s most important asset are the people, it will never prepare you for how exhausting and excruciating hiring is.
Only hire when you feel you’re completely desperate for the role
Hire to keep up with growth, not to generate it
Don’t hire someone to do something you’ve not yet figured out
Your gut often knows you need to fire someone long before you rationally accept and perform it, and it’s always difficult.