As a career changer I had hardly any experience with setting up basic development systems, and that is the reason, why I understand the huge challenge which programming newbies often have. I want to explain which basic development system I use and why.
Ubuntu as operating system
I have decided to use Ubuntu as an operating system instead of Microsoft Windows or Apple’s macOS for a good reason: If you have any trouble, you will find lots of helpful articles in the internet which often use a command line approach to solve an issue.
Unfortunately, the command line syntax differs between Linux and Windows, and you have to transfer the described solution approach for a Linux system to a Windows system. This procedure is time-consuming and error-prone.
With macOS, which is based on Unix but not open-source, you are closer to Linux, but there are also differences which you have to deal with.
From my point of view, it is easier and more efficient in the long run to get familiar with a Linux distribution and use the same command line syntax of the community.  And the good thing is that you can run a Linux distribution in a virtual machine on a Windows or macOS system.
Ubuntu in a virtual machine
VirtualBox is an open-source software which allows you to create and run virtual machines on other operating systems. For example, I use VirtualBox for running Ubuntu on two notebooks with different operating systems (Windows and Ubuntu).
The big advantage of running Ubuntu on a virtual machine is that you can clone a virtual machine and make snapshots.  You can share a virtual machine which is already set up with all relevant tools with colleagues or friends who have no installation effort. Furthermore, snapshots are a good possibility to try things out and return to the last stable status if something goes wrong.
Development environment vs. source code editor
Depending on your experience and programming targets you have to define whether you use an integrated development environment (IDE) like Eclipse or a bundle of different development tools (source code editor, build automation tool, debugger etc.).
I started with Eclipse for developing some small Java programs and used Eclipse in the SAP ABAP context.  Recently, I have read that you can also use Visual Studio Code (VS Code) for ABAP projects.  I know VS Code from some openSAP courses about SAP UI5 Web Apps and have decided to also use VS Code for getting familiar with Node.js.
Git as version control
Furthermore, VS Code includes Git version-control which is absolutely essential for tracking changes in the source code, and I have set up a git server on a Synology DiskStation instead of using a public git server.  VS Code works very well with my git server.
In further blog posts I will describe the project scope for my private web development project, used tools for testing or API documentation, configuration of an Apache HTTP Server for a Node.js App, using of MySQL and so on.
 Ryans Tutorials – Linux Tutorial (command line, file manipulation, vi text editor etc.)
 How-to install VirtualBox and create a virtual machine on Windows, macOS, and Linux
 Create an ABAP Project in ABAP Development Tools (ADT)
 ABAP Development in VS Code
 Git – the simple guide