Alex Rivera | Logout

What makes you a C programming expert?

Asked 2008-09-19T16:55:46.440
27

I attended a job fair yesterday and a developer asked me how I would rank my proficiency in C. I then realized that this is incredibly arbitrary and almost impossible to nail down, so my question is what knowledge makes you an expert in programming C?

Edit: or what would the breakdown be? what makes you good, decent, proficient, etc.

Edit again: I was looking more for like a list of skills or some other constructive measure by which to judge one's own proficiency in C, as that's hard to do.

List so far:

  • Experience in large projects
  • Mastery of Pointers (and memory management, I'd assume)
  • Mastery of a debugger (gdb, ...)
  • Mastery of a profiler (gprof,...)
  • Mastery of a memory profiler (valgrind, ...)
  • Knowledge of the fundamental standards

c
Edit
Report

2 Answers

35

I think the trouble with this question is that the answer is kind of meaningless. I see people talking about experience, and that's good, and I see people talking about understanding the intricacies of the language, and that's good. However, if I were hiring someone to work on my C project, and I had a magic 8-ball that would give me an accurate answer to any one (and only one) question, I would never ask it, "Are they a C expert".

Why?

Just because someone is a C expert doesn't mean that they're a good software developer. Experience and language familiarity are good, but I think they are both trumped by that intangible, un-quantifiable property that makes someone a "good software developer". What I'm trying to say is, "What makes you a C programming expert?" is not a useful question, because there are more important questions. If someone is a Good Programmer, they will rise to the occasion.

As an example: You can be a C programming expert and be horrible on a team. You can be a C programming expert and refuse to use version control. You can be a C programming expert without knowing how to actually DO anything with C.

The "without" clauses in those sentences are equally important questions: What makes you a good team programmer? What's the best way to use SCM x or y? How do you approach programming a client/server game, or billing application, or web browser, or operating system, or compiler, in C? If a candidate told me "No, I am not a C expert", but gave me great answers to these other questions, I would hire them in a heartbeat over the guy who the magic 8-ball said was a C expert, but doesn't know how to check his code into subversion and hasn't learned a new language in 12 years.

answered 2008-09-19T17:10:52.847
6

This doesn't directly answer your question (sorry), but it might help you decide how you classify yourself.

Instead of just "expert" and "clueless newbie" I prefer the three-level system of expertise used by the medieval guilds:

Apprentice

  • Still needs to RTFM.
  • Getting to grips with the tools and techniques of his craft.
  • Needs supervision.

Journeyman

  • Has Read The Effin' Manual.
  • Competent with all the standard tools and techniques of his craft.
  • Can work alone, and can supervise apprentices on routine jobs.

Master

  • Could have Written The Effin' Manual.
  • Is developing or adopting new tools and techniques.
  • Can oversee a major project that might never have been attempted before.

At a job fair? There are no experts: everybody's an expert. :)

answered 2008-09-19T17:28:57.593

Your Answer