I had the pleasure this week of talking to a co-worker about programming. We both mused that there is nothing quite like loosing yourself in a coding project. I’ve never lost track of time building a PowerPoint, but coding - geesh whole days have gone by in a flash.
There are a lot of reasons to like a show like NCIS, although for me there are two draws. One is watching David McCallem, a.k.a. Ducky, or as I like to remember, Illia Kuryakum from the Man from U.N.C.L.E. THAT was quality television, circa 1968.
The second draw is watching Gibbs work on his boat, in his basement. Gibbs can be somewhat acerbic in his responses, so after nine seasons, we’re still not exactly sure how he gets his boats (there have been multiple) out of the basement. He is said to have burned them - although a simple thought experiment would seem to rule that out on the merits, e.g. smoke detectors, flames, joists, confined space ... you get the picture.
Gibbs has also claimed that he just “breaks the bottle”, a classically uninformative retort.
As a programmer I have been witness to countless solutions that “broke the bottle”, i.e. solutions that worked in one carefully constructed manner, but once they hit the real / production world could not stand up. Maybe they failed for reasons of security, or throughput, or resiliency. If only the designers, developers, and deployers had a roadmap to which they could compare their solutions before they began building boats in their basement.
A Reference Architecture is a guide, a template, a sample general solution that aids in the development of a specific solution. The value of a reference architecture is that it communicate boundaries and options to the developer such that the final product conforms to the environment in which it will live.
The Gibbs character is smart, so I’m thinking that the whole get-it-out-of-the-basement problem is actually part of the therapeutic process. We, however, are not here to resolve childhood traumas (generally), so building boats that can’t fit through the door should be avoided at all costs. Our applications, systems, and solutions should all be based on Reference Architectures that align with our business aspirations, technical capabilities, and human capital.
Gibbs, before you start your next boat, talk to an architect.