Selecting versions of the tools used makes for much less frustration and improved experimentation. Totally agree you can do this with containers, but you will be moving away from your editor. I am all for testing our inside containers as much as possible, but understanding how to build the version compatablilty is also important. I highly encourage you to use the features of VSCode and container attachment if you are familiure with this or want to explore how it works. If you are new to this idea here is a short summary: VSCode allows you to attach to containers and modify files.
Why Terragrunt is a wrapper for Terraform. I do not use it often, but its there when you need it. Each project will have its own version of Terragrunt and its why I am thankful to the project tgenv which allows to install and switch between multiple versions of Terragrunt.
Why Terraform allows to create many resources on multiple cloud providers. Very helpful if you do not appreciate the CloudFormation or other Cloud Provider solutions to do automatic provisioning while storing state to plan changes for future updates.
Using pipenv and its interesting gotchas
Why Rvm is a Ruby Version Manager allowing to select and manage multiple versions of Ruby by installing them to your home directory. Over time I have used this tool with many projects with good success.
Select which version of Python you want to use on a global or local scope.