Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!bbn!apple!well!tmh From: tmh@well.UUCP (Todd M. Hoff) Newsgroups: comp.lang.c Subject: Re: C expert criteria Message-ID: <12280@well.UUCP> Date: 20 Jun 89 06:11:04 GMT Reply-To: tmh@well.UUCP (Todd M. Hoff) Distribution: all Organization: Whole Earth 'Lectronic Link, Sausalito, CA Lines: 60 Responses to responses about: > What do you need to know to be an expert C programmer? There must be some real answers to the question about what makes a C expert. We all at least have implicit criteria. In the Unix world I saw a list categorizing 9 levels of Unix expertise. What the different categories were escapes me now, but they went something like: 1. Neophyte. can log onto the system and logout 2. use ls -l and cd ...... 9. Wizard. Can use m4 in their sleep and knows all the options to ls. Something anologous for C should be possible. After all, when we want to hire a senior level programmer we don't merely mean a programmer with X (assumed large) years of programming. We mean somebody who really knows their stuff. I'm after what they "know" not just inane witicisms. > ... if you have to ask, you aren't I know this was said mostly in jest, but I think its very valuable to externalize programming "rites of passage." > Who cares? This is certainly a valuable question and is right up there with the infamous "why?" question. It should always be asked but too often "Who cares?" is used as an escape. Actually there's plenty of reasons to care: 1. When hiring someone how do you know they are qualified? By asking questions, right? Which questions? This relates to my question. 2. How do you as a programmer know you are getting better? Writing more code per millisecond? Fewer bugs? Or perhaps understanding the essence of the problem and writing the most elegant solution to that problem? What are the C building blocks that are elegant? Not just pointers, but higher levels of technique. 3. When doing code reveiws, how do you judge the competence of the code with no definition of what "good" code is? > ...Knowledge vs wisdom First, since C is recursively defined, no database no matter how large could hold all valid 'C' constructs and idioms. That's why we have compilers. Besides such a database would be merely a listing of facts. Whereas an expert system combines raw facts with inference rules. These rules are a form of canned wisdom. Not as ranging as human wisdom, but as several medical expert systems demonstrate, wisdom useful enough to save lives. I don't think a semantics game battling knowledge vs wisdom definitions is useful. The point of my question is clear. > What groups would be appropriate? This one of course. I'm asking about the essence of C programming. This seems at least as valid as pointer addition. Any more takers? Todd