Mac OS X is my current development OS of choice. It is Linux compatible enough so that I can take most open source software and compile it for OS X, as is. I recently had occasion to help someone setup a Windows based development environment for a PHP project deployed to AWS Beanstalk. I thanked my lucky stars that I developed it on a Mac.
I was a Windows based developer for over a decade, since Windows 3.1 to be exact. I evangelized Windows development and Microsoft Visual Studio, in every place I worked, way back in the late 90's. At the time this was the most comfortable and productive C/C++ development environment. Just the edit and continue feature made debugging an order of magnitude faster than having to compile and re-run.
The last Windows OS that I used regularly was Windows Vista. I was getting tired of major UI paradigm shifts from version to version and got a MacBook Pro. I used Parallels Desktop to run the familiar Windows tools as a transition. It took some time to migrate my habits but I cannot imagine going back.
My current development machine is an iMac Pro 5k Retina 27". I used to have two 24" monitors, which took up a fair share of real estate. A single 27" screen is more compact and practical. The retina resolution is just eye-candy. This is the best development environment that I have ever worked with from both hardware and software perspectives. The iMac is dead quiet, letting me focus on the work.
With the last upgrade to Sierra I cleaned up my hard-disk and with it the Windows 10 VM for Parallels Desktop. I found lately it did nothing but run an upgrade every time I launched it and raise my blood pressure. I will still have to create a windows VM for plugin testing but using Windows OS for me is history.
Hands down, it is the JetBrains IDE products. They are the best and if you are willing to learn how to use them properly by adjusting your habits then you will wonder how you ever lived without them. I have been using PhpStorm since 2014 and IntelliJ IDEA since 2015. I am still "discovering" new features, especially now that I am trying to hack functionality into the IDE that it did not foresee as a viable option. The features are new to me, not to the IDE. There simply is so much functionality that it will probably continue to amaze me for the foreseeable future.
When I started using the IDEs, I felt that these IDEs are spectacularly designed and implemented. After going deep into some of the implementation code I feel even more convinced about that statement. They run on every popular platform, are blazing fast and getting faster with every release. The intelligence of these products has no equal in the development arena. They are very actively improved and supported. I have found my new "development home."
Many tools try to do a lot and wind up doing some things well and others poorly. These IDEs are the exception. They do it all to a high degree of excellence with an eye candy GUI.
If you have not used a JetBrains IDE before, do yourself a favour and get the IntelliJ Ultimate trial or the IntelliJ Community edition and see what you have been missing. Just give yourself a bit of time to learn the lay of the land. These products are a universe of functionality that is well worth exploring.
I find these plugins a must have, which I immediately install in all my IDEs:
git and GitHub for VCS. I would have given a kidney for this VCS combination in 1990's and 2000's when I was managing development teams. Today they are free.
BeyondCompare for directory and file diffs. I discovered this tool when it was still in version 1 and only supported Windows. It is now at version 4 and supports Windows, Mac OS X and Linux. I always had it installed on my systems, even when I was not doing development.
Transmit from Panic for FTP and Amazon S3 sync. Not much to say. It is an icon in its class.
Scrivener from Literature & Latte. This is an amazing writing and thought organizing tool that does its job without getting in the way. It is smooth and orthogonal in its features and implementation. Although dubbed as a writer's tool, which it is, it is applicable to more uses than that. I use it to organize almost random bits of information that I need in one aspect of development or another. It helps me "remember" how I solved something a few months back so I can repeat the process.
Scapple from Literature & Latte. The easiest and snappiest free form idea organizer. I use it to rough out concepts with minimal interference from the tool. Simple and well designed.
Path Finder, replacement for Mac OS X Finder. Having come to OS X from more than a decade of Windows use, I found that the OS X beats Windows in usability, practically in everything except the GUI file manipulation. This app mitigates the OS X shortcomings in this department although it cannot eliminate them entirely. I could not work on the Mac without it. I still find the OS X file search capability mediocre at best. Brain-dead would be a more accurate description but that is a minor annoyance in the grand scheme of things.
Laravel PHP framework for site development. Extremely well designed, easy to customize and a joy to work with when you get the hang of it. I started with 4.2 and migrated to 5.1, which is a great improvement over the older version. I customized and released a couple of packages (Laravel 5 Translation Manager and Laravel 5 Scaffold Generators to make development even easier. There are tons of packages available and non-laravel PHP packages can be easily "wrapped" for Laravel, should the need arise.
The documentation is oversimplified and you need to get comfortable reading the source code to do more than just basic stuff. That said, the source is well worth the read. Having started with PHP development in 2014, I found its source a cookbook of elegant solutions.
Apache 2.4, Php 5.6, 7.0 & 7.2 for site development with MySQL backend. Hosting is on AWS, with Elastic Beanstalk for load balancing and instance creations with RDS MySQL backend. AWS has a bit of a learning curve, to say the least. Once you get over that it is dead simple to maintain and feature rich. I don't deploy my app the 'usual' way because it wasn't working for me.
composerwould run out of memory when executing an
updateon the 1GB memory machines. I was forced to figure out how to deploy without
composer. The benefit is that a new deployment takes a minute or two vs. 10 to 15 that is expected with the 'usual' method. Sure it would be nice just to push a new version to GitHub and forget, but cutting the deployment delay has its advantage and did I mention that it actually works, which is a huge benefit all by itself.