Monday, September 7, 2015

Standing on the Shoulders of Giants

Standing on the Shoulders of Giants
At one level computer programming hasn’t progressed very much in the last 40 years. In 1974 in my first programming class at the Miami-Dade Community College I was told to write “Structured Cobol” to avoid GO TO errors.  Despite the invention of “object oriented” programming, “design patterns,” “inversion of control”  and other new paradigms for coding the fundamental issue still remains:
Spaghetti code
How can we write a big program to solve a complex problem that does not end up becoming a tangled mess of “spaghetti code?

But wait a minute -- something has to have changed since 1974 (it is not just that the hardware is faster and I am slower).  It is just obvious that something about computer programming itself has somehow advanced significantly because we can do so much more NOW than we ever could do back then. 

So what is different?  


My answer has nothing to do with computer science but with culture.  In the intervening 40 years we have agreed upon an increasingly higher level of open standards. These are standards for accessing and executing certain kinds of operations.  Sometimes we call these “API’s” sometimes “protocols” sometimes “interfaces”  but the operative words are Open and Standards.  These have nothing to do with all those cool techniques that we as individual programmers value but they are the slow collective work of our culture.   Yes standards are often first inspired by or initially created by a small group of programmers but ultimately it is the culture that decides and sanctifies that standard by adopting them.  

Consider this progression

Each level builds on the previous and feeds the next.
(This rough diagram came from a presentation I did about Kuali and Pesc in 2011)

To borrow from Isaac Newton:
We can do so much more as programmers today because we are standing on the shoulders of giants.

When we write code we no longer write to a specific video card or hard drive manufacturer as I once had to. I remember arguments about the best printer protocols but today most of us don’t even know what protocol our printer is using.   We can no longer write to that low level but we don’t have to worry about it either.  This frees us to code at a higher level.  We can be more creative at that higher level solving bigger problems because the lower levels just work.  This only happens because we as a community have coalesced around open standards.

So... the big question is...  Are we really ready to tackle whole ERPs?

These are the kings, the actual business level applications that sit at the top of the stack.  These are the ultimate complex business problem that we as business programmers have been writing and maintaining spaghetti code for for decades.

In my view YES.  


We can tackle the application level because we have standard service contracts that were funded initially by the Mellon Foundation in two initiatives OKI and Kuali Student.  Over the past 10 years these seeds have allowed hundreds of people to put their hearts and souls into banging out, testing and refining a set of standard and open service contracts.   An often under recognized fact is that for Kuali Student the Service Contracts themselves were intended to be first class deliverables -- as important as the working ERP that we all labored to build.  See section 2.2 of the Kuali Student charter.

From the beginning these service contracts were designed to be adopted as standards for the community.  They now embody the wisdom and diversity of close to thirty institutions ranging from public community colleges to private research universities as well as international universities.   These contracts now allow us to design and build the ERP systems of the future.  This is true at least in the Higher Ed space. These contracts model all the things we care about -- semesters, curriculum, course offerings, registration and grading but we also model people and orgs and scheduling and logging and authorization and so on.  We can then use these contracts to build and release systems by and for Higher Education. In that domain at least I believe we are ready for that next step.  We can reach that highest level of interoperability.

More to come...  

In my next two blog posts I will discuss “how” Boston College is leveraging these standard service contracts to punch out pieces of code and then wire them together to form their EagleApps system.

I will also talk about progress on another project which hasn't gotten much attention... In this project we are using these exact same standard service contracts to wire together community colleges with disparate systems to allow them to communicate with each other and to career centers.  See these two press releases

As these two projects move forward we will indeed be Standing on the Shoulders of Giants.