What is “Divide and Conquer”?
“Divide and Conquer”- a pretty simple motto. Tried and true, but not as easy as it seems.
In my view Topcoder has always been about divide and conquer. As in: break problems into smaller and more manageable “chunks”, parcel them out to architects, designers, and developers; and then put them back together into a fully functional and working application.
One could liken this to a well crafted watch where the gears, levers, and hands come together to give you what you expect from a timepiece: a time of day.
There is a hierarchy here at work, and like in any network, it is communication that makes the difference. What also makes the difference? Being able to see both the big picture and the little details. You know, see the forest and the trees kind of thing… 🙂
Breaking problems into smaller tasks and parcelling that out to a network of people is not a unique approach by any means, but being able to do it well… it is rather rare. Crowdsourcing such a hierarchy? Yes, even rarer… but what is even more rare than that is the ability to scale such an approach.
If you have, say, 10 people you can pull that off with a good manager.
100 people? – Doable but harder.
1,000 people? – Damn difficult
10,000 people? – Are you serious?
100,000? – Are you mad? Do you need a doctor?
1,000,000 – Welcome to Topcoder! What do you need and when do you need it? 🙂
Topcoder has been able to not only understand how to manage such a beehive of talent, but also learned how to mitigate many problems that emerge when scaling such a large and diverse group of talented people.
Let me tell you a story from the early days of Topcoder:
The year was 2006, competitions were roaring, and Topcoder was becoming a major force in the arena of reusable components. One of the foundational tools that we used then was a UML tool called “Poseidon UML.” We were all using the community edition as it was free.
We created hundreds of architectural diagrams that fueled the development cycle. And we did this in record time. A typical competition was about 6 days long and we created architectures from scratch to finish in such a time.
Then came an announcement from Poseidon. We could not use their community tool anymore. We had hundreds of designs that would not be viewable anymore and we had great momentum that we did not want to lose.
So, what do you do? You do the unthinkable. I still remember when we got the announcement from Topcoder. We were going to build our own UML tool from scratch.
Did we do it? Yes we did. In record time. TCUML tool became a reality.
It took 29 designers (who created the component architectures) 42 developers (who developed the modules/components) 5 assemblers (who put the pieces together into a functional tool) and more than 50 reviewers to create this tool.
Our project manager and main architect drove the network of people forward, all gears worked together and all the pistons pushed. We did not miss a beat. We delivered. Topcoder did what Topcoder does so well.
We learned a lot in those days, and mostly we learned that divide and conquer, when properly managed, works; and it works well. I personally honed my skills as a software Engineer and learned a lot of very valuable lessons. We all did.
Lessons learned and lessons shared.
My brother (argolite) and I (AleaActaEst) started a kickstarter campaign to create a series of courses that will teach Software Architecture skills to all up-and-coming and aspiring developers, designers, and architects.
We are envisioning a bundle of about 8-10 progressive courses. Courses that will help you learn the same lessons we learned about Software Engineering including divide and conquer, but without having to go through many of the pitfalls we did.
We want to identify and deliver the best Software Engineering and Architectural principles in one comprehensive place. Please have a look and if you want such a course bundle to come to life then give us a lending hand by supporting the campaign. You will get all the courses as well as a session with us.
We wanted to capture the best of our Topcoder competitions and work experience, as well as delve into some of the cutting edge topics such as AI, Agent Technology, Blockchain, AR, VR… all from the vantage point of well crafted architectures.
The emphasis is on a good design visualization and overall documentation with mastering design and architectural patterns. (We use UML but not exclusively, we have a few other paradigms as well) but, it is definitely foremost about understanding the building blocks of architectures and avoiding the pitfalls of complexities. (i.e. utilizing divide and conquer and the KISS principle)
We also create clone applications such as Uber, WhatsApp, and Instagram, among others, to help students with being able to do things from scratch by starting with a design and learning to progressively design, document, code and test, but always with a good blueprint in hand.
Thank you for your support!