If you want to prepare new developer machine for java/python with OS Linux Mint this post is for you. In this article we will work on Linux Mint 18 Cinnamon but the same apply for other version of Linux Mint or Ubuntu. For Windows and MacOS the steps would be similar with some small adjustments (If we assume that your are experienced user for your OS). You can find all steps which are:

  1. Choose hardware profile
    1.1 Laptop or Desktop
    1.2 Choose Monitor
    1.3 Basic machine
  2. Choose OS
    2.1 Linux
    2.2 Windows
    2.3 MacOS
  3. Install Linux Mint 18
  4. Initial Machine Setup
  5. Install Applications for development
    5.1 Java, Intellij - How to install Java 8 on Ubuntu 16
    5.2 Python, Pycharm
    5.3 Text Editors - Sublime and Notepad++
    5.4 Database
    * MySQL - How to install MySQL 8 On Ubuntu 16.04 ; Back and reinstall MySQL Ubuntu 16
    * MySQL Workbench, Heidi
    * MongoDB
    5.5 Browsers and FTP
    * FileZilla
    * Chrome - Install google chrome in Ubuntu 18 ; Ubuntu server install headless google chrome
    * Chromium
    5.6 Comparisson tools, clipboard - Glipper, Meld
    5.7 Versioning - GIT, SVN
    5.8 Virtual Machines
    * VMware Player - How to install VMware Player on Ubuntu
    * VirtualBox
    5.9 Tensorflow and GPU support - Install tensorflow with NVidia GPU on Ubuntu ; Installing Tensorflow on Google Cloud platform
    5.9 Apache Tomcat - Install Tomcat 8 on Ubuntu 16
  6. Final Set up

1. Choose hardware profile

Choosing your first/next machine for programming can be fun or plenty of hours of hesitation. The big amount of options can cause you - choice paralyze - Too Many Choices: A Problem That Can Paralyze:

  • laptop or desktop
  • CPU vs GPU
  • RAM vs Disk
  • Monitor
  • cheap or expensive

And each of this options come with another option. There are many different parts and products out there, each with a different set of trade-offs. You will be able to code on most of the machines. The speed and productivity will benefit from better and faster machine. If you can afford it: then buy machine at a reasonable price which can be used for several years.

Some advises:

  • if you are beginner - don't spend to much for hardware. Get average desktop configuration or laptop with big monitor or even two
  • if you want to run virtual machines or many programs - get RAM as much as you can
  • pursuing career in machine learning - then get the best GPU which you can afford
  • get laptop - if you need mobility
  • desktop machine will offer more performance on the same price as laptop

Basic development configuration:

  • CPU - Ryzen 5 1600X or Core i5 7600K
  • cheap and new motherboard
  • RAM - 4 GB - recommended, 8 GB - preferred
  • GPU - GTX 1050 or GTX 1060 6GB - if you want to learn deep and machine learning buy the best GPU in your budget
  • SSD - one large SSD - it's faster than normal hard drives

Some words:

  • CPU

This built is based on CPU Ryzen 5. Using the stock cooler this processor will give you enough for average programmer. The better CPU the faster your code will compile.

  • Memory

Most developers will work fine with 8GB of memory. When you chose memory find with higher frequency - 3000mhz is the top. RAM is very useful if you run many programs simultaneously or if you want to run virtual machines.

Storage

You can find the largest possible SSD that fits in your budget. A 256GB SSD should be enough for beginner. 512GB or 1TB SSD is better choice for you if you need to store data. Deep learning training sets and data bases will require more space.

GPU

Recent days the cost of GPUs is increasing while the availability is a problem. All this is due to crypto mania. If you use your computer for web development you can use even an integrated graphics. If you plan to work with Tensorflow you can benefit from CUDA cores and get a GPU with many CUDA cores.

2. Choose OS

The choice of Operating System(OS) depends on many factors:

  • user experience
  • budget
  • performance and stability
  • available software
  • community

Windows

Windows has the biggest market share for operating system. Most of the software programs, languages, frameworks are available for windows. It has huge user group. It's good for beginners because of it's user friendliness. It's mature and offers many options for software developers.

Pros:

  • Software availability
  • User friendly and mature
  • Easy for beginners
  • Support

Cons:

  • Viruses - the biggest problem for Windows
  • Performance and stability issues - blue screen and slow start up (after years of work). Windows crashes were big pain the past.
  • Price - if you want to use Windows you need to buy it
  • Hardware greediness
  • painful updates

Linux

Linux is free and Linux gives freedom. But freedom come with the price of learning, educating and stay open for new challenges. You have big number of distributions, small but strong communities and really having fun while working with Linux.

Pros:

  • Stable - once configured Linux can work with years without loosing performance
  • Price - it's free
  • Freedom - you can choose amongst many distributions, versions and programs. You can even join some of the distribution and contribute for it.
  • Security - Linux is secure by design. Of course the user should know what he is doing.
  • Linux Terminal - huge advantage for experienced developer
  • Open source - if you are fan of open source

Cons:

  • Lack of software - still many vendors don't consider Linux as target.
  • Configuration - for many users Linux is complicated and scary.
  • Learning curve - the learning curve for Linux is steep and can take some time. (even though some distributions like Linux Mint are easier and more user friendly than the other OS - personal opinion)

MacOS

MacOS is something between Linux and Windows. It have beautiful and stylish appearance. MacOS is well supported by software vendors.

Pros:

  • Stable - like Linux MacOS is famous with it's stability
  • Almost no viruses
  • It's stylish with very good design
  • The mac software is written and tested for it's hardware

Cons:

  • Only available for Apple's computers
  • Budget - in order to get Apple's machine you need to pay more in comparison to a average PC
  • less option in comparison to PC - like hardware and software. More difficult to upgrade your hardware.

Final thoughts - you are not choosing the OS, the OS is choosing you. If you are good and experienced programmer you will be able to work in the 3 OS without significant difference. I have experience in Windows and Linux and I can say that both offers reliable tools - it's another topic if you know how to use them.