Software Factory #1: Why it matters ?
Software is everywhere. You probably have heard about it. Many organizations are disturbed in their original business by the arrival of software. Changes in culture, tools and processes are needed. This is the first article of a series that will give you some ideas on the state of the art of a modern organization, as I see it. I will cover Software Factory, Software methodologies, DevOps, NoOps, Continuous integration and continuous Delivery and about agility also.
But let’s start first with some basics: definitions, history and key benefits of Software Factory.
Software Factory: What’s that?
The term Software Factory refers to a structured collection of software assets and methodologies that help producing software applications or components. This is a necessary idea taking the challenges involved in professionalizing software development into account, especially in terms of Software quality assurance.
The name “Software factory” stresses a long-term commitment to enhance software operations by switching from an artisanal way to an industrial way. The term factory has, however the controversial connotation that software development and maintenance is comparable to mass-production of traditional manufacturing and arguably this is not completely the case.
Software Factory: An old name for new challenges
The concept of Software Factory is not new; it is an old computer concept.
The first company in the world to label a software organization as a factory was Hitachi in 1969 (prehistory for computer science). A software factory boom followed in Japan, where NEC, Toshiba and Fujitsu launched their own Software factory during the 70's and 80’s. It was followed during the 90’s in Europe via the Eureka Software Factory program.
Even if the concept is not young, as agile methodology was back in the 90’s, we still see a lot of organizations today failing in front of common software pitfalls. Before going any further in this concept and all of its related concepts, I think it is good to clarify something very important: even when Software Factory is about building an effective and efficient software organization with a powerful combination of suitable infrastructures, tools, and process features, this cannot work without strongly aligned managerial guidelines
Here we are facing a 70/30 problem. Technique and tools are only 30% of the solutions, 70% is related to processes, culture and how humans interact with these sets of tools and methodology. Here, we can easily establish a parallel with the first value of the Agile Manifesto : “Individuals and interactions over processes and tools”.
The challenge for software management is to find a way to globally improve organizational skills not just for one project but across a multitude of projects. Achieving this requires companies to find the right balance between two contradictory goals: efficiency and flexibility.
Why do you need a Software factory
The famous sentence of Marc Andreeseen “Software is eating the world” is now in every head.
The game is changing and is changing fast. The idea that “every company needs to become a software company” is considered almost a cliché. Your old product-focused business needs to move to a service-oriented business. Software is taking a more important part of your business year after year, and this competitive run in software and innovation (with new challenges like startup companies) reduce your time to market. Everything evolves faster. No more time to grow, everybody thinks market at a global scale! Think globally act locally.
It is non-trivial for a company in a non-tech traditional industry to start thinking and acting like a software company. Old models were based on the economic advantage that came from separating your enterprise from the outside world. Inside the enterprise, you had some control over your cost structure and your culture. Disruptive technology and OpenSource is changing all of that. Take the “shadow IT syndrome” for example: Your employees use outside technologies on a daily basis because they can’t wait for you to build them.
Another example is Analytics and Artificial Intelligence are going to change everything we know about our world and ourselves, but before they do that, they’re going to change your business. More and more jobs will be automated; even Human Intelligence Tasks will be automated. Amazon Mechanical Turk is a good example of this. Again, the game is changing and it will be changing with or without you. Understand that this is a key for the sustainability of your future business.
Modern Software Factory gives you the ability to rapidly build and deliver software experiences. It will help you adapt your company to this new game It will help you to adapt your company to this new game. The principles of this factory all lead to one thing: delivering continuously improving and customer-focused innovation. It is the key to your business longevity.
I want it! Give me one now
Yes you can have it, we will cover all details in future posts, but for the moment, let’s keep the focus on key ideas.
Before rushing on it, you will have to remember that Software factory is built on 3 key principles.
To quickly raise value with best efficiency and minimum overhead, you need to change how you build software. You need highly adaptable methodologies. Long release cycles with rigid waterfall and big-bang integration will not deliver the velocity you need to thrive. “Release early, release often” as Eric S Raymond said in his 1997 essay The Cathedral and the Bazaar, one of the most famous essays in the OpenSource world. (I will come back to this with more in depth insights on user-experience, scrum methodology and Behavior Driven Development in another post.)
Factory does not just deliver better, faster and cheaper software, it delivers organization culture. Producing and delivering continuously and at scale is very different from managing application upgrades one or twice a year. You need strong collaboration between building and operating your software experiences, silos should be broken down, goals should be shared and understood by your whole team in all units of your organization. (this will also be the topic of a next article where I will come back on DevOps and NoOps culture, Behavior Driven Development and the importance of communication sharing for Software Quality).
Automation is a key success factor. To deliver innovation at speed, your new factory must be highly automated. Why? Because automation has many advantages, it reduces errors in manual processes, it covers stupid and redundant steps and frees up your expert human resources to focus on what really matters. It provides feedback and metrics to continuously improve your quality without the risk of over-engineering. (again another article I have in mind will come back to this with Continuous Integration and Continuous Delivery).
This is an introduction to Software Factory, really. The idea was first to introduce some definitions, recall the concept and basic principles and list all trendy software methods and tools.
I would summarize by saying Software factory is an old name for new challenges. I believe it is time for everybody to know about it and deploy it, because software is already inside your company's business and it will be more and more. I will come back soon with other posts focusing on deeper insights related to the subject: infrastructure, DevOps, NoOps, etc.
Feel free to give your feedback in the comments zone below.