Along with staying within budget, time to market is the leading driver of IT projects. And to keep projects moving, IT project managers look for ways to automate pieces so projects can complete faster. In the process, they learn that while automation can be beneficial, there are still many areas of a project that shouldn't be automated—or they risk project failure.
What aspects of projects are good candidates for automation and which should remain in human hands? Let's start with the good ones.
What to automate
Project management/administration software
When project management software first appeared, the project tasks and schedule were maintained on a desktop computer and it required a full-time project administrator to key in every task and keep it updated. Even then, this administrative person couldn't keep up with current project status, so project members functioned with out-of-date information. Now with collaborative project management software in the cloud, individuals can update their own tasks and have total visibility of the project.
Top-level quality assurance
Top-level QA tools now exist for testing the functionality of field edits in applications and for bench-testing new apps on different mobile platforms (laptops, tablets, iPhones, Androids, etc.). At a time when enterprises have more apps on mobile devices than ever before, being able to QA the compatibility of an app on each device with automated test tools really helps.
Operating systems provisioning
In Linux, Windows, and mainframe OS environments, virtual instances of operating systems can be automatically configured and deployed for purposes of application testing. This saves hours of expensive system programmer and DBA time—and it enables application developers to quickly test their apps without having to wait for test OS environments to be set up by support staff.
SEE: IT project cost/benefit calculator (Tech Pro Research)
A CEO friend with a small company once boasted that he was able to build an entire app for his firm with the push of several buttons that automatically deployed a web app, the supporting OS and backend infrastructure, and even a telephony-enabled function in a matter of minutes. He was using IBM BlueMix to do this. There are many automated application generators that enable even non-programmers to develop and deploy apps. If these auto-generated apps don't need to be fine-tuned for performance, they can be a great way to develop apps quickly.
Software that comes with API tools that enable you to auto-integrate new apps with other pieces of software can take much of the time out of having to manually code and test application interfaces.
Regression testing tools
There are automation tools that can test a new app against an existing code base that the app must work with. These tools identify any programs or subroutines that the app must "talk to" but isn't integrated with. With these integration holes identified, programmers can go in and effect the necessary integration.
Stress testing tools
There are also automation tools that build scripts for stress testing a high performance app against a large set of transactions to ensure that the app can handle the load. A stress test preview can help application and systems programmers ascertain whether they have figured in sufficient storage and processing for the app.
What not to automate
Usability/ease of use is a critical element of application acceptance for end users. Although there is automation that can style an app GUI based upon web or other standards, nothing can replace an end user's knowledge of their business processes and how to right-fit application navigation, displays, and functionality for those processes. For this reason, an IT analyst should always work hand in hand with the end user in application front-end and GUI design.
QA at the level of cross-field validation checks, or database access and commit routines, needs to be manually tested.
SEE: 15 books every programmer should read (free TechRepublic PDF)
High performance application code
Automated code generation tools are great at rapid application development, but because they use generic code generation techniques, they can also create more code overhead than is desired for applications that must perform at high levels. To optimize applications for high performance, it's necessary to fine-tune code so it can maximize operating systems and subsystems. The best way to do this is to enlist the knowledge and talents of highly skilled application and system programmers.
Pre-production stress testing
Automated stress testing can simulate what production workloads and environments look like, but the only foolproof way to stress test for production is to actually replicate your production environment and perform a full dress rehearsal. In this way, you can identify and solve any unexpected problems you couldn't see in simulation.
The right sets of automation tools can cut project time-to-market and eliminate the tedium of many manual tasks for IT staff. However, the key to capitalizing on these tools is knowing when to deploy them—and when not to. IT project managers must find the right balance of automation and human engagement in project work that maximizes the use of IT talent and gets the most from automation.
How much do you rely on automation tools to make your project development more efficient? Have you ever tried to automate a task that led to project failure? Share your experiences and advice with fellow TechRepublic members.
Mary E. Shacklett is president of Transworld Data, a technology research and market development firm. Prior to founding the company, Mary was Senior Vice President of Marketing and Technology at TCCU, Inc., a financial services firm; Vice President of Product Research and Software Development for Summit Information Systems, a computer software company; and Vice President of Strategic Planning and Technology at FSI International, a multinational manufacturing company in the semiconductor industry. Mary is a keynote speaker and has more than 1,000 articles, research studies, and technology publications in print.