This document will be a live document where I reflect and update my most current view
So, I’ve been one to be methodic in my practice and I truly think automation in software engineering is one of the secret powers of the industry. Taking inspiration from an article I read 3 years ago, I find that for any recurring task this is the expected lifecycle:
- Document the process
- Improve the documents on each iteration
- Automate small bits of the process with scripts
- Automate the entire process/Deprecate the process
Looking back at this I find two tasks that I don’t see being automated that much and that I don’t often have a very good track of having process I follow. Development and peer review. And as I get bored very quickly, I think I should be taking a step of documenting how I go with each one of these. Depending on the project there might be more or less degrees of automation but here are my checklists.
- What are the requirements?
- Is there an architecture design?
- What tests can I think of? Can I automate those?
- Write the mocked implementation (Divide hard parts into multiple PR’s)
- Write some logs on the stepping being done. Will be useful for later debugging
- Make sure the tests and the code can be run on debug locally
- Write the actual requirements
- Run the tests until all green
- Run the linter (if not automated)
- Validate the tests coverage (if not automated)
- Create PR
- Review comments
Peer review checklist
- Read the description of the task
- Skim the entire code. Take notes on things you find odd
- List resource changes
- Given the description list the tests you think would better match this
- Run the tests locally. Debug if possible
- Check if your expectations of the tests are matched by the test suite
- Format the code
Given the checklist above I see that these are very high-level steps that can be further documented (phase 2 of automation) and the scripts to facilitate them can also be identified. As I’ve been working across multiple languages (python, JS, TS, terraform) each project will have different processes but I think that just shows that I’m moving between phases 1-3.
Looking back at the lists above I guess I need another checklist to guide on the tests creation. But I’ll leave it for another time.