Waterloo Style When I first started learning how to program, I stumbled onto an extremely strong programming philosophy that was fairly dominant at the Uni...
Software Development Ethics Computers can do great things for people, but like any other tool, they can also be used for evil. So we, as software developers, need an et...
Lessons Learned You learn a lot during thirty years. I tried to write about most of it in this blog, at least from a higher level perspective bringing lots ...
Software Engineering The standard definition for engineering from Wikipedia is: Engineering is the application of mathematics, empirical evidence and scienti...
Fragmentation When you have never experienced large-scale software development, your preference is often to prefer fragmentation. You want lots of little ...
Symmetry “One of these things is not like the others” -- Sesame Street Symmetry is an often ignored property of code that is incredibly helpful when ...
Systems Thinking There are two main schools of thought in software development about how to build really big, complicated stuff. The most prevalent one, thes...
Piecewise Construction One of the popular ways to build software is to start by focusing on a smaller piece of a larger problem. You isolate that piece, code it up...
Organization Disorganization is extremely dangerous for a software development project. No matter what code quality is delivered by the programmers, if ...