This site attempts to provide a broad overview of the Big Ideas relevant to Software Development. See the Introduction for further information about the purpose and scope of the work.

The site's content is grouped into the following major sections.

1. Intro   +

This section explains the purpose of the site, and provides some context for the Big Ideas that follow.

1.   This Thinking Business

2. Fundamental   +

These ideas are so foundational that they are relevant to most or all roles, and in most or all phases of software development.

2.   Acknowledge Uncertainty
3.   The Inconvenient Nature of Software Development
4.   Software Development is a Balancing Act
5.   Create Value for Customers
6.   Automate Repetitive Tasks
7.   Use Things Already Known to Work
8.   Simplify and Generalize
9.   Decomposition
10.   Cohesion
11.   Loose Coupling
12.   Communicate Clearly
13.   Consider Alternatives
14.   Have Wonderful Arguments
15.   Show Rather than Tell
16.   Plan-Do-Check-Act
17.   Shorten Feedback Loops
18.   Understand the Arc of Your Project
19.   What's Not Done is as Important as What's Done

3. Leadership   +

Ideas primarily relevant to the leadership and governance of software development projects.

20.   Entrepreneurial Leadership
21.   Build Great Teams
22.   Govern Wisely
23.   Take a Long-Term Economic Perspective
24.   Consider What Might Go Wrong

4. People   +

The human dimension of software development.

25.   Increase Developer Engagement
26.   Developers are Always Growing
27.   Developers Are Not Interchangeable

5. Initiation   +

Things to think about when initiating a new software development effort.

28.   Agree on Terms of Engagement
29.   Pick the Right Sort of Customer Proxy
30.   Craft a Product Vision
31.   Quality Requires Extra Effort
32.   Plan Thoughtfully But Be Prepared for Change
33.   Tailor Thoughtfully
34.   Sharpen Your Axe
35.   When Estimating, the Whole is Definitely Greater than the Sum of its Parts
36.   Seek First to Understand Your Customer
37.   Just Enough Design Up Front
38.   Deliver Early and Often

6. Execution   +

Ideas to consider when code is being developed and delivered.

39.   Self-Organizing Teams
40.   A Deliberate Approach to Decision-Making
41.   Decrease Friction, Increase Flow
42.   Configuration Management
43.   Limit Work in Progress
44.   Make Problems Visible
45.   Remain Open to Fresh Learning
46.   Don't Wait to Integrate

7. Caution   +

A few important cautionary notes.

47.   Software is Different
48.   Software Development is a Craft
49.   Documentation Is Not an End Unto Itself
50.   Do Not Place Excessive Faith in Project and Program Management
51.   Let the Buyer Beware
52.   Stay Focused on the Creation of Working Software for Real People

8. Reference   +

A bibliography, a glossary, and various indices to the site’s content.

  About the Author
  Version History
  Alphabetical List of All Ideas
  Alphabetical Index

9. Search   +

A page from which you can search the site.

Next: Intro