Code Craft
Software Development is not just Engineering. It also has a personal, artisanal quality where we create something with care. These articles focus on personal development, tooling, and Making.
The section used to be called “craftsmanship”, until I learned that maybe, this term is insufficiently inclusive. It is interesting to observe how other people took that message. Whereas some took this as an opportunity to reflect, Robert C. Martin decided to prove the point. I'll book that as yet another case of “Uncle Bob Considered Harmful.”
Posts
Reasonable Code
If it's impossible to follow, that code is bad.
What is reasonable code? In an article on The Whiteboard, a fellow software developer under the pen name “Jimmy Hoffa” thinks about reasonability as a measure of code quality. He arrives at six exemplary properties of reasonable code:
- small scope
- short stacks
- explicit data use
- explicit data ownership
- explicit outputs
- dictating instead of deciding
He makes a good case for continuous self-improvement and a focus on code quality in our development process. It is well worth the read, especially for beginning professionals. And not quite by chance, it seems to be a subtle advertisement for functional programming and static typing: anything else would have a hard time meeting his characteristics of reasonable code.
Unix is my IDE: script everything
I don't like remembering stuff. That is what computers are for. An ode to automation.
Inspired by this, I finally got around to publish a couple of small development utility scripts at https://github.com/latk/Unix-is-my-IDE.
On Cleverness
Please apply your cleverness not to write clever code, but to find clever ways to avoid the need for blatant cleverness.
Intent, not implementation
When designing interfaces / APIs, it is easy to design the interface around the solution space. This makes such interfaces difficult to use, difficult to test, and difficult to maintain. Instead, our interfaces should allow users to easily express their intent.
Dump notes