MacOS for developers: Pain points.

Ivan Sergiienko
5 min readApr 10, 2022

I’ve heard people saying MacOS has a good UX, and that on MacOS things “just work”, while on Linux you have to fix things a lot.

I’ve been using MacOS for 2 years (2019–2021) and I encountered numerous problems.

Here are my examples of basic things not working.

1) “pip install” works, but executables not in PATH

$ pip3 install jupyterlab
[...] success
$ jupyter-lab
zsh: command not found: jupyter-lab

There is an old stackoverflow question, but in 2021 I still faced this problem…

I had to find Python folder in ~/Library , and add bin folder for Python 3.8 to PATH (so for newer versions I’ll have to do it again… Wow so handy…)

export PATH="$HOME/Library/Python/3.8/bin:$PATH"

2) Git rename lowerCase to upperCase

Say you want to rename app.js to App.js and commit to git .

Easy enough? Not for MacOS… As it’s not strictly case sensitive…

Prepare for some extra work…

Extra work to change case of a filename in git on MacOS

https://stackoverflow.com/a/3011723/1657101

3) Installing apps: no official package manager

There is no apt install , prepare for the manual download + “drag n drop” experience… And GUI installers… And then manually adding the app to the PATH

VSCode installation instructions for Mac:

Official VSCode installation instructions for MacOS

To install an app you have to drag and drop. For example:

All apps on Mac are installed by drag and dropping a file into “Applications” folder

Then you have a multistep installer like on Windows.

For example, here is Miniconda3 installer:

An example of a GUI app installer on MacOS

After the installation conda is not in PATH:

Endless problems with PATH…

Cherry on the pie: MacOS won’t allow you to open apps downloaded from web by default

You can’t just open downloaded executables…

You have to open file manager, right click the file, then click “open” now it will show you the “open anyway” button.

Alternative to manual download: brew

brew is a 3rd-party package manager for Mac.

I did not enjoy brew as much as apt-get on Ubuntu: brew is slow, often throws errors.

App Store

App Store simply has almost no apps for developers: no git, no nodejs , no miniconda .

4) Want to compile a C file in terminal? Requires XCode GUI…

You have to install Xcode — “the big ugly software development GUI”.

And you can’t install it from terminal! You have to open App Store GUI…

5) Uninstalling apps

Should be an easy and obvious thing… Nah, you have to google how to do it…

Turns out, in the Applications folder, you just select Move to Trash .

Sounds easy, but is it really uninstalling the app?

No, there is another guide for “completely uninstalling apps”:

You may need to delete the app’s preferences from your Library folder.

First, you need to access the Library folder — this has been hidden by default since Mac OS X 10.6…

Finally, there are 3rd party uninstaller apps (!)…

There are shareware utilities that promise to do all the hard work of tracking down errant app files and delete them for you.
[…] like CleanMyMac X, Uninstaller, AppCleaner, AppDelete and CleanApp.

(quotes are from a macworld article).

6) It is not possible to completely hide the bottom panel (“Dock”)

On Mac at the bottom of screen you have a panel with all the useless apps: Siri, Safari, FaceTime, Apple TV, etc.

“Dock” — the bottom panel

Guess what, you can’t get rid of it (completely)!

Turning it off completely is pretty much a no-go without breaking OS X in the process.

You can hide it, but again, not completely… 😂 (it will popup when your mouse is at the bottom of the screen).

The best I can suggest is keeping the dock hidden, and make the size as small as possible so you’re less likely to trigger it.

Source: stackoverflow.

7) Unix commands are different from Linux: mv, ps, sed

I want to sort processes by cpu usage, stackoverflow answer:

But on MacOS that simply doesn’t work, as ps has no --sort option:

$ ps --sort=-pcpu
ps: illegal option -- -
usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
[-g grp[,grp...]] [-u [uid,uid...]]
[-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]
ps [-L]

mv multiple files: syntax is different

https://askubuntu.com/questions/214560/how-to-move-multiple-files-at-once-to-a-specific-destination-directory

8) Charging from the left side of laptop results in 400% CPU load by kernel_task

9) You can’t delete Apple TV, Safari, QuickTime

The “Delete” button for all the Apple apps simply doesn’t exist.

Conclusion

MacOS, like any other OS, has many pain points for development: often things just don’t work out of the box.

My impression is that MacOS provides a smoother developer experience than Windows, but not as good as Linux (e.g. Ubuntu).

Especially, if you like working with Terminal.

MacOS is actually very GUI-centered: all Settings are in GUI, apps are installed via GUI. There’s almost nothing you would do with MacOS via Terminal. When you google “how do I … on MacOS”, prepare for N steps with GUI screenshots, rather than running a command in Terminal.

--

--

Ivan Sergiienko

Software engineer who likes philosophy and wants to die. Welcome to my life!