Reddnet Scribbles

It makes me want to gouge my eyes out with a cheese grater!

C Snobs

Stephen M. Redd
Monday, June 02 2008

Recently, I ran across one of the many little spats that develop between bloggers. This time it was between Alastair Rankine of girtby.net and Jeff Atwood of Coding Horror.

It's the typical spat.

One blogger decides that another blogger is no longer writing what they want to read. Rather than just unsubscribe, they write a big public post about why they have decided to unsubscribe and why the other blogger sucks.

And, as is typical of these kinds of spats, the blog post starts by talking about how they don't normally slam on people they unsubscribe from... then they slam on them anyway.

Sigh....

Anyway... you can read the spat at the two links below if you want... but the details aren't that important to what I have to say.

Rankine's post:

Atwood's reply:

What really got my attention in reading Rankine's part of this train-wreck (this is the nerd version of Jerry Springer right here) was that Rankine jumped Atwood's shit for not knowing C. In fact, he went as far as to say that by not knowing C, Atwood was not credible as a programmer.

Every time I see this opinion put forth by otherwise smart programmers it makes me foam at the mouth in rage and frustration.

This isn't a minority opinion in my experience.

I see this "must know C" prejudice all the time. I've even been passed over after a job interview had revealed my lack of a C background. There isn't any telling how many interviews I didn't even get to attend because my resume lacked C/C++ (even though I've never applied for a C/C++ dev position).

I also see this idea put forth by people that I otherwise respect... even Joel Spolsky, a hero of mine, makes a big deal out of knowing C. In his legendary advise to college students article  #2 on his list is "Learn C before graduating".

He even gives an amazing (in terms of stupidity if you ask me) example:

"...if you can't explain why while (*s++ = *t++); copies a string, or if that isn't the most natural thing in the world to you, well, you're programming based on superstition, as far as I'm concerned"

So how does knowing this help me write better C#? This doesn't directly apply in C#. Wouldn't it be better if I knew how C# does string stuff, which mechanisms are more efficient in specific cases, and why?

I could take Joel's advice and go off wasting my time learning C. Then, like him, I'd be able to translate my C# concepts into C in order to understand how it all works under the hood... or I can just learn how C# works and skip the C translation step. Both are valid approaches, but I think it's unfair and narrow minded to discount my ability to understand what goes on under the hood just because I lack a formal C background.

I'm not saying that knowing C would hurt me. In fact, I've often wished I had the patience to go back and learn C. But honestly, writing in C makes me want to die. How did any of those old C guys actually get anything done?

Besides, if everyone based their understanding of higher level languages on C then where is the diversity? In some ways, my understanding of some areas of C# is actually better than that of people with C backgrounds precisely because I DON'T have a C background.

While Joel has good reasons for preferring C experience in his employees due to the kind of development his company does, that doesn't map well to other areas of the programming field.

I do asp.net web applications. When I'm hiring, I'd MUCH rather you have a solid understanding of how IIS works internally. I don't care if you can write a fancy-pants sorting algorithm in C. I trust that the .NET framework guys will work out most of that anyway. As long as you understand the internals of C# or VB and the .NET framework you'll do fine in my field without knowing any straight C at all.

When someone like Rankine makes such a prejudicial assumption about an otherwise competent person based just their lacking a C background... well... it strikes me about the same as the racial prejudices I've had to hear all my life.

See, I live in the Deep South of the USA where all Mexicans are illegal, all black men have 15 kids by 5 different women, and all Arabs are terrorists. Here most narrow minded ass-holes blame their minimum wage income on the irrefutable fact that non-English speaking illegal Mexicans have stolen all the jobs. While everyone here complain that Mexicans should be wasting their time learning English instead working, the Mexicans are working their asses off, getting shit done, and getting paid.

I guess it's fair that all you C snobs can watch those ignorant non-C speaking savages steal all your jobs too.

   64:  while (*bigot++ = *asshole++); //see, natural isn't it?

 

