One Model for Effective Software Development
Ken Pugh, ken@kenpugh.com
Based on a suggestion by Dave Snowden to find the essentials of software development, I examined practices, principles, and values from agile, pre-agile and lean. From that examination, I’ve developed a preliminary model for effective software development. I’ve used the term effective based on Stephen R. Covey's The 7 Habits of Highly Effective People written in 1989-90.
Effective software development is accomplished by:
· Effective individuals working as effective teams
· Using effective team and inter-team processes
· In an effective organization
· With effective leadership.
The result is effective value delivery.
Effective individuals’ characteristics include:
· Trust
· Respect
· Transparency
· Collaborative
· Learning mindset / experimentation
· Active listening
Effective teams:
· Composed of effective individuals collaborating together
Effective team processes and inter-team processes:
· For scheduling (e.g., Iterations, flow)
· For implementation (e.g., BDD/ATDD, DevOps pipeline)
· Produce components that may directly deliver value or may be a part of a composite that delivers value
· Iterative / incremental / experimental as appropriate
Effective leadership:
· Provides the context in which teams and individuals can be effective
· Let authority flow to others
· Encourages experimentation and learning
Effective value delivery:
· To the customer
· To the business
Learning includes:
· What will deliver value
· How to deliver value (team and inter-team processes)
· Improving effectiveness
Other facets of effectiveness:
Context is important:
· Value delivery context – external environment, market, infrastructure, etc.
· Value creation context – internal team and inter-team processes
Congruency:
· Individual, teams, organizations, leadership congruent in goals, values, culture