So I get asked this alot as a contract programmer.
What is my local setup?
Well, after a lot of trial and error I have come up with a pretty smooth running system that works for me. Now full disclosure, this may not work for you. Each developer has their own style, so your millage may very here.
When I need to actually replicate a different server such as a certain version of linux running a certain version of postgres DB, I use VMWare to create a virtual machine with those specifications. There is a lot of talk about Docker, and I have looked into it. But I found there is a very steep learning curve and setup to using it. Therefore unless you are very skilled, I would not recomend it. Docker is not for the faint of heart.
Now the big one, what IDE. This is where a lot of developers will differ. I have tried many and a lot were good why some were just plain bad. Eclipse was a decent editor, but was a hog on memory usage. Ultra Edit, Coda, BB Edit, Sublime were really good but come at a pretty good cost. Lately I have been using Visual Studio Code. Its free (what i like best), and can work with multiple languages. It can integrate with Git for code tracking. Basicaly it works as well as the paid ones. Did I mention it’s free?
Lastly you want to track your code changes, and maybe even share some code. For this I use Git and GitHub. There are a few different technologies for tracking code changes. SVN, RCS but I have found Git to be the most versatile.
As an extra I will talk about communication. Whether it’s with colleagues or clients, communication is key. So for clients, most often Email and Phone will suffice. When on ocasion you have a need to screen share or group meeting for training or showing finished project there are some other options. There is Skype, Zoom, Microsoft Teams, etc. I would recomend creating an account at each of them as different organizations will use different platforms for meetings. An account is free to sign up and you are ready no matter what platform is requested of you. When working with other programers in teams a different software may be necessary, such as Discord or Slack.