How To Keep Your Basement Clean

Assume your company is developing some kind of service platform for business and/or consumer interaction (like mine does in the performance advertising area). At some point – your success is growing and growing – you suddenly will find yourself with eight development teams multiplied by four technical, architectural layers.

So the 1.000.000 Euro question is: how do you organize your teams to avoid ending up with a totally messed up technology stack?

Basically there are two approaches widely known: either you focus on component (a.k.a. layer/technology) teams, working “horizontally” in a layer, or on feature (a.k.a product/project) teams, working “vertical” through all layers.

Granted we speak about truely cross-functional teams, having all skills needed to do their best job in their fields, each of these approaches has its strengths and weaknesses:

Pro Contra
Component Teams
  • Foster clean architecture
  • Combat technical debts
  • Danger of slowing down product development due to overuse of a team as “shared resource”
  • Danger of losing view on the whole product/platform from the user perspective
Feature Teams
  • High feature throughput, delivering value to the customer relatively fast
  • View on the whole product/platform from a user’s perspective
  • Danger of messing up the architecture of a technology layer due to missing cross-team communication
  • Danger of piling up technical debts due to lack of technical knowledge for certain aspects of a layer

As you see, neither is the right answer. In the Agile community the tendency seems to lead towards feature teams at a first glance. They promise fast delivery of customer value, setteled on virtues like collaboration, communication, and the pursuit of personal enhancement. But from my experience in a distributed, complex enterprise architecture developers tend to prefer the component team approach to care for their babies.

The question is: how to get the best from both sides (or eliminate the drawbacks)?

Well, let’s take a look at another “Agile” approach for spreading knowledge and driving innovation within a company: Communities of Practice. A self-organizing group of people sharing a craft, an interest, and/or a profession. So wouldn’t that be a possible tool to solve the conflict between great architecture and high value delivery?

I think so.

The idea is to keep feature teams but encourage the members having the skills and interests in maintaining and developing a technology layer to actively participate in an appropriate Community of Practice. The duty of this comunity is to assure a clean, maintainable, reliable architecture over a whole layer, striving for improvements – yet always keeping in mind that the user basically doesn’t care about awesome technology in a layer but about great, functional, working features he can use.

One more word on this Community of Practice thing. I heard people saying “It’s pointless. We didn’t see any valueable output from many of our communities.” Most times this came from the (middle) management. Well – I think it’s the duty of even this management to assure valueable output of such a community. By setting contraints and expectations, by supervising progress and results, by creating good working conditions for the community. Despite you need committed, self-disciplined people for producing great value.

 

ALE Network Site: Pushing Things Forward

Starting some weeks ago there is a discussion in the ALE group on LinkedIn about the future of the alenetwork.eu web site. Jurgen claimed that he has no time to maintain and expand the site – which is “badly needed”, as Jurgen said.

So I pushed things forward and created a draft for a new “implementation” of the ALE network site at http://alenetwork.renemt.de

It is based on WordPress and the BuddyPress plugin, using the Custom Community Pro theme by Themekraft. The benefits of this approach are:

  • sustainable, actively supported, open source technology base
  • integrated group features, like LinkedIn
  • forums possible with one click
  • simple, clear constraints for structuring contents (=pages or posts)
  • easy of use – WYSIWIG blogging style (not even Wiki syntax)
  • simple styleable/themeable
  • already nice-looking ;)
If you take a look at both pages you may recognize a little improvement:

 

alenetwork.eu - current state

 

alenetwork.renemt.de - Draft

 

So what I, what WE, need now is the help of the community. Some volunteers interested in helping to take over the missing content from the original page (mainly the country information and the ideas) – as well as to drive the technical development if needed. In short words: show the interest of the community in the new site.

So please – contact me!