Right Level of Automation

I believe in automation and CI/CD...it's what I do for a living. So I think about automation a lot. I also have lots of conversations about automation with peers. I also have some contrary opinions about automation.

Here's an opinion that seems to get me in hot water sometimes: "Not everything needs to be automated".

OH MY GOSH, CHRIS, WHY WOULD YOU SAY SOMETHING LIKE THAT?????

Look, automation takes time and skill. If you write code of any language, even "simple" shell scripts, what you have left is an artifact that has to be maintained...call it "tech debt" if you like. Let's examine some of these.

SKILL

I don't know about where you work, but I'm yet to see entry-level IT folks who can write automation scripts. This is okay and makes complete sense. If you take any Windows or Linux courses, you learn how the operating systems work, but you only have a small section on scripting (PowerShell or bash). You have to have several years of experience in the workplace, writing scripts, to be "good at it." Scripting, and therefore automation, is just another skill that takes a while to build. YOU, yes, YOU, have teammates who don't know how to write automation scripts. They, too, must get their jobs done. Don't hinder their work or their career development because of some automation requirement.

TIME

Automation takes time. It is NOT faster than doing things manually. When you do automation, you eliminate risk on the back end of your changes because you know the automation is repeatable and you (should have) tested everything out before running the script in production. That risk elimination means instead of putting time in after a change to check or fix things, you've put time in BEFORE the change.

A manual step that would take 10 seconds in a UI, might take you several hours to script, validate in lower environments, and publish to whatever CI/CD system you use to run the script. Understand this before you ever decide to automate stuff.

TECH DEBT

Especially on larger automation projects, when you automate, you are left with is a stack of code that must be maintained. Sure, you can believe "once my code works once it will work forever", but that is completely false. APIs change, business team names change, permissions change, you name it. You might write it once and have it work today, but there's no guarantee that your automation will work tomorrow.

You must maintain your code forever if you expect it to work forever. Things as simple as "naming standards" can screw you down the road if you don't keep your code up-to-date.

WHAT THIS MEANS

Automation is important, fun, and very useful, but you have to weigh the pros and cons before you declare that you "need" to automate a process. I have no exact formula to help you make your decision, but some of the points you should consider:

How often are you going to perform the task?

If you are automating a task that is never going to be run again, then just forget it and do it manually. Unless it's a very complex task, I don't think it's worth automating unless you are going to have to perform it once or more a month.

How complex is the task?

Don't spend your time automating something like "clicking a couple checkboxes in a UI". That's silliness. An entry-level support tech can do that with some basic guidance. However, if you have a largely complex task that you plan to do two times, it is worth putting in the time to get the first one right.

Do you have the required permissions to do the work manually?

It's fairly common to have fewer permissions on your personal user account than on a shared "service account". If this is the case, you may very well have to do some automation work to run your changes as that service account. If time is not an issue, this model works well. If there's a time crunch, it's reasonable to have an elevation method to let a person perform tasks manually. Never believe that such a method doesn't exist....there's ALWAYS someone who can make the change manually, even if you don't know who it is.

Do you have the time to wait for the automation to be figured out?

My goodness...This should go without saying, but I know it has to be said. If you are bleeding money or something is actually broken, fix the problem NOW. Forget about piddling away at testing some script to fix it. Fix it manually and then figure out how to automate the fix, but only if it is something that you feel may recur.

If your budget is running thin and your project success is on the ropes, GET YOUR WORK DONE. Don't let your own beliefs in automation hinder your project's success. Being productive is more important than following an "automate everything" mantra.

Conclusion

Just like everything else, there are pros and cons when you decide to automate processes. There is no one-size-fits-all rule. Think about them before deciding to do the automation.

要查看或添加评论,请登录

Chris S.的更多文章

  • A Question for Data People

    A Question for Data People

    A little background: I'm an old math geek. I took darn near every undergraduate math class offered at both Morehead…

  • PowerShell Modules Rule!

    PowerShell Modules Rule!

    Say you have CI/CD pipelines. You have Azure DevOps (ADO) and are finally using YML pipelines.

  • Low Code "Revolution"

    Low Code "Revolution"

    I saw an advertisement for Brainboard (Brainboard | Design, Deploy and Manage Multi-Cloud) this morning. I looked into…

    1 条评论
  • A Terrible Terraform Pattern

    A Terrible Terraform Pattern

    Here's a scenario I've seen in multiple enterprises using Azure. Company decides to go with Terraform for all their…

  • A Fundamental Mistake in "DevOps"

    A Fundamental Mistake in "DevOps"

    I've been working as a "DevOps Engineer" for about 8 years, having been an infrastructure guy for about 15 years before…

    1 条评论
  • Skepticism of Competence

    Skepticism of Competence

    My wife said something to me yesterday that I've been really thinking about now for the last 24 hours. She's worked in…

    5 条评论
  • Service Level Agreement Part 3

    Service Level Agreement Part 3

    Part 1 and Part 2 of this series covered the basics of probability and service level agreements. Now it is time to get…

  • Service Level Agreements Part 2

    Service Level Agreements Part 2

    Part 1 Hopefully, folks are feeling "refreshed" after viewing Part 1 of this series. So now let's talk about Service…

  • Probability and SLAs, Part 1

    Probability and SLAs, Part 1

    I recorded this quickly today as a refresher on probability. There are some links in the slides that I go through that…

  • A Series on How to Calculate Service Level Agreements

    A Series on How to Calculate Service Level Agreements

    When you sign up for a specific service, you are promised a percentage of time that the service will be available; this…

社区洞察

其他会员也浏览了