Code As Design

In 1992 Jack Reeves published an essay What Is Software Design? in the C++ Journal. His basic premise is: "that final source code is the real software design." He goes on to explain… "The final goal of any engineering activity is some type of documentation. When a design effort is complete, the design documentation is turned over to the manufacturing team. This is a completely different group with completely different skills from the design team.
Read more →

The 10 Commandments of Egoless Programming

From The Psychology of Computer Programming by Jerry Weinberg: 1. Understand and accept that you will make mistakes. The point is to find them early, before they make it into production. Fortunately, except for the few of us developing rocket guidance software at JPL, mistakes are rarely fatal in our industry, so we can, and should, learn, laugh, and move on. 2. You are not your code. Remember that the entire point of a review is to find problems, and problems will be found.
Read more →

The Effective Engineer

In March 2015, Edmond Lau published The Effective Engineer: How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact. In this new book he explains his personal story in how he has come to understand what makes an effective engineer, explaining the mindset and tools that an effective engineer uses to get 10x results without working 10x hours. What makes an effective engineer? I extracted these from the introduction to the book:
Read more →

Ben Shneiderman’s Eight Golden Rules of Interface Design

In 1986 Ben Shneiderman published his "Eight Golden Rules of Interface Design" 1. Strive for consistency Consistent sequences of actions should be required in similar situations; identical terminology should be used in prompts, menus, and help screens; and consistent commands should be employed throughout. 2. Enable frequent users to use shortcuts As the frequency of use increases, so do the user's desires to reduce the number of interactions and to increase the pace of interaction.
Read more →

Rob Pike On Complexity

The following is an excerpt from Notes on Programming in C by Rob Pike Complexity Most programs are too complicated - that is, more complex than they need to be to solve their problems efficiently. Why? Mostly it's because of bad design, but I will skip that issue here because it's a big one. But programs are often complicated at the microscopic level, and that is something I can address here.
Read more →