There are two ways of constructing a software design: one way is to make it so simple that there are obviously no deficiencies; the other is to make it so complicated that there are no obvious deficiencies.
-- C. A. R. Hoare
If you love him, teach him C++, for it's heaven; If you hate him, teach him C++, for it's hell