Switching from OSX to Windows 10 as development environment

Banner
Today I want to talk about my switch recently from OSX to Windows 10 as development environment or better said from Macbook Pro to Microsoft Surface Book 2.

Why should I switch at all?


As you all know game development, especially with engines like Unreal Engine 4, need a good amount of performance. I ran into some problem with my old MacBook 13" early 2015 it wasn't able to handle that mighty engine very well. So I thought about buying a new Notebook. I work as a freelancer sometimes, so I want to stick to a Notebook instead of just buying a Desktop.
Of course my first thought was to just upgrade my MacBook to a newer one. I checked out the configurations available for the new MacBook. I  will have to get a 15" MacBook, if I want the best hardware. I was really happy with my 13" MacBook, because it was very light and portable.
I really disliked that the new MacBook comes with this new touch bar, that I will never use and I don't get the sense of it at all. The second point I really disliked was the new flatened keyboard.
That said I started researching, if there are any alternatives and I found one, which fit my needs: The Microsoft Surface Book 2. It comes with a better hardware than the MacBook, has a touchscreen and is very flexibel, since you can use it as Tablet or Notebook. This makes the Surface especially good for developing for mobile platforms. You don't need to upload every build to your phone to test touch gestures etc. another very cool advantage is: You can actually play games on the Surface very well.
In the end there was one very big counter argument for the Surface - I have to use Windows 10 for development. I think I have been working on OSX for more than 5 years now and I am very used to my work environment. Nevertheless I try to overcome my comfort zone and give it a shot.

Working with Windows 10 First steps


As I said the biggest challenge is to actual work efficient with Windows 10. I always used Windows for gaming, so I am not totally unaware of Windows as os, but for development I never used it before.

First I missed my zsh shell, since I am really used to bash or zsh with my OSX / Linux history in development. I was really amazed, that the windows 10 creators update introduce a Linux subsystem called WSL. Now we are able to use a Linux with Windows 10 and the best thing about it: It isn't a virtual machine or something it works with the original kernel, but somehow integrated in Windows. Actually you can do everything in Linux even starting gnome GUI things etc. I installed Ubuntu on my Windows 10, because I couldn't find any Arch Linux for Windows yet. The shell and all development tools like NodeJS, Python etc. works as expected, the only flaw about WSL is that the Filesystem is quite slow, even slower than on Virtualbox. But there are some tweaks to get at least an acceptable performance. Check it out here https://medium.com/@leandrw/speeding-up-wsl-i-o-up-than-5x-fast-saving-a-lot-of-battery-life-cpu-usage-c3537dd03c74

Second point is the feeling of Windows. I felt very at home on OSX, most things run very smooth and ran out of the box or wasn't supported. On Windows there are few minor things, which aren't behave the same way like on OSX and that annoys me quite a lot. For example the scrolling with the touch pad doesn't feel as smooth as it feels on OSX. Working with multiple desktops, which I do quite a lot, luckily works on Windows, but there aren't shortcuts to jump to a specific desktop. There are also no options to assign applications to a specific display or desktop at least as far as I know.

Third point: The software isn't on a quality level like OSX. On OSX I used the builtin software for mail, calendar and could easily synchronize it with my google account and everything worked as expected. On Windows I started with Mail and had all the same features and everything worked flawless until I realized that Mail has no possibility to add a html signature. So I upgraded to Outlook 2016, because I thought the premium software included with Office 365 would have the same features plus additional features like html signature.
Not even close, yes Outlook offers the possibility for html signature, but I couldn't add my google account, since it is an application with lesser security. Also I needed to add a special plugin to have calendar synchronization possible. This was really annoying and I don't understand why the Mail App, which is for free, had those functionalities and Outlook 2016, where you have to buy, doesn't? 

Conclusion


The Surface Book 2 is definitely a very cool Notebook and I like it as much or even more than I liked my MacBook. The Tablet mode is quite interesting, even if I haven't figured out yet how to work with it in a efficient or proper way, its more like playing around at the moment.
As mentioned the only flaw at the moment is to getting used to working with Windows and get everything setup like I am used to it. Of course software like Unity, Godot, Photoshop behave the same, but always differ in shortcuts. It feels quite wrong at the moment, most of my shortcuts I have in mind don't work anymore etc. But I am still willing to adjust myself and get used to it. At the moment I would say, if you are used to Windows the Surface Book 2 is a very good choice for development. If you switch from OSX it has his downsides, caused by the software, but you can get used to it.