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 ...

Fragmentation When you have never experienced large-scale software development, your preference is often to prefer fragmentation. You want lots of little ...

Software Engineering The standard definition for engineering from Wikipedia is: Engineering is the application of mathematics, empirical evidence and scienti...

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 ...

Roles and Responsibilities One thing I’ve noticed about the software industry is that there is no unified base of definitions or best practices. Pretty much, everyw...

The Myth of Code Reuse Perhaps the most maligned of all programming techniques is code reuse. The idea is simple: if you’ve written some code, tested it, and the...