Software Factories in a Flat World

Jack Greenfield has responded to our recent Q&A that touched on the subject of Software Factories. While the Q&A wasn't a technical interview, I'd like to take a more detailed look at this subject and answer Jack's post.

Although I didn't author the original post, I'll take a stab at answering Jack's questions directly:

  1. Compilers, Class Libaries, Frameworks, Patterns, Best Practices, Databases, Form Builders, and Transforms don't necessarily crush creativity and flexibility. Although, there's no question that using a Form Builder does constrain (aka limit flexibility) the way an interface is developed. Is Word® or VisualStudio® developed with a GUI builder? I doubt it.
  2. None of the best practices mentioned crush creativity or flexibility. But honestly, I don't see how Defect Tracking (as an example) relates directly to the key concepts in software factories. Software factories didn't invent User Stories, Testing, Refactoring, or Configuration Management, and our post didn't cover those practices.
  3. None. Frankly, I've never built an application with a software factory nor have I spoken with a company or developer that's used it. As soon as I have the opportunity to get that proof, I'll be sure to blog it.

There is no question that the original post took issue with the term "software factory" in areas more than Microsoft's exact definition of a "software factory." It's turns out Microsoft does't mean "factory" in the literal sense. Don't they love re-defining English? I also take issue with Microsoft's concept of a software factory for slightly different reasons.

Developers that are part of a software factory crush themselves over time.

I love patterns. However, I wouldn't love to use a tool that only allows me to create applications in terms of pre-described patterns. While this is an extreme example, it's quite near to the reality of software factories where developers interact with a visual modeling environment and a domain-specific language (DSL) engineered to leverage a set of pre-built patterns and libraries.

Adapt or Die

Earlier in my career, I had to opportunity to build applications for a bank using a 4GL tools -- specifically Informix 4GL (anyone remember that). The environment was awesome for building form-based applications against Informix databases. However, over time the bank starting migrating dumb terminals to PC's and the demands for client-server applications grew. The expert 4GL developers struggled to make the transition. Their experience and skillset were constrained and limited by the environment they were working within and begun to realize that the knowledge didn't readily adapt to the burgeoning world of client-server. Luckily, 4GL was just one of the technologies I used, so I was able to adapt. Why does this matter? Some researchers see 4GLs simply as a subset of DSLs.

Interestingly, look at the SAP development community. For years, they had special programming languages and environments. Now, they are moving their entire community to tools based on J2EE and Eclipse. Sure, they have a set of customized frameworks and editors for SAP-specific development, but developers have the full richness of a broader platform for integration and customization. This is good news for a SAP developer whose skillsets are now more applicable to other domains.

Cooking with software factories

In a recent piece, Jack coined a cooking analogy describing schemas as the list of ingredients and templates as the bag of groceries, which are all cooked up in the VSTS kitchen. That won't help developers using non-Microsoft IDEs, scripting languages and frameworks, who target multiple delivery platforms. Developers using SFs will struggle to meet the needs of projects in mixed IT shops deploying to Windows and non-Windows PCs and devices. But...Microsoft could care less about that...

To us, it seems that developing with SF is a lot like working as a line cook at a chain restaurant such as TGI Fridays. Many of the ingredients for the entrees are pre-prepared, frozen and available for cooking and assembly. The recipes are mandated from corporate and every TGI Fridays has food that tastes appreciably the same. I suppose there is a certain elegance to the consistency.

Now compare that with a chef like Charlie Trotter. He has a set menu at his restaurants, and many of the building blocks (sauces, stock, etc) are made in advance by him or a sous chef. However, he has the skills to adapt the menu based on need. Maybe he's serving a large group with special dietary needs - he can construct a menu to meet their needs. Maybe a certain seasonable vegetable is particularly fresh and could be integrated in a few dishes. He has the raw skills and ability to adapt based on changing need. He is Agile.

Versatilists

Thomas Friedman in The World is Flat listed 4 roles that are most likely to maintain their jobs in a flat world. The role most applicable and attainable to software developers is a versatilist (unless of course you've attained developer rock-star status like DHH or Erich Gamma). A versatilist is someone who can be a specialist yet also adapt and evolve as needed. In this interview Friedman advocates CIO's focusing on making all their people versatilists.

So in an age where being versatile is more important, are software factories really addressing the needs of developers?

 

Application Development Trends Highlights Value of Transparency Provided by 6th Sense Analytics

Jason Turcotte writes about 6th Sense Analytics in his recent post Software Brings Transparency to Dev Environment at the Application Development Trends site:

"6th Sense Analytics offers software that provides enterprises with what�s really going down during the dev lifecycle, tracking how much time developers devote to projects, providing time estimates for future projects and alerting managers to those projects falling behind. The analysis also gives developers insight as to how they�re spending their day, which tools they are using most often and the periods (or �flow� time) in which they are most productive."
 

  • Page 2 of 2
  • <