Note: I still use Windows for gaming and so this write up isn’t anti Windows but more to encourage those developers who could use Linux for development but don’t to give it a try. I’ve written about the different distros I’ve used so far, which one I’m using at this time and then finally why I prefer Linux over Windows for development.

It was sometime in late 2014 during my internship where I finally made the decision to switch to doing all my personal development projects on a Linux distro. I had been using a Ubuntu virtual machine while working as an intern and after a couple of weeks of using it properly and not like the way I was taught at University I began understanding why exactly so many people prefer Unix based systems over Windows for development.

Don’t get me wrong, what my University did was good or at least their intention was good. It’s great that they’re trying to encourage students to tinker with Linux however I feel the execution was poor. We used a virtual machine which meant Ubuntu performed slow and sluggish, probably giving some in the class a bad impression on just how useful Ubuntu or a similar Linux distro can be. Perhaps a better way to truly show how useful it could be would be to have labs filled with Ubuntu computers, not to mention the amount of money they’d save on Windows licences.

Before writing more, in case you’re unfamiliar with the word ‘distro’, I am referring to a Linux distribution. It helped me at the start to think “operating system” when I heard Linux distro. Examples: Ubuntu, Debian, Mint, Xubuntu, Elementary OS, etc.

Despite having tinkered with an Ubuntu VM in both my first year of University and my internship, I decided to try something different to see what the other distros were like in comparison, one reason for this was that my flat mates at the time had already installed Ubuntu on their laptops and I wanted to try something different. In the end after checking out a couple possibilities I decided to go for Linux Mint.

Linux Mint’s desktop

After a couple of weeks of using it, I wasn’t fully satisfied. Not really because of any performance issues but it just looked a bit dull in my opinion. After one of my flat mates tried out a distro called Xubuntu, I decided it was time to switch.

One of the reasons why I switched was because there was no bloatware with Xubuntu. Knowing that whenever I installed it, I wouldn’t have the pain of having to remove certain applications which I didn’t want to use and/or didn’t need to use. Whilst some people may like having the likes of LibreOffice installed on their Linux distro, I don’t and I’m sure I’m not the only one. I’ve read up that a lot of the pre-installed software can impact the performance on your computer/ laptop and with my laptop’s performance not the same as it used to be I was trying to avoid this.

Xubuntu’s desktop

I really thought Xubuntu was great. The menus and overall theme looked a lot better than Linux Mint but not only that the status bar being at the top is something which I realised I preferred a lot more, though I’m sure some of you might prefer having it on the bottom. If you wish to you can change this thanks to panel preferences. I added a panel to Xubuntu which showed a specific couple of applications and only appeared on mouse over in the bottom middle of my screen.

It was when I installed Xubuntu that I started to really start to enjoy using a Linux distro. I created a couple of useful keyboard shortcuts which really helped me improve my efficiency while using my laptop (at least I felt it did). Some shortcuts included: Using the Windows key on my keyboard for opening up the menu (I still have habbits from using Windows), shortcuts for opening commonly used applications such as Chromium, Terminator, Android Studio, Atom / Sublime (originally used Sublime), etc.

I quickly realised how useful workspaces can be for development. Workspaces are essentially multiple desktops. The great thing about them is that you can easily switch from one workspace to another if you know the shortcuts to do so. I probably appreciated having multiple workspaces more so when I only had a laptop to do my development. Thinking back to my time developing on Windows being limited to one screen was highly frustrating. When I was doing development on my laptop which now had Xubuntu I could have one workspace where I’d switch between Android Studio and whatever documentation / guide I was writing on Chromium and then have a second workspace for Spotify web player / YouTube for playing music or just for general entertainment when I fancied a break.

I think one of the main reasons why I prefer using Linux for development is because using Git on a Linux terminal is far easier to use than any application I ever tried to use Git on Windows. I remember having great difficulty using Git on Windows when I was just getting used to using Git for version control. If anyone reading this does development but doesn’t use Git for version control or for that matter any version control software at all, please go install version control software now before you regret not having it. You’ll thank me one day.

“Linux terminals?!” I hear you ask, if you don’t know what they are it’s where you write command lines to get your computer to do what you want. So instead of right clicking with your mouse to copy and then right clicking the paste, you could use the ‘cp’ command in a Linux terminal. It looks ugly, I know it does, that’s what I thought when I used one for the first time. Once you know a couple of commands and shortcuts for using a good terminal like Terminator which allows you to split your window so you have multiple terminals on the screen, you’ll feel like a wizard and you’ll be a lot quicker at carrying out tasks like moving / copying files than if you were using Windows to carry out the same tasks.

Linux terminal

In addition to doing basic tasks like copying and moving files. You can carry out other really useful tasks like installing software (see the screenshot above for an example) which saves you from opening up the software center. Here’s a cheat sheet if you’re interested in finding out some more tasks you can do via command line.

I had a slight problem with Xubuntu when using dual monitors, I had to keep reconfiguring them and even when I did the second monitor didn’t work immediately after trying to reconfigure it. From my own research I did on the problem it seems like it’s an issue with display port and AMD graphics cards, however I’m not completely sure on the reasoning behind it. I later managed to fix this issue shortly after I decided to give Elementary OS a shot.

It was after a couple of months of using Xubuntu that I seen posts on Twitter or Google+, or perhaps even both about a Linux distro called Elementary OS. I found out that this was quite a new distro and when I looked up screenshots of it, I was very impressed. It wasn’t until a good couple of months later that I decided to give it a blast on my laptop to test the water or so to speak and I’m so glad I did.

Elementary OS

Elementary OS is, when compared to all the other distros out currently, easily the best looking distro. It looks great and feels great. I love the menus, the notification icons look great, the bar at the bottom displaying some of the apps in a style similar to OSX, heck I even liked the default background. The Elementary OS developer community is great, there’s plenty 3rd party apps which have been specifically built for Elementary OS, keeping a similar style and I believe everyone one of them shown on this page look fantastic. Elementary OS is my current Linux distro I use for development and it probably will be the Linux distro I’ll use for a very long time.

I fully recommend Elementary OS to even those who have no previous experience with Linux. It’s easily the best looking operating system and the only issue I’ve had is with getting my secondary monitor working and if you have a similar issue to mine, I’ve posted my solution here.

If you’ve been inspired to try Linux, feel free to get in touch with me and let me know what you liked / disliked about Linux. I can easily be contacted on Twitter.

Thanks for reading!