Thursday, April 10, 2014

Death of a Programmer


During the 18 years that I was an application development professional, I took great pride in being a part of the elite group of geeks that could write an application that was needed by the business or desired by the public.  After all, I had spent 4 years in college formalizing the previous 5 years where I was cobbled away in the corner of the library or computer lab writing applications on a TSR-Model I (4K of RAM!), learning how to be a practitioner of the black arts.

And so when I first started seeing process automation solutions like BMC Atrium Orchestrator and later CA Process Automation, I was aghast.  "How dare they!" I bellowed.  "They're taking away my own secret sauce that makes me stand out from the crowd!" I yelled.  Never mind that I left application development in 2005 - I just wanted to maintain my status as one of the computer programming elite.

Lately, I've been getting more intimately involved with CA Release Automation.  And while I'm still recovering from the apoplexy of having my status revoked even further, I will grudgingly admit that this solution is...well...rather neat.

For those of you who may not be familiar with CA Release Automation or, more generally speaking, application release automation, this solution addresses the challenges in deploying a complex application to multiple environments each of which have differences in their make up.  (This normally would require a unique deployment mechanism for each environment to account for the differences.)  The CA solution, specifically, allows an author to create a deployment process that is based on the application architecture and is agnostic to the target environment.  It is only when the process is executed that the solution discovers the target environment topology and maps the process to that environment automagically.

What makes this solution so fun to play with is in the way that it implements this "logical process" concept.  Providing a nice graphical interface, the author is allowed to string together actions that are to be executed.  These actions can be interfaces with the operating environment (e.g. start a website on IIS) or programmatic operations (e.g. manipulate a string).  Variables (called parameters), parallel execution, and conditional / branching logic are all supported.

In other words, this is a graphical way to write an application.  No prior programming experience is required.  Furthermore, a library of predefined actions for doing things like interacting with various, popular infrastructure components (some related to the application like the IIS example and some indirectly related like interacting with a source code repository or ITSM solution to check the status of a change order that was entered by the Help Desk).  This action library currently contains over 1,100 actions and is updated on a monthly basis.

I realize that no one is going to write a first person shooter or the next version of Flappy Bird using this technology - since this is a process authoring solution - but I can easily imagine this concept being taken further to allow fully graphical application development much like we were led to believe was on the horizon when LOGO was first released in 1967.