Present and the Possible in Software Development

September 23, 2008 — Posted by Jim Trott

Listen to the podcast The Present and the Possible

There is a gap between what is possible and what is present - what is done - in the software industry. How much time and effort is wasted, how much re-inventing and re-discovery is done because we don't always understand the hard won insights from the past about what is required to create quality, sustainable product? How many companies have not realized the success of process improvements, like Agile, because they have not really understood its principles?

This gap, and the pain and waste it causes, is frustrating. Closing the gap involves a little re-orientation, becoming intentional to learn and try and adjust, to improve continually. To become more professional.

Professionals strive to build on the learnings of others. They avoid taking unnecessary shortcuts, especially when that could harm the product over the long term (imagine what would happen to the civil engineer who kludges together something for the last 2 feet of a bridge just to get it finished up or just to try some new, cool idea). They follow the best practices in how we develop and manage people, in the processes and methods we use, and in the proper way to use tools and technologies. 

Laws of the Wood

Professional carpenters know that there are certain "laws of the wood" that they must follow in order to build products that will endure and to build them efficiently and profitably. For example, cross-cutting across the grain give you one kind of cut and cutting with the grain is very different. They are basic laws or principles that must be followed to avoid wasted effort, wasted wood, designs that fail.

We have our own "Laws of the Wood." For example, there are design principles such as the Dependency Inversion Principle, the Open-Closed Principle, the Liskov Substitution Principle (all things that we have written about in Design Patterns Explained). Failing to work within these laws, principles, forces, leads to wasted effort, products that cannot be maintained, designs that fail.

Bob Martin has been advocating this for a long time, calling software developers to become "craftsmen." While Alan uses the term "professional" to describe this, he is in "violent agreement" with Bob and his intent.

It is time for us to raise the bar in terms of how we are building software.

But what about creativity? We don't like to be constrained as developers. Far from taking away creativity, cooperating with these laws and principles allows creativity to flourish. It helps reduce the complexity in what is surely one of the most complex of human endeavors so that what we do create has the greatest chance of succeeding. In the 1960's, NASA put a man on the moon. They cooperated with their "laws of the wood" (e.g. gravity) to create solutions to an amazing array of problems to create a thing of beauty. The laws give us parameters and boundaries within which to be innovative and get problems solved.

If you don't follow the laws, principles, you just won't be as effective.

The Long Journey

Why don't people follow the laws of development?

  • They don't understand the implications of not following the laws... 
  • They feel time pressures: feel a need for a short cut now.  
  • They fall back into old habits,

Sadly, these short cuts don't always give longer term gain... and if they understood the principles better, the good practices approach is just as efficient as those "short cuts."

It is natural. And change is going to involve taking what Gemba Panta Rei and Toyota calls the "long path".

What this means is that we adopt a mindset to make progressive improvement, learning as we go and adjusting our thinking as we discover what does or does not work. Constantly, intentionally perfecting what we do, sometimes in small steps that take us down the right path.

The good news is that, at some level, many developers do know - or almost know - many of these good practices. They may be buried in our intuition, but at least they are not foreign to us. Sometimes, it is just a matter of surfacing these so that we are conscious about them. And that helps shift our thinking.

The long path involves shifting our thinking at all levels: as individuals, as teams, and organizationally.

The further along we go, the closer we are going to get.The higher we are going to raise the bar on our work. The more satisfying our work will become. The more our customers will realize value from the work we do.

Recommendations - Online Resources

Recommendations - Training by Net Objectives

Music used in this podcast

For more information, contact or visit us at

Blog Type: 
Subscribe to our blog Net Objectives Thoughts Blog

Share this:

About the author | Jim Trott

Jim Trott is a senior consultant for Net Objectives. He has used object-oriented and pattern-based analysis techniques throughout his 20 year career in knowledge management and knowledge engineering. He is the co-author of Design Patterns Explained: A New Perspective on Object-Oriented Design, Lean-Agile Software Development: Achieving Enterprise Agility, and the Lean-Agile Pocket Guide for Scrum Teams.


Blog Authors

Al Shalloway
Business, Operations, Process, Sales, Agile Design and Patterns, Personal Development, Agile, Lean, SAFe, Kanban, Kanban Method, Scrum, Scrumban, XP
Cory Foy
Change Management, Innovation Games, Team Agility, Transitioning to Agile
Guy Beaver
Business and Strategy Development, Executive Management, Management, Operations, DevOps, Planning/Estimation, Change Management, Lean Implementation, Transitioning to Agile, Lean-Agile, Lean, SAFe, Kanban, Scrum
Israel Gat
Business and Strategy Development, DevOps, Lean Implementation, Agile, Lean, Kanban, Scrum
Jim Trott
Business and Strategy Development, Analysis and Design Methods, Change Management, Knowledge Management, Lean Implementation, Team Agility, Transitioning to Agile, Workflow, Technical Writing, Certifications, Coaching, Mentoring, Online Training, Professional Development, Agile, Lean-Agile, SAFe, Kanban
Ken Pugh
Agile Design and Patterns, Software Design, Design Patterns, C++, C#, Java, Technical Writing, TDD, ATDD, Certifications, Coaching, Mentoring, Professional Development, Agile, Lean-Agile, Lean, SAFe, Kanban, Kanban Method, Scrum, Scrumban, XP
Marc Danziger
Business and Strategy Development, Change Management, Team Agility, Online Communities, Promotional Initiatives, Sales and Marketing Collateral
Max Guernsey
Analysis and Design Methods, Planning/Estimation, Database Agility, Design Patterns, TDD, TDD Databases, ATDD, Lean-Agile, Scrum
Scott Bain
Analysis and Design Methods, Agile Design and Patterns, Software Design, Design Patterns, Technical Writing, TDD, Coaching, Mentoring, Online Training, Professional Development, Agile
Steve Thomas
Business and Strategy Development, Change Management, Lean Implementation, Team Agility, Transitioning to Agile
Tom Grant
Business and Strategy Development, Executive Management, Management, DevOps, Analyst, Analysis and Design Methods, Planning/Estimation, Innovation Games, Lean Implementation, Agile, Lean-Agile, Lean, Kanban