The Conjurer and Scribe Paradigm

07 June 2015

A Conjurer is a doer who will whip up some MVP without giving much thought as to why their tech stack is working.

A Scribe is a thinker who only feels comfortable using libraries and code that are familiar to them.

One creates a final product without fully understanding the different components; The other must understand all the different components before putting them together in a final product.

The first achieves results by quickly recognizing a pattern, writing code in a similar fashion, then checking it only for behavioural success. Code snippets are read based on abstracted variable and method names. What the code is doing is inferred and what works is discovered by breaking its behaviour quickly.

Therefore, a pattern or an example is enough.

The second is more interested in esoteric theories in which acts of programming is derived from. Code must be methodically thought about in an attempt to minimize the number of gaps in a scribe’s logic, with respect to the pertaining topic or concept.

Therefore, a pattern or an example is not enough.

Furthermore, the conjurer is an athlete who wields his intuition — the ability to perceive something immediately, without the need for conscious reasoning.

Any distracting complexity that may arise is a thought subconsciously discarded. Thus a conjurer is able to cut through all the noise (optimization, features, etc) and focus only on achieving the important tasks at hand.

In contrast, the scribe is a scholar who aims for mastery — the comprehensive knowledge on a subject to cover a problem with absolute confidence each and every time.

With patience and discipline, the scribe spends a great deal of time perusing documentation, understanding the quirks of a language, library, or framework, and knowing almost if not every single edge case before writing a single line of code. As a result, at the cost of time for research, that single line of code is “perfect.”

To illustrate the two different mindsets, imagine for a second how you would approach the writing of a function that performs a specified action for each element in an array.


I am a scribe. So indulge my fanatical attention to details.

A scribe writes:

function forEach(array, callback) { 
for (var i = 0; i < array.length; i++) {
callback(array[i]);
}
}
My inner scribe: “Array check. Iteration over elements check. Callback check. Function check.”

A conjurer writes:

array.forEach(function(element) {
// do specific action
});
My inner scribe: “This is totally cheating. Where did ‘element’ come from!?”

Originally published at chiangchendah.ghost.io on June 7, 2015.