A|few|years| ago, I was tasked with solving a problem at work: I had to figure out how to stay in compliance with a National Credit Union Administration (NCUA) audit requirement for properly tracking and logging security vulnerabilities in our technology and applications. We had only a rough collection of functions in our software and network management tools that could do this, and those didn't satisfy the auditors.
With the handful of software tools that could handle portions of the need, there was a lot of manual effort involved needed to stitch them together to solve the problem. I was stuck. I asked myself, Do we buy another piece of software to 'fix' it all? Or create some basic scripts to automate the small things and bring it all together? In other words, solve the problem throughprogrammingorautomation?
Programmability is the capability of a machine, equipment, or system to be controlled by a computer program.Programminggenerally has to be done by a person.Automationis the use of machines, equipment, or systems to perform a task without direct human intervention. Programming and automation are similar, but they are not the same.
Both automation and programmability have their pros and cons. Both can save you time in the long run. Which is better for DevOps: automation or programmability?
Automation can be great for simple tasks - the kinds that people can do - on a consistent or repetitive basis. You can set up an automation task once and then forget about it. Auomation is better than having a person do a task because when a person executes a task, there is always the potential for error.
Machines and scripts don't get tired or lazy, so you're less likely to see human-style errors with automated tasks. This means that tasks completed by machines can often be more accurate than those completed by people. Automating tasks can also lead to cost savings (over the long run) since you don't have to pay people for their time to do them. Workers can move on to focusing on bigger picture goals for the business.
Programmability, on the other hand, gives you more control and flexibility over your workflows. Programs can use complex logic. They can branch and adjust to conditions. Programming is better for larger tasks or tasks that need to be approached differently each time they are run. People can customize each step to get exactly the results they want. The initial setup requires more effort (and money) since you need to write code or create scripts, but programmability is essential for bigger tasks that have more nuance than simple data entry or linear process control.
Both automation and programmability can save you time. Automation is especially good for tasks like backups or data entry. Programmability is better for reporting and user interface design.
Automation is often easier to set up and can often be done within the tools or products you are tring to automate. Programming usually requires knowledge outside of the products you're trying to control -often a lot of additional knowledge and experience.
Consider the following factors to help you make a decision between automation and programmability:
What kind of task are you trying to automate?Simple, repetitive tasks are best suited for automation. If the task is complex or needs to be done differently each time, then programmability may be a better option.
If you're interested in automation, check out Postman. It can be as a standalone app for controlling networking devices. For example, you can set up Postman to gather a list of ports on a device that are shut down.
How much time can you invest upfront?Automation can be set up once and then forgotten about, whereas programmability requires more initial setup time. However, programmability can save you more time in the long run if the task needs to be done regularly under varying conditions.
One programmability tool I like is Meraki Facemask Detector. This project demonstrates how businesses can use a set of capabilities and API endpoints to solve for a real-life problem. Meraki's Vision API is able to detect faces in images and videos. The API endpoint then returns data about the faces it detects, including whether or not each face is wearing a face mask. The project also uses the Meraki Dashboard API to create alerts when individuals are detected without a face mask, making it possible for businesses to take immediate action to ensure the safety of their employees and customers.
What is your team's level of coding experience? But if you don't have access to people with coding experience, automation will be a better choice.
In the end, it really depends on what you need from your tools. If you need something that is quick and easy to use with minimal setup, then automation might be the way to go. If you need something that is highly customizable and allows you to create complex workflows, then programmability will be a better option.
We'd love to hear what you think. Ask a question or leave a comment below.
And stay connected with Cisco DevNet on social!
LinkedIn | Twitter @CiscoDevNet | Facebook | Developer Video Channel