All that once was new is old again
You’re a beginner programmer. You landed your first job. You didn’t go to a famous college 👉 your job is at a small company making widgets.
They hired you in part because the company can’t afford someone with experience. In return, you get to choose your own tech as long as the widgets work.
You face a problem.
How do you choose which technology to use? You don’t know.
Your boss sees a lot of potential and knows you’re a bright young programmer full of piss and vinegar. They trust you to make the right choice. As long as the widget works.
You read some blogs, buy some books, and do your research.
You decide to do what the people you look up to are doing. You choose to build your widget using Docker deployed with Kubernets on top of AWS backed by a serverless queue infrastructure with MapReduce jobs for processing data and a React isomorphic frontend for server-side rendering.
It takes you 5 months to build, costs $1,000/month to run, and serves your 100 users/month perfectly. You fix the minor hiccups pretty quickly.
Your boss is worried about the cost, but you assure him all this machinery is necessary in case the widget suddenly takes off.
You learn a lot.
1 year passes. You’ve played with many technologies and learned all you could. None of your widgets took off.
It is time to move on.
You put “1 year experience in Kubernets and React and serverless and Firebase and Docker and Redux and Native and Vue and Angular and AWS” on your CV. You’ve earned it.
You get a job at a funded startup. You continue to play with cool technologies.
This time, the boss knows to rein you in, but gives you some slack so you don’t get bored.
Some widgets take off, and your tech proves useful. The company card runs out of money and gets blocked.
You raise a few more millions, get an article on TechCrunch and Forbes, and hit the front page of HackerNews five times.
You keep your Kubernets and Firebase and Vue and AWS and Docker and Redux running through these trying times of rapid growth. Everyone loves your articles about the amazing tech stack you’ve built and how it keeps the startup afloat.
You are the shit.
3 years pass. You’ve learned all you could, so it is time to move on.
You put “4 years experience in All The Things” on your CV. You get a job at a famous Name-Brand CompanyStartup.
You breezed through the interviews and the onboarding. You have experience with all the tech Name-Brand CompanyStartup uses.
You continue to play with cool tech.
Everything works smoothly. Your Kubernets and Docker and Firebase and serverless isomorphic React and MapReduce are firing on all cylinders. The scale pushes your stack to its limits. You’re running on as many computers as you can buy.
You now understand what all that tech was actually meant for. It’s barely keeping up.
Your boss thinks you can squeeze a little more out of it. Get a little bit more scale. Drive the costs down just a little.
But you can’t. Existing tech just can’t do it.
You write articles and HackerNews comments and give talks at conferences and meetups about how all your favorite tech has failed you. It just doesn’t scale. You can’t push it to do enough, it’s expensive, and really ,it’s time for something new.
You start work on something new.
Your company gives you plenty of time and resources to improve their stack. You’re the wunderkind, and they have time. If you can’t make it cheaper, then who?
2 years pass.
Your new tech lowers cost by 5% and improves conversions by 2% and users rave about how great all the widgets are. Your engineering team loves working with their new stack, it’s great.
You make it open source. You talk at all the conferences about how you made all the widgets better, you write articles and you write comments and you become a world-leading expert in your new tech.
A young programmer reads your article and thinks, “I need this in case my widget takes off.”
The cycle repeats.
PS: You should also follow me on twitter 👉 here.
It's where I go to shoot the shit about programming.