Coding is a lifestyle: the new best practices
1. Coding is a lifestyle. 2. What are the new best practices? 3. How worst practices spread.
1. Coding is a lifestyle
When I say coding is a lifestyle, this may not mean what you expect. What I mean by that, is that we program our every day actions through our habits and our information management. Coding should just be an extension of normal living, using computers as an additional tool to talk, entertain, explore, educate, and most importantly execute.
And that last part: execution is what really matters. We may be inclined to forget that mankind went to the moon, using less computing power than some TI graphing calculators. Throughout history we built roads and bridges, saw countries rise and fall, movements start and end, without a formal computer in the process.
So that must always be the baseline: how do you execute this task without a computer? Do you use pen and paper? A whiteboard? Chalk? Phones and operators? Dispatchers and workers?
What coding allows us to do, is in essence create an extension of ourselves that can handle part of the workload. When it comes to formal computer systems, this extension is dumb, and thus must be crafted and maintained carefully. So this is where coding as a lifestyle and minimalism comes in. If you can create a service as telnet unix shell, why use a web service? If you can do something in the command line, why use an App?
For a brief time at the end of 2019, I worked at a local manufacturer in Utah County in fiberglass pultrusion. In order to track tasks and orders, we would log into a telnet server on the companies internal network. There we used a simple text shell menu interface, or command line, to select from a numerical list of options, and enter order quantities fulfilled.
Such a simple interface can be written in nearly any programming language, using stdin and stdout. You can use the command chsh, to make this custom program the login “shell” for a particular user, so it will run as soon as they login. To restart the program, you simply kill the connection and reconnect. Telnet or SSH clients are widely available and broadly compatible on a number of platforms. This is much simpler to create and maintain than a webservice.
This is what I mean, when I say “coding allows us to create an extension of ourselves”. A shell is is a simple program that allows a user to interact with a computer. By leveraging common robust tools, the process of extending ourselves through code is greatly simplified.
It is way to easy to get lost in fancy and complex tools, presentation, and design. In this sense, being minimal, and using the best tool for the job is a good idea. This brings us to our next question: “What are the new best practices?”
2. What Are The New “Best Practices”?
Great coding starts with two things: sound mathematics, and principled design.
The design fundamentals are very straight forward, and dictate a specific flow of action for work.
Principled Design Fundamentals
Identity
Goal
Process
Tools
Principled Design Fundamental #1: Identity
When Herman Boone, played by Denzel Washington, in Remember the Titans, wanted to inspire his team, he asked them a simple question: “WHO ARE WE?” Their answer determined their direction and purpose. Even if it sounds silly or arbitrary, if we want to be able to execute, we must answer that question. “Who are we?”
Principled Design Fundamentals #2, #3, #4: Goal, Process, Tools
Once you know who or what you are, as an individual, a company, a club, an organization, a movement, etc. Once you know what you are, which is really a continual process, then that presents a goal for you. Without an identity, a goal is just a speculation, gamble, wish. With an identity, a goal is driven by your purpose. To achieve your goal you need some process to get you there. And tools help you expedite and execute a process.
The order here is important, and should be considered both an order in time, and an order of priorities, and an order of decision making. Identity. Goal. Process. Tools.
Identity. Goal. Process. Tools.
Sound Mathematics
The other critical part of the new best practices is sound mathematics. Mathematics is a language, at it's core, it is creating symbolic representation of information. Datastructures, as an organizing principle for these symbolic representations direct the way the math is developed.
In programming, everything is mathematical. And that mathematics focuses on the representation and manipulation of state. Actions evolve state, channels propagate action signals, and mediums embed the state into a persistent form.
Whether consciously or not, every programmer is building a mathematics for the representation, the presentation, and through actions, the manipulation of state. It is much better to do this in a sound and direct way, without necessarily relying on a programming language or physical computer to construct and “put down” the necessary mathematics. Whether is is chalkboard or notebook, mathematics is best developed in the native primitive medium of the creator and designer, and not the medium of the delegated machine.
Talk about the mathematics of your program, ponder it, visualize it, both eyes closed and open, on walks, on the beach, in a car, with green eggs and ham, while working out, everywhere. Mathematics belongs in the medium of the mind, and any tools, are there to support the mind. This is why simple tools work better: notebooks, chalkboards, etc.
If you need to write some code on your computer, work on the math off your computer. Code, Math, Code, Math, Code Math.
The more you develop your mathematical clarity and ability, the simple and more direct your programming solutions will be.
This brings us to the next section: where we went astray from these best practices.
3. How Worst Practices Spread
They say that money is the root of all evil. Those who know me well, know I have spent a lot of time thinking about money. A lot of complexity can be simplified if you shift the focus from the token, to the user. Again, this is like what we talked about with mathematics. The users of money matter, how they interact, their hierarchies and processes. You cannot understand the token, indeed the token means nothing, without the users. Focus on the users, not the token.
The spread of worst practices can be attributed to a “top down” “imitation culture”. The FAANG companies push out a new tool or idea, and then instead of merely imitating and assimilating, the industry tries to naively copy and paste. But whereas Identity, Goals, Processes, Tools, is bottom-up and inside-outward thinking, worst practices come from “top down” and “outside-in”.
Consider the following statements you might hear from developers.
“Oooh, I like Google’s suite of real-time web tools.”
“I like Facebooks modern interface.”
“Twitter makes a mean progressive webapp and an engaging an minimal system for using engagement”
Those sentiments are completely fine, but the problem arises when we try to imitate and not assimilate. An imitator copies and pastes the external trappings, but an assimilator asks "Why do I like this so much? Why do these tools make sense for this organization? How do these design choices help the users?”
So the moral of the story is be an assimilator, not an imitator. Or better yet be The Terminator.
I’ll be back.