Computing Applications

What Everyone Knows and What No One Knows

Bertrand Meyer

The following observation has no scientific value and it may have no value at all. It surprised me, though.

It is about something that everyone in a group of young people across the world consistently seems to know, and something else that no one in that group seems to know.

I recently conducted a large number of remote one-on-one interviews of candidates to a new master program in software engineering. The students are from many countries across four continents and typically have a bachelor degree in computer science, although in many cases from not so well-known universities. Many also have some industry experience as software engineers.

Initially, I was using different questions for different interviews, perhaps because of an unconscious fear of intellectual laziness, but I soon realized that this concern was silly; consistency is more important, making it possible to compare candidates. So I developed a medley of staple questions, with some variations to account for diversity (if you spot in the first few minutes that a candidate is ahead of the pack, you can try more advanced probes).

The experience was eye-opening as to the quality of degrees worldwide; I became used, for example, to proud CS graduates telling me that Quicksort is O (n).

The answers to two of my standard questions particularly struck me. One is something that everyone in my sample of over 120 interviewees answers correctly; the other something that no one can answer.

The first one follows my request to name some design patterns. If the interviewee hesitates, I will coxswain him or her a bit. For example: do you know about MVC? Then a light goes on and the answer comes, Model-View Controller. Not just the expansion of the acronym: when I query further, I get a decent explanation. Well, not necessarily a deep one (I have since found out that if I present a concrete case of software architecture and ask whether a certain part is M, V, or C, the results are not always impressive), but let's not be too harsh; the basic idea is all I wanted in the interviews.

Now here is an idea that seems to have made it to the masses, from Ghana to California and in between. I hope Trygve Reenskaug, the inventor of MVC, is proudly reading this.

Another of my questions is about logic. Its statement is very simple:

Assume that A implies B. What can we say about `not A' and `not B'?

To me, this is about the same as asking "What is the value of 2 + 2?". It is not. In my entire set of interviews, I did not get a single correct answer.

It was not a matter of misunderstood words or context; I always took the trouble to explain what this was all about, in as many different ways as needed to make the question clear. I got a few vague and wordy excursions into things that are true and things that are false, but never the clear, straightforward answer. Not once. The closest I heard is that maybe `not A' does not imply`not B' — along with a few affirmations that maybe it does.

(Qualification: I did not use that question with a small number, maybe five, of  the top candidates, assuming they would find it trivial. In retrospect I should have, but that could at most have affected the overall result marginally.)

So everyone in the world, or at least that sample of the world, knows MVC. No one knows the elementary rules of logic.

Over the past decade I have seen many computer science departments, including in top institutions, remove the logic course from the curriculum. And MVC is a great concept. But still.

Interpretation, if any, left to the reader.

Bertrand Meyer is chief technology officer of Eiffel Software (Goleta, CA), professor and provost at the Schaffhausen Institute of Technology (Switzerland), and head of the software engineering lab at Innopolis University (Russia).

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More