Journey of an aspiring software craftsman
Fingers on the home row - Mind on the problem - Craft at the workplace

02 November 2020 - Mind on the Problem

The mainstream workflow paradigm doesn’t help you remain focused - it is filled with context switching and visual noise. Let’s take a closer look and see if we can find a more efficient paradigm.

Hi!

That’s been one of my mantras - focus and simplicity. Simple can be harder than complex…

Plato

 

Context management

The mainstream paradigm features windows.

Windows are very practical. Until you find yourself spamming Alt+Tab due to their sheer number.

toomanywindows

In that situation, you might try to put 2 windows (or more) side by side. It certainly is possible.

Except that by the time you set them the way you like, you already forgot what you wanted to do.

I find that a better option is to use screen splits: that way, you get to see exactly what you want on the screen.

Here, you can see three splits (one on the left, one of the right, and one under them):

vimsplits

Vim keeps track of all the previously opened splits so you can query vim to open any of them. Below, the querying menu allowing me to select one of the 15 existing splits:

vimbuffers

Screen splits do not overlap each other. You don’t have to pick one window to work in anymore.

Instead, you have control over how many splits you want to work with, as well as their geometry on your screen.

I personally like to have either 2 or 3 splits open at the same time, but other tastes exist:

vimsplits

 

Project structure visualization

The mainstream paradigm features Project Explorers.

projectexplorer

I’m going to quote u/romainl here:

I don’t like to have information on the screen that I don’t use: an always-on file explorer, for example, is only ever useful when you actually use it so it’s just a waste of pixels most of the time […]. All that is just noise.

I like much more using the tree utility whenever I need it (right split):

tree

 

Mouse & Graphical Interface

The mainstream paradigm provides searching, scrolling and browsing links after links after links, amongst other things.

linkafterlink

Keyboard & Muscle memory

I prefer using my keyboard and build muscle memory because I feel more proactive, rather than merely guided by the GUI. In the example below, I query the same files as above instead of browsing:

fuzzybrowsing

 

“Focus, and simplicity”

I follow three basic guidelines in order to maximize my focus on problem-solving:

Hence my “Focus, and simplicity” paradigm:

Every action should be instantly accessible, from the current context, from my fingers.
Graphical elements should appear on the screen exclusively when I need them.

Ideally, this would mean full functionality using:

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.

Antoine de Saint-Exupery