Hacker News new | past | comments | ask | show | jobs | submit login
Can you take programmers seriously if they don't know C?
12 points by jdefr89 on April 8, 2011 | hide | past | favorite | 14 comments
I know it is an arrogant thought. But I myself have trouble regarding someone in the computing field as knowledgeable or 'good enough' if they do not know C .

C was my first language and is still my favorite. Those who know it understand computers on a far deeper level than those who stick to all high-level languages.

I would go a step farther and say that I wouldn't hire someone to work for me if they were not sufficient in C. Maybe this is just because I am mostly a low-level junkie...

Any one else feel this way? Furthermore, do you know anyone who doesn't know C but is still excellent at coding/computer-science?




I think this question smacks of elitism and in-group bias. For projects that require C, not knowing C is obviously a deal breaker. But most projects do not require C, and usually "understanding computers on a far deeper level" is much less valuable than being able to properly and elegantly build on top of existing systems/frameworks and leaving useful code in your wake, regardless of language. Due to the massive adoption of the Linux and Windows kernels as a basis for almost everything else done in computing, there will be a pretty major correlation effect between those who are good programmers and those who know C. Since many in the computing field share your sentiment, it drives others to "prove themselves" by making sure to learn C. Also, C is taught in CS classes. But all of this does not mean that knowing C is a precursor to being a good programmer- it's just a correlated effect.

The ability to build massive (and interesting) projects on high-level languages is growing sharply, and the reasons people would have learned C in the first place are shrinking, since there is plenty to work on without even caring about C. I hope the continued proliferation of quality high-level libraries and frameworks spurs a gradual decline of the divisive and self-congratulatory mindset demonstrated here, since it is not knowing C that makes programmers good. It is the ability to get things done right with whatever language(s) they need to.

(I know C)


Furthermore, do you know anyone who doesn't know C but is still excellent at coding/computer-science?

I think this guy somehow did OK, even without knowing C: http://en.wikipedia.org/wiki/John_McCarthy_(computer_scienti...



Ah yes... The inventor of LISP.


That depends: if they will need to write C code, then of course, they need to know the language. But if all they're gonna do is write Haskell, Erlang or Lisp, what's the point of knowing C?

I do know a lot of people, who are excellent programmers, but their C is read-only at best, because their language of choice has been something else.

I see nothing wrong with that. A good programmer usually doesn't think in a language context anyway, he translates his thoughts to a language, yes, but when designing, he thinks a few levels above the language. Thus, the lack of C knowledge does not, in my opinion, does not mean one's insufficiently skilled. Nor does good knowledge of C mean one's a good programmer.

I've also met with people who were excellent C coders: they could code down whatever they were told to, blazingly fast, using every trick the language had to offer. But they couldn't design their way out of a paper bag, because they lacked vision: they could only think in C, and not beyond that. They couldn't see the bigger picture.


I'm not sure I can take someone seriously as a programmer if all they know for operating systems are Windows, Mac OS and flavors of UNIX/LINUX.

Seriously though, C is a good language but for back to basics you are talking assembly language at least. Preferably several assemply langages.


Last place I worked had a guy who viewed C as the enemy and would not code in anything put Fortran - it was a production system running a totaliser.

However it's a silly assertion. Unless you need someone to program micro-controllers, devise codecs, do low level memory management etc. etc. understanding C is hardly going to be a mandatory requirement. If you're running a software company building web apps I'd much rather have someone that understands user interfaces and codes in a productive language - C expertise is superfluous.

I have worked professionally with C myself and studied it at uni. However you won't see me volunteering for C work. It's painful to go back to C after C#, Ruby etc.


After learning the syntax of a language (let's say C), you are left with the formidable task of learning best practices, idiomatic expressions, frameworks, debuggers, libraries... and then, how to deal with managers, how to hire employees, how to do taxes. And in spare time let's all spend a few years learning C. ;-)

Or rather, a designer is not a good designer if he doesn't have the human anatomy memorized, and no UI specialist is a good UI specialist if s/he's not a good designer. So let's all us who make web forms, go and study human anatomy for 2 years.


Soooo.... if a statistician doesn't know C but knows R then that's a deal breaker? How about if a 3d game programmer knows lua, but can't do function pointers ? I'm way too late to this party, but I'm sorry it's horses for courses here.

Know the tools for your trade. Nothing more, nothing less.


do you know anyone who doesn't know C but is still excellent at coding/computer-science?

You don't? How parochial. I recommend tht you study a good functional language for a while. It helped me understand coding on a "far deeper level".


Not knowing C is fine, but not having an understanding of the machine you use to make a living, well, you can get away with it, but before i started learning C and reading about low-level issues, i felt like I was cheating.


One might just as easily say:

:%s/C/Lisp,Haskell,OCaml or Erlang/g

It all depends on what you want. And yes, I know a few excellent computer scientists who don't "know" C.


What's wrong with not knowing C? Programmers will program in tools they know in the domain they're familiar with.


Yes, I would agree. Although I would take it a step further for web engineers (developers) to say that if you don't have your N+ and/or Cysco certs, you shouldn't be designing.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: