Of course, students two and three will be the best engineers. Student one will give you all the wrong answers that are in the texts, all the wrong answers when typos are made, etc. Student four will give you lots of wrong answers, on the advice of self-proclaimed experts. (after all, being somebody's "mum" doesn't make this woman any more likely to be able to cook a good steak.) Students two and three each will be valuable engineers, and are the sorts who are more likely to catch other people's mistakes, and verify that their own answers are consistent with nature.
A student who, when presented with the problem:
Using module Foo, write a Perl program that does Bar.
tries in good faith to solve the problem, but also asks for help on PerlMonks when they hit a stumbling block that is outside the intended scope of the problem, will probably make a good programmer. Perl is a very complex language, there is no way for most people to understand everything that is relevant at each stage of the learning. We just have program partly by coincidence for awhile, partly by black magic... as distasteful as that is to many of the Orthodox monks. Then, eventually, we get to where we can actually understand the manual when we read it, and can program intentionally. Until 'perldoc -f map' is chanted, at which point the process begins anew.
--
Snazzy tagline here