Process or Principle: Which is More Important for Software Development?
While reading Who Says Elephants Can’t Dance by Lou Gerstner, the following paragraph caught my attention and made me think about it in the context of software development.
We started with a statement of principals. Why principals? Because I believe all high-performance companies are led and managed by principles, not by process. Decisions need to be made by leaders who understand the key drivers of success in the enterprise and then apply those principles to a given situation with practical wisdom, skill, and a sense of relevancy to the current environment.
Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.
Although managing a company and managing a software project are two different things, I believe above paragraph is perfectly true for software development as well. Let’s paraphrase it:
We started with a statement of principals. Why principals? Because I believe all high-performance software development teams are led and managed by principles, not by process. Decisions need to be made by leaders who understand the key drivers of success in the software development and then apply those principles to a given situation with practical wisdom, skill, and a sense of relevancy to the current project.
Sounds true? For your curiosity, the principles Mr. Gerstner wrote for IBM in 1993 were:
- The marketplace is the driving force behind everything we do.
- At our core, we are a technology company with an overriding commitment to quality.
- Our primary measures of success are customer satisfaction and shareholder value.
- We operate as an entrepreneurial organization with a minimum of bureaucracy and a never-ending focus on productivity.
- We never lose sight of our strategic vision.
- We think and act with a sense of urgency.
- Outstanding, dedicated people make it all happen, particularly when they work together as a team.
- We are sensitive to the needs of all employees and to the communities in which we operate.
Now, what are the principals for software development? Here are Principles behind the Agile Manifesto:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
All are good principles. One problem in my opinion is too many. Should we cut them down to 7 (magic number for easy memory) principles?