Home > technical > All Forked Up!

All Forked Up!

BD00 posits that many software development orgs start out with good business intentions to build and share a domain-specific  “platform” (a.k.a. infrastructure) layer of software amongst a portfolio of closely related, but slightly different instantiations of revenue generating applications. However, as your intuition may be hinting at, the vast majority of these poor souls unintentionally, but surely, fork it all up. D’oh!

The example timeline below exposes just one way in which these colossal “fork ups” manifest. At T0, the platform team starts building the infrastructure code (common functionality such as inter-component communication protocols, event logging, data recording, system fault detection/handling, etc) in cohabitation with the team of the first revenue generating app. It’s important to have two loosely-coupled teams in action so that the platform stays generic and doesn’t get fused/baked together with the initial app product.

At T1, a new development effort starts on App2. The freshly formed App2 team saves a bunch of development cost and time upfront by reusing, as-is, the “general” platform code that’s being co-evolved with App1.

Everything moves along in parallel, hunky dory fashion until something strange happens. At T2, the App2 product team notices that each successive platform update breaks their code. They also notice that their feature requests and bug reports are taking a back seat to the App1 team’s needs. Because of this lack of “service“, at T3 the frustrated App2 team says “FORK IT!” – and they literally do it. They “clone and own” the so-called common platform code base and start evolving their “forked up” version themselves. Since the App2 team now has to evolve both their App and their newly born platform layer, their schedule starts slipping more than usual and their prescriptive “plan” gets more disconnected from reality than it normally does. To add insult to injury, the App2 team finds that there is no usable platform API documentation, no tutorial/example code, and they must pour through 1000s of lines of code to figure out how to use, debug, and add features to the dang thing.  Development of the platform starts taking more time than the development of their App and… yada, yada, yada. You can write the rest of the story, no?

So, assume that you’ve been burned once (and hopefully only once) by the ubiquitous and pervasive “forked up” pattern of reuse. How do you prevent history from repeating itself (yet again)? Do you issue coercive threats to conform to the mission? Do you swap out individuals or whole teams? Do you send your whole org to a 3 day Scrum certification class? Will continuous exhortations from the heavens work to change “mindsets“? Do you start measuring/collecting/evaluating some new metrics? Do you change the structure and behaviors of the enclosing social system? Is this solely a social problem; solely a technical problem? Do you not think about it and hope for the best – the next time around?

  1. charliealfred
    April 19, 2012 at 9:17 am

    Sure, companies butcher the adoption of a platform strategy. And lousy golfers (like you and me) slice it into the water or take 4 to get out of a bunker.

    Product-centric companies routinely struggle with this transition. it’s in their blood to focus on specific products. Good Olympic divers don’t automatically make good Olympic *synchronized* divers either. It takes a lot of hard word and a change of mindset. The problem is that it’s really easy for companies to see it as a technical shift, when it is a lot more than that.

    There are plenty of examples of companies who have done it right. Google did with Android (aside from that small Java licensing detail). So did Apple with iOS.


    • April 19, 2012 at 11:32 am

      How dare you! I’ve never taken 4 strokes to get out of a bunker!

  2. charliealfred
    April 19, 2012 at 9:23 pm

    Picked it up after 3, eh?

    • April 20, 2012 at 6:09 am

      D’oh! How in the hell did you know? Of course, I never cheat in other ways – even though I carry a handy Texas foot wedge in my bag.

  1. No trackbacks yet.

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 )

Facebook photo

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

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: