Have you ever had to work on code from someone who seemed hell-bent on making themselves irreplaceable by creating software which was esoteric (a clever-sounding greek word meaning “bizarre & impossible to understand”), non-standard and completely UNdocumented?
Don’t fall into that trap. The result will NOT be what you hope. Oh, I suppose you’ll find yourself irreplaceable… for a time. But that time will be spent SUPPORTING your own little Frankestein-let, and since most good developers tend to be more artistic than analytical, that’s akin to having painting what you thought was a single masterpiece, then re-working it for your client again and again and again and again and again and again and again and again and again and again and again and…
Get the point?
Nobody wins when bad code is written, particularly code that is made “clever for the sake of clever”. This is what I call “UN-inheritable” code – code which only the The Author can understand… but no one else.
Why is UN-inheritable code bad? Can The Author help it if he/she writes terribly efficient-but-esoteric code, and no one else can understand the genius & elegance of his/her creation?
The Wise Consultant understands that “The Elegant Solution” – that holy grail The Wise Consultant strives for – must fulfill not only the purposes The Client is aware of, but also the purposes The Client is NOT aware of. In order to qualify as “elegant”, code must run as “efficiently” as possible, and this “efficiency” exists on several levels:
1. The Code must execute on the actual CPU efficiently;
2. The Code must take as little HUMAN effort as possible to be understood by The Supporters;
3. The Code must use as little DOCUMENTATION as possible yet still be fully-documented;
4. The Code must be modifi-able with as FEW LINES as possible, and in single areas (not globally) throughout The Code;
If The Code can function efficiently on The CPU, yet be inherited, supported and extended by (say) a developer with only modest experience & capability, then it has attained the status of “The Elegant Solution”, and several consequences result:
A. The Client is satisfied (a better outcome than “happy”);
B. The Users are satisfied (again a better outcome merely “happy”);
C. The Supporters are satisfied (that they CAN support The Solution);
D. The Client RETAINS The Wise Consultant for yet another project.
Hopefully I’ve shown how focusing to write “inheritable” code is indeed a worthy goal for The Wise Consultant, and that in contrast those consultants who conspire to write bad code in the hopes of retaining their jobs will instead become despised, un-trusted, over-worked (from being the ONLY ones who can support their solution), and – ultimately – fired. And with good reason.
Remember: The Wise Consultant…develops code which is “inheritable”.