My Takeaways on Divide and Conquer

Cover Image for My Takeaways on Divide and Conquer

When I first learned the term "Divide and Conquer", it was from the Intro to Algorithm textbook, back when I was in grad school. It's a way to solve big problems by breaking them into smaller problems and tackling each of them. I had little feelings and didn't dive deep or thought big about it, instead I only wanted to solve assignment questions and get an A grade.

Over the years, I slowly realized that this is not only about computer science. Instead, I see its application in different domains.

Last century, the UK left some mess by drawing a McMahon Line which then caused disputes between India and China on the so-called Arunachal pradesh. After WW2, we had split North and South Korea, split Republic of China (Taiwan and Mainland), East and West Germany, to name a few. Maybe a set of smaller and weaker countries are better to Uncle Sam's interests.

Not to mention its application in distributed systems, GFS, Bigtable, etc. We use cheap commodity computers to build something great in the cloud.

In today's USA, the modern-day slavery H1B visa is being played at its finest. People from India: Why do I need to wait for 20 years? It's unfair that the rest of the world doesn't have priority dates! As a result, people from different countries hate each other, instead of those who made the rules.

After all, I am not a politician or policy maker, nor am I interested in solving those challenging problems or counter them. Instead, I now always approach daily life problems from the perspective of "divide and conquer".

As a software development manager or PM, why do they do sprint planning and daily standups? Because they wanna keep tabs on project status and eventually deliver a big project. We "divide" a project into multiple milestones and break them into epics, stories and each small task; then we "conquer" each task by assigning it to team members. Assign design tasks to senior engineers, and ops tasks to cheap junior engineers. What if someone is underperforming? Give them pip, ez-pz. Just like you would move off a dead server, and switch traffic to other stand-by servers in your high-availability, fault tolerant systems.

As a person who wants to make a living and make ends meet, let's say you want to make half a million a year, that's equivalent to 10k a week, how do you achieve it? Maybe a senior/principal software engineer, or some quant researchers can make it. But not everyone has the opportunity to have that fast career growth or education.

How does a mid level engineer who makes 300k annually fill the 200k gap? Some people's solution is to do side-gigs. Become a real estate agent. Do some contractor developer work, etc. IMO this is not scalable. Too much overhead in context switching, and maybe conflicts in schedule. Maybe some companies with excellent WLB can support it. I wouldn't say the company names though.

What if a delivery driver wanna make 0.5M per year? Let's say each delivery cost 0.5 hour with an earning of $8. That translates to 384 dollars per day and 2.7k per week, assuming a driver is working 24/7 without needing to refuel the car, and always getting orders instantly after each delivery. Doesn't sound realistic. It needs to be 3x more efficient to meet the goal. Doordash/Uber can help optimize by giving 4 orders from the same apartment/destination to the same restaurant to the driver.

I can keep going on different scenarios but not necessary. You get my point. As I've realized that the biggest concerns as an individual to apply D&C technique is about context switching and scalability. To avoid context switching and scale horizontally as a person, one can work on stuff as similar as possible.. If you are already familiar with Scala, maybe do not work on a side project with C++. Unfortunately, this attitude is always a red-flag in your manager's point of view. They always want to see your growth and squeeze every bit out of you, but that would be another post.

To scale vertically as a human being? Well, not much I can do, other than live a healthy lifestyle. Eat well, sleep well, and work out.