Hacker News new | past | comments | ask | show | jobs | submit login

Not directly relevant to the post, but seems like a good place to share.

My team and I once took on a very tricky automation project. At the time we had a complex software deployment done about once per month that involved a team of about a dozen people showing up at 4am to do it while traffic was low.

The deployment involved many manual steps and coordination of everybody involved. The person leading each deployment followed the documented list of steps and got each person to do their bit at the right time; people to run database migrations, people to install RPMs on particular servers, people to test and verify functionality. Mistakes and missed steps were not uncommon.

The very first thing we did was take the documentation and write a Jenkins job to post each step into a Slack channel specifically for coordinating the deployments. Someone clicked "go" and each step was posted as a message in that channel with a 'done' button to be clicked when that step was done. Clicking the button caused the next step to be posted.

The next release we did used that instead of one person reading the steps out of confluence. Everyone involved in the release could always see what step we were at, and when it was their turn to do their bit. This helped ensure no steps were ever missed too.

Over the following months we chipped away at that job a bit at a time. We'd pick a step in the process and automate just that step, starting with the low-hanging fruit first. The Slack message for that step went from "click to confirm you've done it" to "click to do it", with the result posted once it was done; followed by the next step to perform.

It was a long process, but it allowed the rest of the business (and us!) to gradually gain confidence in the automation, and lowered the risk of the project dramatically. Once several steps had been automated and battle-tested we removed the 'click to do' bits in between and the whole release became a couple of clicks followed by the odd bit of manual QA.






This is an awesome example of what I've seen denoted as a Do-Nothing script: https://news.ycombinator.com/item?id=29083367

Was it hard to achieve buy in from all parties? I'd guess that would be the hardest part, to get everyone to join in on working on the automation.


> https://news.ycombinator.com/item?id=29083367

> > https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-...

What is the point of defining a Python class with a single `run` method, and then running with `Class.run()`, instead of just defining a `function` and running with `function()`?


Checklist automation is a very powerful tool. Making a script that just calls the checklist that you walk through is the first step because you have to debug the checklist. It's really hard to automate something if you don't really known what it is you are doing, and steps are always missed. Once you debug the checklist you can start automating the steps and then you find the things that are easy for humans to do but hard for computers. That's the fun part. In one case I worked on, they automated the sales funnel, but then customers started asking for refunds and complaining online. Turns out the automation didn't work. I got a team together to get the customers happy and then did a Stalin's Postman test where we walked through the whole process. All but one of the steps failed. Now that we knew what was failing, we could start the process for fixing it.

What's a "Stalin's Postman test"? I couldn't find anything for that phrase.

I can't stop thinking parent comment is ChatGPT output

We should delve into that.

Hybrid automation is remarkably effective. I learned about this idea around five or six years ago and have been employing it since.

Step 3: Go to this URL and do a thing, then click Y.

Do some stuff, do some more stuff

Step 8: Go to this URL and undo the thing you did in Step 3, then click Y.


Thats ideal world solution. Love it! How much resources requires maintenance of it?



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: