Programmer’s guide to the big tech companies 💻
The full version of this article can now be found here!
React.js, Kubernetes, AWS, Typescript, Web Components, and Swift are all examples of projects, ideas, and services that have been released by companies like Google, Amazon, Microsoft, Facebook, and Apple. Some are for profit and some are for the open source community.
But have you ever asked yourself… why? Why do these companies generously offer their work to the developer community?
In this article, I will go over the high level reason that these technologies exist and the true motivation behind them.
TLDR: It’s all out of self interest of the companies… but don’t worry, it is still great for programmers like us. If you want to work for one of these companies, you should focus on their goals and needs.
In the beginning
Companies have 2 really difficult tasks they need to perform to be successful and keep that success:
- Make money.
- Attract smart employees.
Let’s have a look at the biggest tech companies in North America and see how these two goals are reflected in the open source tools and other services that they have contributed to the programming world. In the last section, we will talk about the second point above (the most important one).
Note: There are many other projects that I couldn’t include in the post for brevity sake, but hey, you can let me know about it in the comments.
Google’s (Alphabet) goal:
Hey! people! Keep using the web as much as possible. We want to dominate the web. In an ideal world, there is no more Apple App store, no desktop apps, because everything should go through our Chrome browser or through our google search so we can make money from ads. We dominate the web, so we want people to stay there.
Our main source of revenue is ads and this is our main interest but…
We also noticed Amazon and Microsoft making a ton of money with AWS and Azure. We don’t want to get left behind so we created Google Cloud Platform (GCP)
Solution:
Angular — Control how programmers build front end applications on the web.
Android — Their response to the threat of people moving to iOS and App store where users move their usage to Apple. They want to make sure mobile users still use their search. Oh ya, and Google pays Apple 9 billion a year to have the default search on iOS devices be Google.
AMP — Keep web traffic through their own servers.
Web Components — Have more control over the direction visual components are used on the web and remove reliance on React.js or Vue.js only components.
Progressive Web Apps — Remove dependence on mobile apps and desktop apps. Have mobile and desktop users use the web all the time instead.
Flutter — Remove dependence on Apple’s App Store, and compete against React Native. Use Dart language to replace Javascript (see below).
TensorFlow — Invest in machine learning and allow people to use their Google Cloud Platform (GCP) with custom built TPUs. TensorFlow has made machine learning model building and deployment far easier to developers especially on their own (GCP) platform.
Kubernetes — Since Google was late to the cloud server game (compared to Azure and AWS), they created a tool to allow people to do container orchestration that is platform agnostic. This means building applications that can easily switch from AWS or Azure (hopefully to their own GCP). Market catchup time.
Dart —Programming language which is their hope to replace JavaScript in the browser. Dart looks a lot like JavaScript and it’s a typed language. It’s kind of the same idea as TypeScript (see Microsoft section).
All other Google Open source projects
What they are afraid of:
- People moving from the web and their search. (Enemies: Apple, Amazon, Facebook)
- Losing ground in Web Services (Infrastructure as a service). (Enemies: Microsoft, Amazon)
Bottom line: Google’s ads rely on screens. Other interactions like voice (Amazon’s Echo and Alexa) subvert screens entirely. Also, using different search engines like Bing, and DuckDuckGo is no good for Google. As a programmer, if you can get more people on the internet, or more data about people , Google is going to really like your project.
Facebook’s goal:
Check it out! We collect as much user data as possible by having people use our platform to share information so we can sell ads. We want users to find our apps useful and as sticky (long time on app) as possible: Instagram, Facebook, and WhatsApp is the name of the game. Internet browsing should just be done through these apps. In an ideal world, we ARE the internet that people visit. But we have a problem: Our apps on the phone are downloaded through Play store and Apple. We don’t like this reliance. Ideally we can push changes to their app whenever we want, and we aren’t controlled by the other “storefronts” (App store and Play store)… maybe VR is our solution here (Oculus)
Solution:
React-Native — Platform agnostic tool so you can build application no matter the platform (i.e iOS and Android)… hopefully on Oculus VR one day.
React — Be able to control the direction of the web and how front end applications are built.
internet.org — give free access to internet all over the world….but mainly only giving access to their app: Facebook, Instagram, WhatsApp.
Reason — Facebook came out with this new statically typed programming language which is their hope to replace JavaScript dominance in the browser.
All other Facebook open source projects
You may notice something here: Google and Facebook will always prioritize advertisers over users. It’s in their business model after all. This is an expected behaviour when users stop paying for apps and get it for free: your data becomes the money maker, but you do get really useful applications from these companies.
What they are afraid of:
- People moving away from their apps. (Enemies: Apple, Amazon, Google)
- Having others distribute their apps (Enemies: Google, Apple)
Bottom line: As a programmer, If you can get more people on their applications, or more data about people and the world they inhabit, it is valuable to Facebook. If you can remove reliance on Apple and Google app stores that’s even better. Facebook is trying to keep the users on their platform instead somewhere else. (i.e. making you watch videos on facebook instead of Youtube which is owned by Google). Want to share pictures, make a call, or chat with friends? Facebook apps can do all of that for you. Who knows? Maybe in the future they will create their own app store, or their own phone to keep people using their apps (i.e. React applications can eventually become Facebook App Store applications).
Amazon’s goal:
Scale is the name of the game baby! We want to have access to as many users as possible and beat everybody on economies of scale. The more users/buyers we have, the more we create a moat around us. Why? We can sell things for really cheap and have small margins as long as we have a lot of volume. Using this model, we can sell anything through the digital world but also through the physical retail world. Anti trust lawyers? That’s cute, ask our customers how happy they are with these insanely low prices.
Solution:
AWS — That thing we are really good at? Scale? Ya, you can use our tools that we ourselves use, and you can pay us for it…But don’t worry, it’s cheaper than everywhere else because we have the most servers and the most customers.
Alexa — Allow users to contact Amazon, or search amazon outside of the screen.
All other Amazon open source projects
Not much open source is there? It all revolves around AWS and Alexa. That is reflected in their goal and focus: everything they do is about scale and increasing users who buy things from them.
Amazon loses money on Kindle and Echo products it sells. But who cares, because their goal is to get as many touch points: Web, Voice, VR, etc to Amazon. Oh and on top of that, people are moving towards searching for product online on Amazon instead of Google.
What they are afraid of:
- Physical Retail (Enemies: Walmart)
- People searching for items outside of their website — they are now entering the ad business. (Enemies: Google, Facebook)
- Losing their lead on the cloud infrastructure business (Enemies: Microsoft, Google, IBM)
Bottom line: As a programmer, if you can get more people to buy from Amazon through different mediums (web, voice, VR, mobile, physical) the better. Get as many people in the world access to Amazon. Most products they build will lose money (i.e. Kindle, Echo) for the small margins that they make on large users when they buy items from Amazon. Just keep increasing those touch points. Would this benefit from being quicker, bigger, more efficient? Then Amazon is interested. Get more users →get data →improve service to get more users. Rinse and repeat.
Apple’s goal:
Ya… we’re pretty great. We completely own the high margin hardware market. Our goal is to make users not feel like they are talking to a computer. The best part? Our lifetime users spend a lot of money on our products because we specialize. We make one thing really really well for each market. But we are also constantly competing with our products and no product lasts forever (willing to cannibalize our products if they are no longer good). Unlike Amazon, we’re not going to just sell you a trillion things. We are going to focus on a few things, and do those really well. We will never let anyone beat us on hardware quality.
Solution:
Swift — here is a programming language to make great apps on our iOs devices.
WebKit — here is a rendering engine that we can use for our Safari browser so we don’t rely on Google as the browser on our phones.
All other Apple open source projects
Oh and they don’t always listen to customers (bye bye headphone jack) because they want to build things that we don’t even know we want yet.
Unlike Facebook and Google, their main goal isn’t ads revenue. Therefore, their priority on user data is lower. Apple and Amazon are in the users business instead of the ad business. Apple is high end while Amazon focuses on low margin scale.
What they are afraid of:
- Losing loyal lifetime customers (Enemies: Samsung, Microsoft, Google)
- Users shifting away from mobile (Enemies: Amazon, Facebook, Google)
Bottom line: Apple is very inward looking and they dominate hardware in terms of profit. Their users are also great as Apple owners spend more online than Android. Their big upside is that it benefits them more than all other companies to have user’s security in mind. For this reason, they don’t open source projects as much but they do when it is for their platform (i.e. Swift). As a programmer, if you know their product inside and out, their technology stack completely, and like to focus, they are going to love you.
My irrelevant 2 cents: Apple will continue to be the most successful out of all of these companies because it is the main company that has an incentive to secure user data.
Microsoft’s goal:
Ahem. We build software that is used by everyone in the world and you can see that throughout our history. But we never stop looking for new opportunities. We have made Azure very profitable, and it’s growing really fast especially by attracting companies like Walmart who don’t want to host their platforms with their competitor (Amazon’s AWS). We have a growing business segment that we want to focus on now: Azure cloud service and Office 365 subscription software. We have the advantage when it comes to enterprise but we want to make sure that nobody beats us when it comes to software quality and lock in.
Solution:
ASP.NET — Want to build web apps? Here use Microsoft’s tool.
Typescript — Javascript is cool, but you now what’s cooler? Statically typed language that compiles to Javascript. This way you can code on the web just like Javascript. We also have great integrations with Visual Studio Code (see below)
C# —Here is a language that they use to build almost all of their products.
Azure — Here is a way for you (especially enterprises) to have access to the cloud through a company that you have trusted for all of these years unlike Amazon.
Visual Studio Code — We want to make sure we are right there in front of all the programmers. Here, use our free code editor. Put in another way: VS code is there to convince you to use TypeScript, C#, ASP.NET, and Azure.
Notice a trend here? On one hand, Microsoft really wants you to use their software and especially Azure. But a lot of developers use mac and linux. So how can we get to them? Well, provide the above tools for them to use. Oh and let’s also buy Github since every developer is on there.
What they are afraid of:
- Software being used from other companies (Enemies: Apple, Google)
- Cloud Services used from other companies (Enemies: Amazon, Google)
Bottom line: Microsoft is all about software. Using the cloud, and applications to maintain lifetime customers as much as possible. That means making programmers and business people happy: In past, Microsoft had never launched a product for Linux (Linux compatible version). But time is changing and Microsoft is stepping inside the open source community and trying to embrace those people who love linux and macs since they can be converted eventually.
Microsoft, more than all of the above companies need good software engineers since that is their main focus. So their key is to be in touch with as many engineers, developers, and programmers as possible… because we now get to our 2nd main reason of what these companies need:
But the big reason is…
Finding good talent is really really hard
They are all in competition to hire the smartest engineers, and if they don’t hire the smartest people, their competitor will. They also pay really really well for these skills (usually $130,000+).
At the end of the day, all of their business goals require top level engineers and developers (although designers and hardware engineers are a higher priority for Apple).
All of the projects/products mentioned in the previous section may simplify work for them internally, but the projects can also take a lot of time to develop and maintain throughout their lifetime. These projects are therefore expensive in terms of time and money so what they put out must be inline with the company’s business goals.
The key is this: If the framework/library/tool/language is used by programmers all over the world, hiring also becomes easier because these programmers already know how to work within their company. In addition, by marketing and showing off these projects, a company can show how technically advanced and powerful it is in the tech space, which is attractive to developers and programmers that want to work for the best company. “Come work for us because we are on the cutting edge of tech”.
Conclusion
All the above companies have their goals and challenges that they need to tackle throughout their existence. But at the end of the day, it comes down to who can hire the best talent to help them grow. If you want to work for one of these companies, it is important to know what their main business model is.
By the way, if you do want to work for these big tech companies, I created a course to help you master the coding interview process while also making you a better programer. Check it out:
Master the Coding Interview: Data Structures + Algorithms
VR, AR, Machine Learning, Driverless Cars?
One last thing. As the industry evolves, all of these companies know that technologies will change and their business model may have to change with it. Each of them have some sort of play and interest in these early stage technologies and it would be interesting to see where things shift, but their current goals and ambitions revolve around maintaining their dominance in their field.
One thing is for certain though: we as programmers get to benefit from these contributions.
Thank you for reading this far. If you enjoyed this post, please share, comment, and press/hold that đź‘Ź a few times (up to 50 times). . . Maybe it will help someone.
Follow me on Twitter and Medium if you’re interested in more in-depth and informative write-ups like these in the future! By the way, my full time job is to teach people how to code in the most efficient way possible. You can see my courses at zerotomastery.io/courses