Why Developers Should NOT Use MacBook Pro

Written by charleeli | Published 2018/05/08
Tech Story Tags: linux | mac | development | tech | computers

TLDRvia the TL;DR App

About ten years ago there was an article claiming that “Every Developer should have a MacBook Pro”, which listed a bunch of reasons, for example:

  • Better hardware/OS design. MacBook Pro has the most usable touch pad which can completely replace your mouse. Some OS features are focusing on convenience as well, such as the spotlight.
  • Unix-like. the convenient, native terminal makes it possible to use almost every piece of software from Unix/Linux.
  • Amazing software ecosystem. Apps for OSX are usually designed better, much more convenient than apps on Windows, especially the apps for designers. App Store also makes software purchase much easier.

Yes these reasons are all true, even today. I would still be swiping happily on my touch pad, using spotlight to find my apps, making diagrams with Omnigraffle, install dev tools with brew install, if I was still using my MacBook Pro. However, I’ve changed my preference and now I’m using Thinkpad + Ubuntu. I will explain why and I feel these reasons are true for most developers who use Linux.

Well that possibly because I am a Web developer; if you are working with Microsoft stack, in which case you don’t use macOS anyway, or you are making iOS apps, where you are forced to use macOS, this post is not for you.

The Killer Feature: Touch Bar

By the end of 2016 Apple released a new generation of MacBook Pro equipped with “Touch Bar”. I agree that touch bar was a great design concept and helped many users who were not comfortable with the traditional function keys, but instead of calling it a “killer feature” as media did, I would say touch bar killed MacBook Pro itself.

I am a heavy Vim user and I believe many developers are too. The most important key for vim users is the “Esc” key. I need to press “Esc” evey a few seconds, of course without looking at where it is, and most important, I need to feel the physical key so that I know the key press was successful. However touch bar removed Esc key completely. This makes vim much harder to use.

Touch bar also removed the function keys which are very useful for debugging. PyCharm, WebStorm, Android Studio, or even Chrome Developer Tools, all these debug tools use F5~F11 as debug hot key. And again I need to “feel” the physical keys to make sure I am hitting the correct key. With touch bar, all of these are gone.

A Better Linux

Linux has evolved a lot in recent years. I have been using Ubuntu for about one year and upgraded to Ubuntu 18.04 on the second day after its release. Ubuntu satisfies most of my daily needs. Look at what I am using every day:

  • IDE: VSCode / PyCharm / WebStorm, or simply Vim
  • Browser: Chrome / Firefox
  • IM: Slack / Skype / Telegram
  • Office: LibreOffice

All of these apps have Linux versions and they just work as good as on Mac OSX. LibreOffice is an exception because MS Office does not support Linux and, yes, MS Office and iWork are much better than LibreOffice. But LibreOffice is much more stable today, and since I don’t make documents every day, I feel it is good enough for me.

The only inconvenience I found in Linux is that I don’t have an app for making diagrams. Omnigraffle is way better than Inkscape. But luckily I don’t need to do that frequently either so I can just live with LibreOffice Draw or Google Drawings.

Software Limitation

Some apps do not perform well under Mac OSX. One of the most important reason I migrated to Ubuntu is the limitation of VirtualBox.

VirtualBox is a free virtual machine software. In our workplace, we use vagrant, which is essentially a wrapper for VirtualBox. When I was still using MacBook Pro, I wrote code on my MacBook Pro and ran the code on Ubuntu running in VirtualBox. Since we use webpack to build the JavaScript code in VirtualBox, the problem was how to synchronize the changed files to VirtualBox. I tried some solutions but none of them work well:

  • Setting up a Samba in VirtualBox and edit code remotely. Technically this works but since we need to watch the file changes in the VirtualBox in order to rebuild the project, the changes saved through Samba would not trigger the rebuild immediately. Usually I have to wait for about 20s after saving my changes before the project rebuild.
  • Use NFS to export the code on the MacBook Pro, and mount it as an NFS drive in VirtualBox. But NFS access is too slow and the rebuild would require 3x-5x more time than usual.
  • Use VirtualBox Shared Folder to map the code directory from MacBook Pro to VirtualBox. Again this approach did not work because of slow access speed.
  • Put two separate repos on both VirtualBox and MacBook Pro, and run webpack locally on MacBook Pro. Webpack dev server will proxy the API accesses to VirtualBox. Seems perfect solution, rebuild occurs immediately and completes in seconds. However another issue appeared: I cannot commit both server code and front-end code in one commit. I have to commit them separately and sync the repos. This makes it very uncomfortable when I need to change both sides in one commit.

Well I could not blame OSX because this was actually a problem of VirtualBox, but anyway the root reason was that our develop environment could not run directly on OSX.

Eventually I ended up wiping the OSX and installed Ubuntu on my MacBook Pro, and all the problems were gone.

Conclusion

In this post I explained why I think MacBook Pro is no longer a good choice for developers. Undoubtedly it is still a great laptop for UI/UX designers, Product Managers or people who need to do a lot of design / document work, but developers have better choice.

So what’s the choice? Just use any laptop and install Linux!

Thanks for reading. If you have the same feeling as me please clap and consider sharing this post!

UPDATE: To answer some questions from the responses.

  1. Installing Linux on touch bar MacBook does not solve the problem (title image is not a good example). Use other laptops, or buy a MacBook without touchbar.
  2. VirtualBox shared folder is slow when you have thousands of small files. A typical use case is using webpack to compile JavaScript. NFS can be a performance boost but it is slower than local file access too.

Published by HackerNoon on 2018/05/08