The thing about automation is that it is really hard to automate workflows completely while getting everything right. One approach I like is the "Pareto automation"[0]. Normally, you can automate the most fragile or tedious parts of a workflow with little effort and keep doing everything else manually. Also, sometimes you don't even need automation, you just need a checklist. [0]: https://ricardoanderegg.com/posts/mu…
Fake it until you automate it
41–50 of 52 posts
Re: Fake it until you automate it
#42I was doing this a year ago. Now I'm redoing it. In my case, what I missed is that if the app is complex enough you should treat the deployer like a separate product. Different teams might want to use it for different things, deploy different versions with it, etc. So it should be in a separate repo with its own tests and its own version string. Otherwise iterating on it is hell because you're doing so in a space tha…
> So it should be in a separate repo If it's in the same repo, that means all of the features of the deployer can match the deployed code automatically - the deployer is made for and tested for that version. With different repos, you add complexity. Now you have to support deploying multiple versions so there are more code paths and there's version checking etc. And more complexity also means you need more tests.
if it's in the same repo, you add complexity -- now I have to ensure my deployment of two unrelated code bases don't collide, there's more cross-team conflicts, and I have to clone down a 200gb repo.
Re: Fake it until you automate it
#43Re: Fake it until you automate it
#44First, because automation takes some upfront effort to get done.
Second, because once it is set up it frequently acts to prevent change.
I find it is useful to consider alternative solutions to the problem like a checklist (which I call a program that runs on people) which allows you to set up a process in minutes (+ potentially a meeting with your team) and then get back to the project. Once the project has been running for some time you will be in a better position to automate it. First, you will already have some experience with running the process (with the checklist). And second you can plan the task of automating at lower priority and without it becoming a blocker in your more important project.
Yes, it is considered technical debt. Not all debt is bad.
Re: Fake it until you automate it
#45One thing I noticed is that knowing how things can be automated causes teams to actually get slower at getting stuff done. First, because automation takes some upfront effort to get done. Second, because once it is set up it frequently acts to prevent change. I find it is useful to consider alternative solutions to the problem like a checklist (which I call a program that runs on people) which allows you to set up a…
Re: Fake it until you automate it
#46This seems like the same basic concept as https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-...
Re: Fake it until you automate it
#47This seems like the same basic concept as https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-...
My only issue is that not automating the deploy is probably the worst thing to need to do manually. Having worked at a company that had a rather large and ever changing list of steps to complete in order to deploy (which took a 1-2 hours), it's something I find myself prioritizing now.
Re: Fake it until you automate it
#48This seems like the same basic concept as https://blog.danslimmon.com/2019/07/15/do-nothing-scripting-...
I personally like the name „checklist script“ (also checkscript) for that, which I found in that comments at the time. I think it conveys easily the two purposes of the thing (checklist gradually becoming a script).
Re: Fake it until you automate it
#49Please don't do this on a $0 MRR project. Wait until it's a viable company before spending time automating everything.
That's not the same as automating "everything", of course.
Re: Fake it until you automate it
#50Earlier quoted context omitted.
> So it should be in a separate repo If it's in the same repo, that means all of the features of the deployer can match the deployed code automatically - the deployer is made for and tested for that version. With different repos, you add complexity. Now you have to support deploying multiple versions so there are more code paths and there's version checking etc. And more complexity also means you need more tests.
if it's not in the same repo, it means that the deployer can be updated and rolled out independently, and scale with its own resources. if it's in the same repo, you add complexity -- now I have to ensure my deployment of two unrelated code bases don't collide, there's more cross-team conflicts, and I have to clone down a 200gb repo.