all bits considered data to information to knowledge

15Mar/102

Native speakers vs. Phrase-book savvy

It is not uncommon to hear from developers during an interview: “I do not remember all these details, I can always look them up”… And this might be a valid response – up to a point.

It used to be simple – all one had to learn was 32 keywords in C, learn the grammar and then use his imagination to create applications. Early on it was understood that re-using code will increase productivity, so the concept of library was born, later augmented by MFC and OWL… The trend continued towards ever greater modularity – the foundation classes were eventually integrated into run-time frameworks, such as Java Foundation Classes (JFC) and Common Run-time Library (CLR) in .Net… Suddenly, a developer had thousands of functional libraries built by professional teams, and incentive to re-invent the wheel diminished accordingly…

 Would it be a reasonable expectation for a developer to know every single of the classes rolled into JFC or CLR? No. Would it be reasonable to expect them to be familiar with hierarchy of the classes? Yes.  A developer needs to know how and where find a piece of code to accomplish what is needed.

 To be productive in either Java or .Net, a developer must have working knowledge of the most commonly used classes, plus a good understanding of where to find the rest. He (or she) must control the urge to create something that might already exist in the environment and  leverage the existing capabilities to create new ones.

 When hiring a developer I expect him to be fluent in the technology; at the same time I am extremely wary of both the “native speakers” – someone who is so immersed in the technology (Java, C#) that he forgets the rest of the world; on the other side of the spectrum - also to be avoided - are the phrase-book tourists who know a dozen of cookie-cutter recipes and lack either ability or curiosity about the technology to become fluent in it. The former might indicate a technology bigot who is so set in his ways that he would never be able to work with any other technology that business might require in the future, the latter might be an indication of a “fly-by-night operator” – someone who is chasing “hot” technologies to make a quick buck (or suffering from programming variety of ADHD).

NB: Interesting perspective taking my point ad absurdum can be found in this blog post: How to Find Crappy Programmers

 P.S. I emphasize “might” word in the above paragraph, as I have met - on a rare occasion - “native speakers” who spoke several disparate technologies, and were open to learning new ones… and some phrase-book savvy developers could be made to see the light, given sufficient time and money. Al in all, I would consider a "native speaker" a highly specialized "tool" that could be very sucessfully utilized on certain types of the project, while "phrase-book savvy" should not be relied upon for tasks that could require even a modicum of creativity.

P.P.S According to some sources there are ~988,968 words in English Language ; other sources imply that 171,476 words are currently in use.

Yet to be fluent you only need a fraction of it. Here's one bold attempt at classification:

3000-4000 words: Sufficient for reading newspapers and magazines fluently.

8000 words: All you ever need. More words are not necessary in order to communicate freely and read all types of literature.

10.000-20.000: Active vocabulary in the mother tongue for cultivated Europeans.

Comments (2) Trackbacks (0)
  1. So, by extrapolating your metrics above, if a developer knows ~2% of the language currently in use, they can write an adequate program. If they know ~4.2%, they can write a good program. Finally, if they know approximately ~8.7%, they can write exceptional programs. What languages could you, by heart, iterate through the class hierarchy? If someone knew all of this rote memorization, I would be suspicious of their skills. Memorization and proficiency are two completely different critters.

  2. While I never suggested applicability of natural languages patterns’ to the programming ones, the numbers you’ve calculated could be taken as a rough estimate. Somebody who knows ~50 keywords of Java language + grammar + 8.7% of the class hierarchy would be a good programmer.

    Certain amount of memorization is required to be fluent (read: productive); imagine someone who tries to communicate while looking up every word in a dictionary! On the other hand, words without grammar – i.e. the rules on how the words are to be put together – would also be worthless. And even having memorized every word in the dictionary and every rule in the textbook does not make a literature… To bring it all together there must be a vision.


Leave a comment

No trackbacks yet.