“Ship, Then Test”

That phrase headlines a section from entrepreneur Guy Kawasaki’s The Art of the Start, and engineers would call these fighting words.1 Yet many businesspeople would nod in agreement with the thought.2

Why the different reactions?  For those who cannot appreciate the headline, it represents an ongoing tension between software developers and the consumers of software.  Software engineers understand human limits in expressing ideas through code and are very aware of potentially disastrous consequences with undiscovered bugs in code. Businesspeople focus on delivering value and are sensitive to market conditions where timely reaction to change is necessary to remain competitive.  Ergo, the source of the tension: software testing takes time and markets do not wait.

In general, there is often disagreement on what degree of testing is good enough and that evolves into adversarial relationships. 3 This pattern existed ever since the nineteenth century computing pioneer Charles Babbage and the British parliament did not see eye-to-eye about continued funding of his projects.4 This applies to many other areas.  In manufacturing the marketing branch’s expectation is often at odds with the physical constraints on production lines. Likewise, college faculty and administrators disagree over budget priorities, and the list goes on.  I personally saw this play out throughout 20 years in private industry prior to an academic career and, in the vernacular, it “often got ugly.” 

While it may not be a panacea, I do believe this could be ameliorated somewhat if professional schools (engineering, business, etc.) incorporated General Systems Theory (GST) into a curriculum and employers embraced its lessons.  Going forward, I will focus on one specific aspect of GST: boundaries.  First, an overview of GST is in order. 

GST is an all-encompassing way to explain complex organizations.  Succinctly, a system is a collection of entities that interact together for the sake of a common goal, and systems are often composed of other systems.5  Indeed, creation itself is at the top of this hierarchy.6  In general, understanding systems needs a holistic approach and models do not capture all the complexity – but models can help.7 GST is a broad subject, and the brief discussion here barely scratches the surface.  Considerations of feedback loops, system stabilization etc. should be explored, but again, the focus of this article is on the significance of borders within and between systems.

Philosophically, software development is oriented towards reductionism; early on students learn to break problems down into understandable components.  At a higher level, future systems analysts master how to identify workflows of well-defined processes that are linked.  (Software developers and analysts will be referred to collectively as “systems developers” going forward.)  Each component and process has a specific purpose that contribute towards a larger goal.  Determining how components and processes exchange information (i.e., inputs and outputs) is the initial identification of boundaries, and the practices certainly complements GST. 

Think of a payroll processing activity.  Prior to producing a paycheck there is a process most likely supported by software to collect employee W-2 information.  Other separate activities recorded salary recommendations from managers, and periodic employee timecards etc.  The mechanics of calculating and producing the payroll happens behind the scenes (i.e., a boundary).

In my experience, systems developers accepting only this pure black box view of interacting parts is the beginning of the contentious relationships I witnessed in the commercial sector.  It was not just the almost sacrosanct rigid views of software development processes.  It was also manifested by business managers preferring strict communication control between organizational elements, among other things.  Often, these boundaries lead to tribalism within an organization, creating more of an organizational dystopia.8

One of the original thinkers of GST is Austrian biologist Ludwig von Bertalanffy.  He notes that being more intentional about GST results in a significant benefit: “In one way or another, we are forced to deal with complexities.”9 According to the American environmental scientist Donella Meadows, it is the boundaries where the greatest complexity exists,10 and I believe it is this origin of complexity that gets overlooked by many in our day-to-day work world.

Systems developers are prone to see a “system” boundary with “inbox” and “outbox” portals, but there is another property to a system boundary like a boundary between countries.   Keep in mind that boundaries in human systems are imagined for clarifying where one process starts and another ends, but boundaries are seldom precise.  Those boundaries also represent people on both sides with a vested interest in their “component.” Specifically, recognizing people also recognizes a culture, and cultures according to Schein include shared values, habits of thinking, shared meanings, and “rules of the game.”11  I believe not acknowledging this contributes to the tension noted at the start of this article. 

Academia and industry can offer opportunities to encourage a greater appreciation of boundaries.  An interdisciplinary approach in education is a good start, and many computer science curriculums are offering programs in that direction.  It gives students a deeper appreciation of a world where many members with diverse gifts make up the body.12  As a systems officer in the U.S. Army and in leadership roles in industry, I found the most effective action was encouraging engagements of people where the boundaries on paper were found, literally finding opportunities where people could walk in the shoes of others.  It proactively facilitated one of Covey’s habits for effective people: seek first to understand, then to be understood.13

I close this article with an anecdote that gives an example of how even an internship can be the start of appreciating the dynamics of system boundaries in a career. 

When I supervise internships, I encourage students to journal holistic observations about their host’s organization.  I fondly remember one computer science student’s end of internship presentation.  His internship had more emphasis in working directly with the business unit (the other side of the fence, if you will).  He observed first-hand the relationships between the systems developers and the business unit.  He reflected on those difficult moments of issue resolution. He concluded his presentation with “the one thing I’ve learned is you don’t always have to be right.”   

In that statement, I could hear an echo of Proverbs 18:2: “Fools find no pleasure in understanding but delight in airing their own opinions.” More importantly, as suggested by GST, it’s a recognition that openness to other perspectives at a boundary brings us closer to loving our neighbor, similar to Matthew 18-20 where Jesus was asked about paying taxes.  That was a boundary between a system of civil laws and a system of religious laws, and Jesus offered the perspective of context.  If there is less tension in a future world, I believe that former computer science intern will be part of it.

 

Footnotes

  1. Guy Kawasaki, The Art of the Start: The Time-Tested, Battle-Hardened Guide for Anyone Starting Anything (New York: Penguin Group, 2004)
  2. In all fairness, Kawasaki noted an exception to critical systems such as those supporting healthcare and in The Art of the Start 2.0, that section title was dropped
  3. The idea of “good enough” is not a flippant one.  James Bach describes its use in determining cost effectiveness in software development.  The full paper is available at https://www.satisfice.com/download/the-challenge-of-good-enough-software
  4. Bill Pflegling and Minda Zetlin, The Geek Gap, Why Business and Technology Professionals Don’t Understand Each Other and Why They Need Each Other to Survive, (Prometheus Books, Amherst, New York, 2006)
  5. Donella H. Meadows, Thinking in Systems, A Primer, (Chelsea Green Publishing, White River Junction, Vermont, 2008)
  6. Genesis 1
  7. Ludwig Von Bertalanffy, General System Theory: Foundations, Development, Applications (Revised Edition) (George Braziller Inc, New York, 1969 )
  8. This thought is similar to Von Bertalanffy’s comment that “scientific control of society is no highway to Utopia.” 52
  9. Von Bertalanffy, 5
  10. Meadows, 96
  11. Edgar H. Schein, Organizational Culture and Leadership (The Jossey-Bass Business & Management Series) 5th Edition, Kindle Editions (Wiley, Hoboken, New Jersey, 2017). Calvin University is one example that offers a CS-Plus degree – Computer Science complemented with a non-computing discipline of a student’s choice.
  12. Romans 12 (NIV)
  13. Stephen R. Covey, The 7 Habits of Highly Effective People: 30th Anniversary Edition (Simon & Schuster; New York, 2020)

Patrick M. Bailey

Patrick M. Bailey is professor of computer science at Calvin University.