Author Archives: G Wade Johnson

Troubleshooting Questions

Between my earlier career in electronics and my current career in software, I have found a number of questions that have been helpful in troubleshooting problems reported by others. None of these questions are original to me. My wife described troubleshooting a hardware problem over the phone and mentions some of her troubleshooting questions. I… Read More »

Coding Style: Terse vs Verbose

One coding style issues that causes many arguments is the distinction between the Terse/Elegant/Succinct style and the Verbose/Legible/Debuggable style. As usual, each side explains that their style is the only rational choice and that the other approach is obviously wrong. First, let’s look at the two styles to see what they say. In order to… Read More »

Sturgeon’s Revelation of Code

One problem with comparing different programming languages is finding a valid comparison. It’s pretty hard to really compare two different languages. On the other hand, it’s pretty easy to compare example code from the two languages. Unfortunately, comparing code examples is likely to run into Sturgeon’s Revelation, or Sturgeon’s Law: 90% of everything is crap.… Read More »

Code Comment Guidelines

In my last post (Thoughts on Code Comments), I described two opposing camps that argue about code comments. Like much of the craft of programming, the commenting of code is too complicated for a simple set of rules. In this post, I will describe a set of guidelines that I’ve adopted over the years. These… Read More »

Don’t Lose Sight of the Basics

I’ve recently been reminded of something I used to tell entry level programmers repeatedly: Review the basics. And really I mean all of the basics: data structures basic algorithms basics of algorithm analysis language syntax core CS concepts testing strategies In many programming positions, you can get away with coasting on these things for a… Read More »

Programmer Beliefs

The practice of developing software depends on a large body of arcane knowledge and skills. Almost all of this knowledge is based on logical principles and built up to the point that we can do amazing work. Because programming has it’s roots in applied mathematics, there is an impression that programming is also a logical,… Read More »