I started using Drupal in 2012 (version 6) to build and maintain some websites for my college alumni class (Dartmouth '69) and some local community non-profit and advocacy organizations. It was a fun hobby, something I could easily squeeze into chunks of downtime during my on-call nights and weekends as a primary care family doc. Drupal has evolved into a much more powerful - and complex - platform and about a year ago (late 2019) I realized I had to either up my game substantially or move to a simpler platform.
This began as my collected notes as I taught myself to build and manage Drupal sites using the command line, DDEV, Composer, and Drush. At the urging of a couple friends who share my interest in computers and Drupal, I decided to make available the notes documenting what I had learned and the approaches and workflows I have adopted.
I am not a professional developer or a Drupal expert. What I share here is what I have learned about how to do things in my context. I welcome feedback and suggestions.
Here is my basic approach to spinning up a new Drupal site for development or testing. At the time I am writing this, the current version of Drupal is 9.3.5. This assumes that ddev and Docker are installed and that one is working in a ddev container using mostly the command line interface (CLI).
Inventory the source site for contrib modules and themes and make a list of modules and themes with versions. I use a spreadsheet for this.