Building applications takes focus, planning and the understanding of the environment of the application in question. There is a fundamental basis today by which all successful applications are run.

If you are in an agency, you run with speed. Much of what you do is react to market changes, and base decisions on experience and innovative thinking. Then comes the software model. Train wreck. Software is planned, evaluated, tested and methodical. How can both of those processes coexist without destroying each other in a matter, anti-matter explosion? They can’t. Something has to give. Both processes have to evolve. It’s “Process Darwinism”.

How can [software and agency] coexist without destroying each other in a matter, anti-matter explosion?

In the context of traditional software, and the speed at which agencies operate and “think”, if you dont consider a strategy that works in that model, it produces only 1 possible outcome. Mediocrity. There is no focus, teams are constantly changing strategy, goals and face shifting priorities. When you look at how a traditional software model works, it requires very specific focus. There is also an assumption that you initially are building a single product with no shift in purpose.

Work for free?

TomFishburne.com

Traditional software assumptions:
Usually focused on a central core idea (focus)
Large teams of developers (50+)
Pivoting is done within a vertical or product specific constraints

So, how does this fit into the agency model? This is a very basic, yet important question. The agency has to understand how it works, how the pieces move, analyze where they were last week, where they are now and where they want to be next week. The agency machine has to constantly evolve. Software in an agency has to be focused on 3 primary objectives.

Speed
Agility
Market Awareness (as it pertains to it’s core clients)

Speed
The applications you build have to perform singular tasks that help employees get their job done faster and better than any other software out there. In today’s software market, you are quick or you are dead. Quick, single focus applications should be able to be built in 30-60 days. If you can’t do it in that amount of time, the agency business model will eat you alive. It is all about what can survive in that business model. Don’t build software and have objectives that are slow and can’t move fast enough. It is like building an 18 wheeler and constantly adding to it as it drives down a highway that never has an end. Good luck turning that in any direction. That brings us to the next objective.

Agility
The base competency in most agencies is thought leadership. Amazing, valid ideas. Software processes should align to that strategy instead of telling thought leaders to stop thinking or shoe-horning new features into applications that already have too many features. Simple, easy to use applications that perform what is expected is the ideal scenario. Be careful to not build applications that will never get done in time to reach market peak demand.

Market Awareness
Adding the “as it pertains to clients” is essential to success. You have to have the maturity to merge company core values with a software style that works well within that ecosystem. To succeed, perfect current client offerings and expand when ready. Only take on the responsibilities that you have exhibited competency in to date.

To succeed, perfect current client offerings and expand when ready.

Platform vs Application
You can build a platform that other people can build applications on or you can build applications on top of other platforms. Success is a major risk if you try to do both. Trying to do too much = mediocrity and the inability to finish anything.

Platform
Building a platform is taking the really core idea of a company and building a layer of technology that allows it to scale no matter what size it needs to be. You can hear this referred to a lot as “cloud” development or on the operations side as “infrastructure”. You become the data provider and have your teams build software development kits (SDK) so that apps can be quickly built on top of your platform.

Here are a couple of examples of companies following this choice of methodology and succeeding:

Box: Built a platform by which they are doing a single thing and doing it well. It exploded in the enterprise space and now they are releasing development platforms to allow people to build on top of box.

Twitter: We all know where this started. Collection of data, free open and everyone used it. Now, they are locking down the historical data streams and are going to make billions.

Application
This would be similar to saying “we have all this data, now what do we do with it”? Lets build an application that performs a single task. Nothing else. We build it, use it, evolve it but it only performs that function. Then we build an application that just does something else entirely, but using the same data set. There is no communication between the 2, the only connection is that they use the same data. This means if you ever want to scrap an idea, you do it without worrying about the effect on any other application you build (agility). It should align with the ability to build an application within 30-60 days (MAX). If you do this, you never spend more than that on any one idea. It is a streamlined approach to software than a lot of companies are taking because the market changes so quickly.

A couple of examples of companies following this choice of methodology and succeeding:

Linkedin : They have recently just broke their core application into a number of single purpose apps that target specific functions (leadership, networking, recruiting, etc)

Foursquare: They recently pulled the friend management part of their app out and released it as a single purpose app (swarm).

If it takes one woman nine months to make a baby, can nine women do it in one?

Don’t get caught in the typical agency trap that you can throw more resources at something and get it done faster. If it takes one woman nine months to make a baby, can nine women do it in one? It sounds absurd, but it is exactly true. In development, this is called “the mythical man month“. There is a process that has to be followed, no amount of resources shorten the time. The only thing that does is the simplification of ideas and goals.

The speed at which an agency moves is a factor that should be considered if an agency is to boldly go where no agency has gone before. Always look at the environment that controls the pace and structure of the software you are building. It will serve you well to use it as a strength and run with the current instead of against it.