Having spent a considerable of time doing both, usually at the same time, I think there are significant similiarities between starting and building a small multi-person business, and starting and creating a software system.
Both involve intense collaboration
In agile terms, this is demonstrated by the tearing down of walls, the erosion of hierarchy, the daily meetings, the focus on results over protocol. The same is certainly true in business – you and your partners/friends must be completely in synch in order to have a chance at success.
Both involve adapting to change
No business plan survives contact with the real world. Neither does a software project plan. Constant regular tweaking, re-examination, re-evaluation is the hallmark of both disciplines. Daily meetings, risk evaluation and mitigation, coordinating and removing roadblocks, avoiding surprises.
Both prefer close customer collaboration
When starting a small business, one of your most crucial goals is satisfied customers who will spread the word. In agile software development, customer collaboration is key to building the right software for the customer.
The perfect is the enemy of the good
If you wait for your business plan to be perfect, you’ll never get started. If you wait for your software to be perfect, it will never ship. A good businessman (or woman) takes a pragmatic approach to their service – if they don’t have something to sell, it doesn’t matter how close to ‘perfect’ it is. In agile development, this is handled via iterations, which break the work into moderate-length chunks. Ideally, at the end of any iteration, the customer can decide to use the software as-is, rather than waiting for the “perfect” deliverable.
If you can’t trust your people, the rest doesn’t really matter. Entrepreneurship is an exercise in faith – that everyone is working towards success because they all want to share in the rewards. In larger organizations, this gets watered down as the fear of freeloaders and the diminishing rewards of success replace a culture of trust with a culture of paranoia. Agile development tries to reclaim that culture of trust, trusting that the developers and the testers and everyone involved is doing the best job they can under the circumstances.
A good leader gets out of the way
One of the most critical jobs of the leader of a small business is to get distractions out of the way, to let his or her team do the best job they can do, unencumbered by annoying frustrations that don’t help the business succeed. In the Scrum agile methodology, this is the ScrumMaster’s job – get rid of obstacles so the team can succeed.
Obviously, not every business works the same way. Food services may have stringent requirements on health and cleanliness that require a lot more up front planning. Other businesses may not be served well by iterative approaches. Still others may be so encumbered by laws that simple open trust is not an option – layers of security and monitoring are required just to “get in the door”.
But in my experience, these restrictions are often just variations, flavors if you will, on a general theme of openness, flexibilty, hard work and collaboration. Without this general theme, small businesses rarely (if ever) succeed, and the same is usually true of software solutions as well. Agile software methodologies are not the only way to create a collaborative, open, flexible culture, but they are definitley one of the best ways.