Every other day we see someone create a Netflix clone. Or a Spotify Clone using this or that in just one week. Some people see this and ask themselves: “Why do these companies need so many people to do something that they can build in 1 week?” Quite often, we also see people say, “What is complicated about an app that connects two persons on a map through a server?” when they refer to Uber or “Why does Amazon need almost 600.000 employees to do e-commerce?” This requires a huge answer, but I will oversimplify here: Boundary Conditions are the reason.
We don’t need to know a lot about architecture to build a website that handles 1000 users doing simple reads on the same resources all day. When we have 2.8 billion monthly active users–like Facebook–or even 200 million–like Amazon–if our engineering org isn’t world-class in Architecture, the service will simply not work. We don’t need to write stellar and clear code when we’re the only ones maintaining it. We don’t need proprietary shipping and logistics innovation if we don’t have Customer Obsession. We don’t need an amazing Design team or know a lot about Frontend if the team tolerates bad UX. You get the idea.
Sometimes we need to push boundaries to challenge ourselves. Instead of just solving the problem, we can think about what standard we can raise and what we would need to know to raise those standards. These can be standards for what we’re building but can also be for ourselves–such as always contributing to the tools the company uses or committing to always share our learnings in public. We can raise the bar in any aspect of Software Quality
Timeliness of delivery, Documentation. Anything. All of these will bring us new practices, new knowledge, and new opportunities.
To find which of these standards matter the most and to understand if we’re meeting them, we’ll usually need to Dive Deep. We need to understand what is around the projects we want to tackle and how to audit and track our progress. Every software is part of a broader context, both technically and strategically. Diving deep into these contexts will show us a world of things we need to learn. Leverage your projects & responsibilities to become better at your craft, to dive deep, to go further. Ask for more time if you need to. Show why it matters.
Do Random Restarts
To find Global Maxima and not get stuck in Local Maxima, in optimization, we can use a technique called Random Restarts, which are jumps from where we are to random points from which we start optimizing again. We can do that with our careers as well by taking leaps of faith with responsibilities. Starting something we’re not certain we will succeed, experimenting with a new way to do things, taking on a responsibility we’re not sure we can handle, taking risks.