I’ve seen a few posts lately covering whether or not you need to know C to be a good programmer, most recently Do you really need to know C? I think so from Darren Stokes.


To a certain extent it seems like people who know C think everyone should know it, and people who don’t know C think it’s not important. I think the truth is a little more complicated - Knowing C is something likely to show up in good programmers, but isn’t in itself that important.


Assume we are in the context of projects that don’t use C directly - few would argue that you can work on a C project without knowing C. Think about what knowing C actually means - that you have been programming long enough to have experience from before Java and .net became the dominant mainstream languages and you have continued to learn new things in moving to newer systems.


It’s that continual learning, and to a lesser extent the years of experience that make you a good developer. There is something to be said for understanding the memory management stuff that C programming forces you to look at, but that’s not really tied to the language either. Again, knowing C is just an indicator of something else - that you are capable of understanding those concepts.


Requiring knowledge of C when hiring is probably a fairly effective way of filtering out the people who would be incapable of being developers at all in C, and therefore incapable of being really good developers in more modern languages. However, you’re also filtering out the good developers who just never needed to use it.


This is probably not too serious a problem right now, but will be more of an issue in the future, as fewer people have a reason to learn C. I personally haven’t written C (or assembly) code in about 10 years. I know C because I have been coding longer than that, but if I was starting out now I wouldn’t bother learning C - there are better ways to learn the concepts now.