Over the past year, I have slowly integrated more LLM usage into my software engineering practice. Here are the five principles I have been following so far:
- Ask questions and learn. LLMs can look through git history, make connections between many files, and figure out why something is the way it is. Be sure to read the code to verify.
- All communicate must to be written by me with any of it's imperfections. If you discover new information from a LLM, rephrase it into your own words.
- When reviewing a LLM's work, be as nitty as I want to be. The LLMs do not get tired and it's better to have the most maintainable & understandable code. Future humans (and coding agents) will be grateful.
- Save the tasks with the most risk and uncertainty for myself. Anything that has a high chance of being backward incompatible or cause an incident needs my complete attention.
- When reviewing LLM (or human) generated pull requests from others, be sure to ask questions on anything that you do not understand. It's a learning opportunity for all parties.
Overall, I optimize for growth and "slowing down so I can go faster". These principles enables me to quickly build an initiative understanding of any codebase, so I can use a majority of my energy on the harder problems.