Simplify your counting.There are only three numbers: zero, one and many. You should have no (zero) bugs, one way to do things right and many examples that test for usability. If you have many bugs, multiple ways to do things right and no examples, what …
A good idea at the wrong time is a bad idea.
This is a great ideal to aim for: that at any time you can be asked to step away from your code and, not only does it continue to function superbly, but those who carry it forward want to reach out and hug you for the fabulous work you've done. …
All the revision in the world will not save a bad first draft: for the architecture of the thing comes, or fails to come, in the first conception, and revision only affects the detail and ornament, alas!T. E. LawrenceI've previously talked about the three stages of writing software …
There are two parts to our natural human experience*: the physical and logical. The physical relates to our tangible selves and the logical to our mental selves. Our interactions between these two worlds are so tight that they appear largely seamless, especially given the prevalence of logical tools such as …
Wisdom is the principal thing; therefore get wisdom: and with all thy getting get understanding.Proverbs 4:7 (KJV)One of my teachers fascinated me at his ability to make lightning fast assessments. I was blown away by his snap assessments even without crunching through the details - just a …
Name refactor - rename an entity (variable, function/method, class) for clarity in order to reduce logical tensionExtract variable - if a sequence of logic starts repeating itself it's time to create an entity from the snippetExtract method/function Extract class - inheritanceExtract module - when you begin to …
Great code is grown not built.It is dangerously incorrect to think of code in the same way we think of physical products; that once built they are complete. Software is never complete. The correct metaphor for a programmer is a gardener, who endlessly tends to his garden to bring …
Bugs make you strong.Photo by Harish Shivaraman on UnsplashIt sounds counter-intuitive but every bug you find is one step close to making your code base stronger and more reliable. Naturally, we try to avoid any unpredictability in our code almost as if we want to snip all the …
Photo by Annie Spratt on UnsplashI find that, invariably, code that has been thoroughly pondered over tends to organise itself into layers. For example, for most of the code I write, which runs in the shell, there will be:a presentation layer, which handles commands and options and returning …
Writing great software is 99% reading documentation.I've previously written about the stages of software development. They are the hack, refactor and integrate stages. The reason the first stack is called 'hack' is because it's usually a representation of a hurriedly put-together product - something you've hacked, …
The team of wild horses on the left are not without strength. They are obviously heading in the same direction, which is a good thing. The problem is that they have not been harnessed effectively so that, while they might be producing individually they are not really working as a …
It is easy to just get going in writing software which is designed for a narrow feature scope. Usually, we can even get away without employing any pen and paper. However, as the feature scope expands it gets harder and harder. Under the waterfall approach the solution was to rigorously …
A great understanding is transformational. With it your vision is clear and the vista plain. Understanding what computer programming is will amplify your effectiveness at it. In this brief post I will outline the essence of computer programming.A Computer Is A MachineComputers are machines. In the early days …