Is Netflix a simple website?
A website that works well on your computer, mobile, tablet, Smart TV, Play Station, Xbox, Chromecast, Apple TV, Blu-ray player and more?
A website that boasts of more than 100 million monthly users?
A website that makes around $8.5 Billion a year in revenues?
A website that costs around $6 Billion a year to run?
A website that streams over 250 million hours each day?
That’s not just any website.
From the outside looking in it does seem a bit egregious. You have people making amazing applications alone, in a basement, unpaid and yet you get a few hundred engineers and you get… well… to keep using Twitter. So what gives?
Oh… Hello World
After This Also Read: Top Most Weird Websites
Building an awesome application is pretty straightforward until you meet what is likely to be your first real obstacle: the mob of users leveraging your application. Most solo developers deploy to single servers (even, and I shudder, shared servers) without tests (for shame!) and tend to have just enough DevOps experience to identify Stack Exchange as their Linux equivalent of Stack Overflow. When they encounter their first app-crippling bug their application goes down, and they often don’t even know why.
If companies like Twitter, Facebook, Google, etc. went down for periods of time and the company didn’t even know how to stop it from happening in the future they likely wouldn’t last that long. Unfortunately, developers are often taught how to introduce crippling logic into their application well before they are taught to implement testing procedures to catch them before they hit a production environment. Additionally, even a good software engineer may lack DevOps experience and be incapable of building an infrastructure that allows their application to scale.
Ramen is not a good source of nutrients
Eventually the hard truth settles in… you actually need food to live. The problem is you can’t really expect to live off of you application yet. You may have around a thousand users and you managed to wrangle in a friend to help you who knows about as much about Linux as you do Angular. But you need money. If you asked everyone who uses your application for $5 per month you would make ~$5,000 ($2,500 after you split it with your friend, because you’re legit).
But let’s be real — lots of the users would leave if you required payment for service and even if most of them stayed you’d be facing the stiff reality of taxes taking a huge chunk of that away at the end of the year. Additionally, unless you structure an LLC or Corporation all of your personal assets are at risk. Even if that couch is crappy it’s still better than bankruptcy. At this point, most people have to deal with the prospect of working on their application as a hobby and getting a day job or getting serious and starting a business.
Owning a Business
So now you’re a business owner (because we’re talking Facebook and Twitter, here). You managed to get some funding (good thing your aunt was besties with the wife of a VC who could be persuaded — begrudgingly — to listen to your pitch and kick you a pittance of a few hundred thousand) and they gave you enough money to afford real people food. Unfortunately, some of that was lost in legal and accounting fees, but hey, can’t win ’em all.
But now you’re spending a huge amount of time dealing with administrative minutia, checking the boxes and jumping through the hoops required of you by the government. You managed to wrangle in some people that your friends said knew how to code; you’re not entirely sure you believe they know the difference between $emit and $broadcast, but they could be talked into taking virtually no salary by accepting equity instead. You’re still coding, but now you have to deal with version control, merge conflicts, and wondering what the hell those three uncommented functions with weird names are doing. Seriously, who names their function getRektKid? Whatever, features are coming out and you’re getting more users.
Finally, you’ve hit a million users. You throw a party for your small business; you’re now managing four teams of programmers (each around five members strong) that all own features; they write the code, the tests, implement security, log errors… all the things you didn’t even think of back when you were programming.
Oh yeah, you stopped doing that a while back. Well… you occasionally look through the Git logs, maybe take a crack at understanding everything that’s going on since you had the team refactor to React, but then your reminded about another meeting to attend with either one of your developers, your shareholders, or some reporter wanting to ask about your success story. Between all of this, you spend your time focusing on how to make the best damn business possible. And that’s when it hits you: a new feature that’s so radical to the whole concept of your business that it will change the scene entirely.
Not just inventing, innovating
By now you’re basically unable to program. You stay abreast of programming from a conceptual point-of-view, picking up on new frameworks and libraries as your technical advisers (who were, themselves, programmers before they worked their way up to management and then started consulting more than programming). You have a distributed system that works around the globe; you have servers in several countries and you have translation teams ensuring your application isn’t victim of “All your base are belong to us”.
You have hundreds of programmers working at any given time; while the majority are focused on building new features to appease your users, shareholders, etc. you also have other teams as well; several are developing internal tools that will increase operational efficiency, others are working on refactoring the good tools from two years ago into open source code, you have a team dedicated to interviewing prospective hires (who have often used your open source tools), plenty of those programmers are managers that write less code and spend more time managing other programmers, and you have others still who are tied into resource management to ensure your application stays at the magical 99.9% uptime.