The Maximum Possible Size of A Meatball

A few years back, I read a ThinkWeek paper about the engineering waste in Microsoft. It presented such a picture: from bug management to test case management, from continuous integration to deployment automation, for every problem in software engineering, there are a handful different tools in Microsoft to solve the same problem. It did look awful. The author was advocating for a consolidation of engineering systems within Microsoft and I was in the same camp.

But since then, more and more I realized that Microsoft’s problem is far from being unique. It’s kind of very common in the software industry nowadays. For examples,

  • On the List of unit testing frameworks, it listed more then 40 different kinds of unit testing frameworks for JavaScript, 35 for Java, 64 for C++ and 28 for .NET;
  • On Comparison of file comparison tools, there are 24 different text file comparison tools and there are a couple others that are not on that list but I have used in the past;
  • When it comes to code review, the list is also long: Phabricator from Facebook, Gerrit from Google, Crucible, … For more, just search online.

At last, look at how many programming languages we have.

It’s inevitable that when more people use a tool, it becomes harder for that tool to meet all the needs, including some volatile/subjective measurements like “easy to use” and “good UI”, as well as meet the needs in time. When a tool gets more bloated as more people keep contributing to it, it becomes harder to learn the tool. When a common lib is used in more systems, the odds of a code change in the common lib breaking somebody becomes higher. The cost and difficulty to ensure no such regression grows worse than linearly. As the number of people/organizations who share with the same tool grows, it will get to a point where these costs, risks and difficulties outweigh the benefits of continuing to stick together. Then the only natural thing is to fall apart.

It’s just like making the meatballs. Small meatball stays as a ball for days. But as the meatball gets bigger, it becomes harder to stick together. When the size reaches a certain point, regardless how much flours you add and how hard and for how long you press the meat together, the big meatball will just fall apart as soon as you put it down. That’s the maximum possible size of a meatball.

One Comment

  1. Note: I used the meatball analogy a couple weeks ago when I was in a mentoring session with a junior engineer. Today I saw another article (http://blackhole12.blogspot.com/2014/11/not-reinventing-wheel-is-anticompetitive.html) talking about the similar topic. Hence wrote my thoughts down and published as a blog.

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s