Here is an illustration called Johnny The Automation Bot, which is used to depict the different departments in a company. Each limb on Johnny represents a different department in a company:
Johnny The Automation Bot is an illustration of the areas that can benefit greatly from automation processes. Automation can be thought of as a procedure or system whereby a machine completes a job that a human would ordinarily do. Automation requires knowing what manual processes are being done, communicating with other departments, and finding what processes are being done manually. CI and CD, as we will see later in the book, are processes that greatly enhance company productivity and processes because they remove developer assumptions and specific environment settings.
Each limb on Johnny The Automation Bot has an area that is ripe for automation. The sales department is emailing Excel worksheets at the moment to the sales team, and is having a hard time keeping the sales information up to date with changes that other sales engineers are making. Johnny The Automation Bot suggests that the sales engineers have an easy way to upload sales information to a company intranet that can better keep sales information on track. Johnny suggests the developer team writes an Excel integration where the sales engineers can easily upload new sales data to a company intranet. For instance, a menu option that hooks into a company API endpoint could be added that would automatically upload new Excel changes to a company intranet page that has the latest sales information.
The QA department is manually testing the product, and manual testing is a time-consuming and error-prone activity. Johnny suggests that the QA department starts writing acceptance tests using Selenium WebDriver. Selenium is a browser automation tool and the QA department can use a language such as Python to write acceptance tests. Johnny says that the advantage of writing automated tests with Selenium is that they can be written once and reused again and again. This will have the added benefit that these tests can be hooked into a CI/CD pipeline, as we will see later in the book.
Betty from the QA department finds out that the customer success team is making a set of videos teaching customers newer features in each build. Customer success is uploading videos through FTP and some of the customer success team spends a large part of their day uploading files. Johnny The Automation Bot suggests that this process be automated through a script. The script should be intuitive enough that any member of the customer success team can run it and it should do the job of uploading and retrying the upload if any network latencies occur during the upload process. Betty shares a script that QA has written that can automate this process and be invoked to run as a background process.
Tony, a member of the customer success team, has now freed hours of work in his work day and can focus on the more important aspects of his job, such as setting customers up for success by creating fantastic videos. Tony has started working with the QA team and is going to start publishing videos and conducting user acceptance tests on parts of the product. QA is now able to better test features because the manual testing has been delegated to the customer success team. QA is focusing on automating the end-to-end test suite with a newer library that will help them write tests faster and, in turn, notify the developer team of broken functionality.
The marketing team has been embedding notes in PowerPoint slides and, at times, the notes are lost or overridden during presentations or company demonstrations. Johnny suggests that the developer team create a script that can convert the PowerPoint slides into markdown and that the markdown files can then be version controlled because markdown is just text files. This will have the added bonus that marketing can share information with the sales team to create more illustrative charts.
Victor has come to the realization that manual processes are destroying productivity and that manual processes have distinct disadvantages. Victor could introduce an automated system in the release cycle that be run be run by any developer in the team through a one-click deployment button. Instead of running all of the tests on a local workstation like Victor is currently doing, each software build can be pushed to a version control system such as GitHub, and all of the tests can be run on a CI environment, such as Jenkins, and developers can be notified automatically whether tests are passing or failing. Bruce, for example, is a newer developer on the team who can quickly read the developer documentation and start doing the next release with little or no guidance. Johnny The Automation Bot gives a big thumbs up for this practice.
Betty also has an opportunity to automate the manual testing process. Using a tool such as BrowserStack, Betty can write a series of testing scripts that test each part of the product. Within an hour, Betty can run a suite of acceptance tests in a testing environment and let Victor know the latest issues in the release. Victor can start assigning issues to the developer team and start writing regression test cases that ensure that there is no regressions in the current build. Victor, confident that the latest changes work as intended, can point Betty to a new URL where she can download the latest software release. Johnny The Automation Bot points out that the older practice of creating a ZIP file and emailing it was not a good practice because it requires an extra step each time and can be error prone if the wrong ZIP file is sent. Johnny suggests that the QA department has a dedicated URL where all the latest releases live, and that each release be versioned and state specific information such as a hotfix. For example, the latest hotfix could be v5.1.0-hotfix 1, and so, for each hotfix, the QA department would have a compressed file that has latest build and a specifier, such as hotfix. If this build was a regular build, then it could be named v5.1.0.
Victor finds out that the QA department has a Browser Stack account. Browser Stack provides access to an entire suite of browsers and mobile clients, and this can help automate the load testing of the UI. Load testing is being done with a custom server that the developer team uses for special scenarios, such as load testing. Johnny The Automation Bot suggests either using services like Browser Stack or having a custom service that can provision the necessary resources to conduct load testing.
Victor finds out that the QA team is having issues testing an email service written by the developer team. Johnny The Automation Bot suggests that the developer team make sure that QA has any scripts that can help work with the email service. Victor tells Betty that the new email service is proxying to the SendGrid service and that the developer team has already written a series of scripts that QA can use. The scripts help write a test email and can help QA test what happens under failure conditions.
The UI/UX team is uploading mockups to Sketch—Sketch is a prototyping tool—and embedding notes about possible validation states and flows in a page. The notes are extremely detailed and can be quite helpful to the developer team when starting feature work in company sprints. Johnny The Automation Bot suggests that the development team writes a plugin that can help the UI/UX team easily share this information. Victor decides to create a Sketch plugin that creates a PDF with the embedded notes that the UI/UX team can email to the developer team when the prototyping is done. This plugin is easy to install for the UI/UX team because all they have to do is double-click the file and it automatically installs the plugin. Access to the PDF and the embedded notes will help the developers understand use cases and UI flows for the newer feature.
Vincent, a lead sales engineer, has communicated to the developer team that he needs to be informed of process changes in the product, especially when talking to prospective clients about newer features on the company roadmap. Johnny The Automation Bot suggests that the developer team utilize the Git commit log which has detailed information about the latest feature changes. Victor has written a script that scrapes the Git commit log and writes a nice markdown document with all the latest feature work. In turn, the customer success team can work with the developer team and use the markdown file to create a nice blog entry on the company blog detailing all the latest features.
There is a common theme here. Communication between departments is the key to both finding manual processes and creating partnerships that help automate processes. Automation cannot occur unless manual processes are known and, at times, the only way for automation to take place is for specific pain points to be communicated by other departments.
Let's reiterate some of the processes that were automated and enhanced by open collaboration. Victor helped QA automate an email-testing service issue by providing the scripts that the developer team created. QA helped customer success automate a video-uploading task by sharing a script that uploads the video and that has retry logic. The sales department expressed a need to have better visibility on newer features of the product; this caused the developer team to write a script that grabs information from the Git commit log to produce a markdown file, which the customer success team uses to write a nice blog entry in the company blog. The UI/UX team now has a plugin integrated into their Sketch application where they can simply click a button to generate a PDF document with notes taken during the prototype phase, which in turn helps the developer team work on newer features. The developer team finds out that QA is using a tool called BrowserStack and starts using it to conduct load testing on the product. The marketing team now has versioned copies of the marketing PowerPoint slides and is now sharing this information to the sales team to create newer charts for company demonstrations.
The UI/UX team has decided to create a style guide where developers can go for common UI patterns in the software product. The UI/UX team discovered that many different styles were being used in different pages, which was leading to confusion for a lot of customers. For instance, the Parts Supply page has a big blue save button on one page and a red cancel button, but on the Supplier Details page there is a big red save button and a blue cancel button. Customers are clicking the wrong buttons because the UI is not using colors universally. Sometimes, a page uses a confirmation modal to add and delete an item; other times, there is no confirmation modal. The UI/UX team has started working on the style guide and on creating a special URL in the company intranet where the live style guide will reside. The intent is to explicitly create and list all the usable hex colors for the page, design all the buttons in the product, and decide how a form should look and behave on the pages.
Also, there will be a special widget page that has the HTML markup and styling embedded for all the specialized widgets in the product:
This style guide has hexadecimal color values and has embedded some HTML elements and a toggle switch, which is a specialized widget that has an off state and an on state. The intent of the style guide is for the developers to be able to simply right-click and copy both the HTML markup and the CSS, and to establish a uniform UI presentation. This is a form of automation because developers can simply reuse existing markup and styles and not have to manually create HTML and custom styles where uniformity is best used. Any time users of a product have to guess what to do, you surely invite disaster.