What is Lean Software?
This is something we’re predicting will coalesce; right now it’s a bunch of individuals doing this on their own, but we expect lean software to catch on… Lean software could be the antidote to bloated vendors, products and applications and could be helpful in a down economy.
Rymer describes lean software as:
An approach to building, delivering and running software that values fit-to-purpose, simplicity and time to results above all. Lean approaches minimize complexity, startup time and resource usage, and [avoid] features and methods not essential to fulfilling the application’s business purposes. Developers can easily combine Lean software components with others when large systems require more features.
Rymer is spot on in discussing the need for programmers to build leaner, smaller applications. One thing the Web 2.0 push has taught us was to be more introspective when it comes to our application needs. Do we really need every application to be a monolithic exercise in features and functionality? Probably not. Lean software is also very much akin to situational applications.
At the same time, the platform those applications are built on are extremely important. The platform itself must be rich enough to support agile development models where apps can be deployed at will and common business infrastructure components don’t have to be built up from scratch. It is also important for the platform to allow situational and lean applications to connect to each other natively so you don’t end up creating another application silo.
Rymer also stated seven principles to follow for developing lean software:
- Use fit-to-purpose tools and platforms
- Employ a lean and agile development process
- Follow standards that enable pluggable components for tools and applications
- Hire skillful developers
- Leverage open source
- Optimize deployments
- Rent or outsource context and own core applications
As Rymer mentions, there are some solutions already in the form of OSGi (Open Services Gateway Initiative), SaaS (software as a service) and PaaS (platform as a service), which provide modular and elastic alternatives to heavy solutions.