Over the years, I've learned a few things when it comes to automation, not so much related to coding but general tips and methods that I've found helpful when building out successful network automation projects.
Here they are:
When it comes to automating a manual process, a good approach is first to map the process, each step, the inputs and outputs, and the overall process. From there, you can map these steps and the input and output requirements into a process flow that's automated.
A typical approach when looking to automate "things" is to automate "all things". However, based on the ROI and the time available, this may not be possible or even worthwhile. Therefore, you can also look to partial automate, i.e. automate the areas that provide the most significant drain in resources to you and your company. In other words, have the workflow - part manual and part automated. Over time you can then look to automate more of the manual steps.
Make it Work/Right/Fast
A software strategy coined by Kent Beck is:
make it work, make it right, make it fast.
In other words, don't worry that your code isnt right from the outset. i.e that your Python classes arent correctly formatted, that your variable names would anger the PEP8 gods, or in fact, you're performing a lookup five times instead of one. Just get the thing working, make it right, then optimize it to make it fast.