Edward and I have just finished delivering another TechEd, in Japan this time, on 'Building Your Own Software Factory'. It has been a very good trip with certainly some interesting experiences. It's the first time we have delivered this session with live translation - and everyone here is extraordinarily polite.
I found it particularly interesting that the Japanese market has little exposure in this space from a global perspective, considering these guys are certainly strongly behind this initiative, and several large manufacturing companies are executing this vision today. There is a historical tie here with Software Factories from as early as the 70's - 80's based upon work done by Dr. Matsumoto, who even today, although retired, is a huge active proponent of the software factories work, based upon his preface to the Japanese translation of Jack's and Keith's book. (It has sold over 2000 copies in Japan alone!). I was very grateful to receive a printed copy of this book from one of the Japanese translators - Kazuyuki Nomura - whom happens to be one of the top leads for software factories at Microsoft Japan. (We are hoping the community hears more from the local team here and we fully expect them to contribute some new factory papers based on their experiences in this part of the world).
We spent some time in subsequent discussions with various local solution integrators, partners and customers. It became clear that the software development model in Japan, [the relationship between end-customer and partner (Solution Integrator)], is much more formalized and rigid here than perhaps in other regions of the world. This introduces new practical challenges when adopting a software factory approach for several reasons related to: IP protection, the division of labour between these two parties, and the requirement to reuse existing assets and IP solely owned by the end-customers.
The key issue area's here are related to "Software Factory Verticalization" (factory specialization and factory extensibility), a topic very close to my heart right now. I will be exploring the story of this more fully with practical resolutions to them in a subsequent posts, but the experiences here have challenged the fundamental assumptions we have when discussing custom software factory specialization with respect to the specific challenges they face here. (I am certain that other world markets will have the same issues to much the same degree).
For example, considering the standard end-customer/solution integrator model of software development popular today. Where, in the case for software factory development, the solution integrators create the factories and use them to create products that they then sell to end-customers. In this model, we tend to assume that it will be the system integrators (partners) who would be building the specialized (vertical) software factories. They will likely create products for multiple customers (in each vertical market segment) from this factory using their own reusable assets (that they would have likely harvested from previous solutions they built for other customers).
But what happens when an end-customer has a requirement to reuse their own assets, ones they already possess in their enterprise, as part of the solution the factory builds for them? It's not unreasonable to assume that there may be reusable assets already deployed in a end-customer's enterprise, specific to that enterprise's IT policies, that will be good candidates for reuse in any factory-built-solution built for them.
Clearly, for a partner to reuse specific end-customer's assets in their factory to create products for other end-customers is an IP issue for each and every end-customer. It makes it an interesting business model between the partners and end-customers. This raises the critical question - who invests in the construction of the factory?, who owns and actually builds the factory?, and who uses the factory to create the products? Clearly, it might seem case-by-case - but you can catch more on this topic in a later post.
Edward and myself also celebrated the close of several months work completing our short series on software factory packaging and team build implementations for software factory solutions. As an early announcement, we can say that we have completed 2 white papers - bound for MSDN - that should be published very shortly, that are based upon past shared practical experiences of packaging and team development , which we hope will unblock a number of people building software factory solutions today. So, you can expect to see a couple of papers on MSDN entitled: "Packaging & Building Software Factories" - 'Part 1, Packaging with Visual Studio 2005' and 'Part 2, Automated Builds with Team Foundation Server'. (But please don't ask us when you can get your hands on these, as I can only direct you to watch the MSDN Architecture Center for their appearance in the near future - it is over to the publishers now.)
We also have another series on the go, which the above series interrupted for the last few months, entitled: "Building Software Factories - Part 1, 'what are we building and why?', Part 2, 'what is it going to take?' and 'Part 3, how are we going to do that?" which are expansions on our TechEd sessions and blog posts in our 'Building Software Factory' series. You can also expect to see these on MSDN in the near future. (again, all enquiries for when they will be available - see the MSDN Architecture Center). Many customers have asked for readiness and training materials for building factories today, so until we have such programs readily available, we hope these papers will carry you forward. We will of course keep you posted as soon as we know these papers are up on the site for sure.