Stephen M. Redd
Monday, June 02 2008
Filed under: Rants & Stupidity
Tagged as: , ,
4 Comments

» Trackbacks & Pingbacks

    No trackbacks yet.
Trackback link for this post:
http://reddnet.net/trackback.ashx?id=209

» Comments

  1. Garth Roxburgh-Kidd avatar

    You forgot the semicolon.

    Garth Roxburgh-Kidd — June 3, 2008 6:56 PM
  2. Stephen M. Redd avatar

    Thanks for pointing that out... that is sloppy even for a high-level language guy. I'll fix it up along with a little bit of the grammar.

    Stephen M. Redd — June 3, 2008 8:59 PM
  3. Sunny Kalsi avatar

    How are you stealing people's jobs when employers are overlooking you because they want someone with C experience?

    Jokes aside, learn some C. I don't think it's essential for a programmer or anything, I just think it gets a bad rap for being related to C++. C's actually an simple, elegant little language... and... well... you could be mistaken for an anti-C bigot if you _don't_ learn it ;)

    I also think you're underestimating Alastair because you're inflamed by his hangup over C as opposed to realising that his argument was actually well thought out and written. Criticism is a natural part of the scientific process, and you can't diss that. After all, it's not like he's trolling.

    Sunny Kalsi — June 4, 2008 4:40 AM
  4. Stephen M. Redd avatar

    Yeah... the argument about C programmers loosing jobs is just as silly as the ones bigoted racists here in the south make. No one is loosing jobs because of the mexicans either... but the perception is the same.

    That said though, a lot of this "must know C" attitude does work against employers that hire that way. Two medium sized companies I worked for in the past had that kind of hiring prejudice and neither is doing well.

    One was bought out by a competitor that did most of their work with junior developers in VB. They saved the heavy Comp-Sci (C guys) for just the senior staff. They had been able to grow to twice the size of the snob company because they didn't have problems finding "good" programmers and had a more diverse programmer base (mixed skills in more areas).

    The other is still here, but finding it harder to employ people and harder to compete with other companies that are mostly staffed by Java and .NET developers who have never done anything in any language that didn't have a virtual machine.

    I have no problem with C programmers. They are usually amazingly smart and knowledgabe programmers and their deep understanding of low level concepts IS (usually) a great asset to a programming team.

    I just disagree that it is "essential" that every member of the team have a low-level background. Some of the best talent on my team comes from programmers with DBA and Server/Network backgrounds instead.

    I am certainly NOT underestimating Alastair. His skills as both a writer and a developer are impressive and his Blog illustrates both skills.

    I also don't disagree with his analysis of Atwood's blog. I'd noticed a lot of the same things myself. His blog lacks a technical programming focus, and he strikes me as more of a "designer" than a developer. I've also found that I profoundly disagree with Atwood's opinions on quite a number of topics.

    But, just because Atwood's blog doesn't include much code doesn't mean much. My own blog doesn't have much code in it either. I choose to talk about code and related stuff on my blog sometimes, but my real code contributions happen elsewhere on the net (open source projects, forums, etc.). If you were to judge my programming skills based on this blog I'm sure you would be unimpressed.

    The only problem I have with the discussion is that it went down the "...doesn't even know C" road again. So it gives me an excuse to pick on him, but he is hardly the only ivory tower programmer that thinks that way.

    Personally, I make it my business to know "about" C programming. I don't actually pretend to "know" C. I've never written a single line of original C code. But I do read "about" C, and I can genrally read C programs and at least follow most of what is going on. I do also understand why while (*s++ = *t++); copies a string. I don't find it "natural" necessarily, but I get the idea. But I've never had any formal C training, no Comp-Sci degree, and *I* can still understand what's going on under the hood. I'm not alone. A lot of us high-level language guys "get it" without having C on our resume. Of course a lot don't, but then again I've met a lot of C programmers that couldn't code their way out of a hole either.

    Anyway... sorry to rant on about this.

    Stephen M. Redd — June 4, 2008 1:07 PM

» Leave a Comment