Monday, June 1, 2009

Automation Angst


The mere mention of the word evokes feelings of magical fulfillment to the uninitiated. A promise of utopia is invoked; where machines perform the work, leading to reduced operating costs and improved profits. Unfortunately, the reality is that automation is a quagmire of decisions and implementation choices that if undertaken incorrectly can result in wasted resources and delayed and defect ridden products and services. I, myself, have learnt this the hard way in the past during an automated testing implementation project that I was involved in.

The definition of automation is “the use of control systems and IT applications to control machinery and processes resulting in the reduced need for human intervention”. Put another way, automation consists of programming applications to perform tasks that humans would otherwise have to do. Sounds good so far and you would be right. Even the ITIL body of knowledge devotes a section to tools and technology emphasizing the benefits of automation. However, while manufacturing industries have employed automation quite successfully, implementing automation in the world of IT involves added challenges and obstacles.

Let us first consider the areas that could potentially be automated; if not fully, to a partial extent. A sample list of areas that could be setup for automation is listed below:

  • Testing: Testing and particularly software testing has been a candidate for automation for a long time now and many organizations implement automated testing to some extent. Tools like Mercury Interactive’s Winrunner, QTP and so on are quite common in the industry nowadays.

  • Service Desk and Incident Management: While at some point in the incident handling process, human interaction is inevitable, a large portion of the process can be automated successfully, particularly for simple queries (like password resets). Automated phone menus that answer frequently asked questions, interactive web sites that answer customer queries etc. are examples of this concept.

  • Design: Again, while human involvement is inevitable, a lot of work can be automated utilizing design tools. The ability to perform modeling and forecasting during design, utilizing tools, is extremely beneficial.

  • Process automation: A variety of tools and applications exist that assist with the performance of various processes and procedures. Hewlett Packard and Computer Associates to name a few offer tools that are ITIL aligned.

  • Availability Monitoring: If an organization provides a network service, it will also have to monitor the network for disruptions. The ability to automate this monitoring capability is very helpful in providing good reliability. Other areas like security, capacity and continuity can also benefit from automated monitoring.

While this list is by no means comprehensive it gives us an idea of the potential for automation implementation that exists in IT. Now let us consider the potential benefits of automation listed below:

  • Reduced cost due to fewer requirements for human resources and reduced operation expenses.

  • Higher quality products and services (if implemented correctly).

  • Better repeatability as machines will have less variations than humans. This in turn leads to reduced defects.

  • Faster production as machines are generally faster than humans. This results in quicker delivery times.

  • Ability to operate at all times as machines can be run at night and on holidays.

Attracted by these potential benefits, most organizations take a stab at implementing automation in the workplace. However, there are pitfalls that exist that most often go unconsidered. The potential dangers of automating are:

  • Overly unrealistic expectations of automation. For example, while some part of testing can be automated, a machine will only report that which it has been programmed to check. If any defects exist outside of its programming they will go undetected. Therefore, the correct balance of automated and manual testing must be implemented.

  • Inadequate understanding of all the costs and resources involved to implement automation. Often, only the cost of the automated tool is taken into consideration. However, the cost for setting up the automated system and the constant adjustments that must be made as the product or service changes is generally not taken into account resulting in budget overruns.

  • Incorrect identification of areas that would benefit from automation. A product or service that is in a constant state of change is not a good candidate for automation as the effort expended in constantly updating the automated tool to accommodate the changes will nullify the benefits. An area that consists largely of repetitive actions is a better candidate for automation than an area with complex functionality that does not have repetitive tasks.

Therefore, it is clear that the implementation of automation deserves a great deal of analysis and consideration. Generally a combination of manual and automation implementation is necessary and the correct ration of the two must be properly understood. Furthermore, the pros and cons of implementation should be clearly analyzed and understood. The correct areas for automation should be chosen to provide maximum bang for the buck. Automation should not be viewed as a one time implementation but a repeated iteration of phased implementations that provide more and more automation coverage with each implementation.

To summarize, intense competition and evolving technology necessitate the use of tools and applications to take away the burden of work from humans. However, a well thought out plan to implement automation must be undertaken otherwise the consequences are unforgiving.

1 comment:

  1. I am the author of a software engineering meta-tool that can be used to automate the analysis, re-engineering, and translation of assemblers, 3GLs, 4GLs, XML, HTML, and proprietary, scripting, data base, and Domain Specific languages. This gives me a different emphasis on automation's role in IT -- the automation of the software engineering process itself.

    What do I mean by a meta-tool? It's an expert system for making automation tools, using its rules language to specify the task to be automated, with very high leverage on the amount of effort expended. This allows automation of:

    o Analysis, both production and ad hoc, including quality measures;
    "demographics" such as calling and include trees and symbol usage
    cross-references; impact assessments for proposed projects such as
    as ports, translation, or repurposing of the code; and even the
    recreation of a function spec from the code itself. Basically such a
    meta-tool can pull out of the code any desired information, at any level
    of specificity or abstraction, and in any format.

    o Re-engineering -- applying a set of transformations on the code and
    recreating the transformed version. This can include platform
    ports (OS dependencies); changes in 3rd-party software (API changes);
    identifying and extracting components for reuse; or specific changes
    needed on an ad hoc basis. Such a meta-tool can, through the creation
    of appropriate rules, turn anything into anything that makes any sense
    at all.

    o Translation of code from one language to another, to escape an obsolete
    or dying language or platform, or to commonalize the languages of
    disparate application sets, for example from a merger or acquisition.

    As with any expert system, such a meta-tool allows you to capture expertise and replicate it. In this case, the expert system is unique in that its domain of expertise is computer languages and programs, which of course includes itself. (Yes, the rules language can process and create itself...) For example, if you write a set of rules that capture your coding standards and conventions (including quality measures), you can effectively clone your programming manager on every desk.

    IMHO, the ability to automate the processing of computer language content in this way puts a whole new cast on the application of automation to IT.