views:

889

answers:

8

I'm starting a job search, ideally ending up at a C shop. So far, I'm coming up empty in my local ads, and am starting to think I need to broaden my search, targeting specific types of businesses.

So, what type of places typically use this language?

+1  A: 

Because the focus of interest has commonly moved to applied and web development where you can't do much with C.

Either extend your search geography to other cities/countries or follow the industry trend and learn something new.

User
I do a lot with C everyday, thank you very much.
Genericrich
If I recall correctly, most if not all of the UCSC Genome Browser software is in C, due to speed requirements.
Alex Reynolds
I also have a friend who's doing it 40 hrs/week. It doesn't mean that the share of C/C++ jobs hasn't dropped significantly in the last decade.
User
Alex -- I think UCSC Genome Browser is in C because Jim Kent is a mad genius, more than any other reason. Same reason Bloglines is in C (Mark Fletcher and Paul Querna). There is no real reason for them not to use something else for the web front end.. but they are cool like that.
SquareCog
I'm not sure why this was voted down so heavily. Its true that there are C jobs out there, but a remarkably large # of jobs have moved in other directions. Spreading out a bit is often necessary if you want the job in the exact tech that you choose. There aren't a ton of C jobs around here, but I know that there are some within a few hundred miles, eg.
jsight
Mastemind's point is valid. It's true that most of the industry is not writing in C any more. Lots of stuff has to be in C, still; but if one has trouble finding a job, branching out into other technologies can't hurt.
SquareCog
I didn't -1, but I think you're mistaking a growth in the total number of programming jobs for a decline in the number of C jobs.
Sarah Mei
I have a firm impression that C/C++ jobs have a decline in absolute numbers. Of course, it can be country/region specific.
User
Sarah Mei
+2  A: 

iPhone development shops online. Try craigslist as well.

Objective-C is a slim superset of C, so your C skills translate nicely.

Good luck!

Genericrich
"C skills translate nicely." Seriously? The vast majority of objective C code that I've seen lives up in the framework using the OO features. It bears only a passing resemblance to C. It's strictly a superset, but if you spend all your time using the new features and none of the old ones, I wouldn't say your skills transfer.
Sean McMillan
+11  A: 

C is typically used for fairly low-level development. You'll see it used in embedded systems, frequently, which is often listed as a computer engineering position (rather than computer science, or software engineering.) C is also used frequently for device drivers and 'generic' low-level code like math utility code for larger projects.

Generally the sorts of jobs that -need- C are taken by developers who've been using it forever, and have likely been in that position a long time.

Just keep looking! C is a rarity in terms of seeing a job just listed as "C Developer" as you've seen - so obviously they'll just be hard to find.

But I'd just wonder why you're exclusively looking for a C job as opposed to a language like C++ or Objective C :)

Edit:
Just a little note also, not to mislead you with the answer; C is still used for a lot of different stuff. Browsers, instant messengers, server daemons, the network code for even some code written on other languages even. The problem is this is just inefficient in terms the amount of time spent doing the work when you easily write it in Python, on .NET, or any number of other technologies. As such, it just isn't common, but the work can exist.

Tony k
+1  A: 

To add on to Anthony's excellent answer, C is still used extensively in the development of operating systems and firmware, so you may want to try looking in that direction as well.

Good luck in your search for a job.

Tian Bo
+1  A: 

Things that must run close to the metal, and be fast. So in addition to what Anthony wrote -- networking protocols, storage device drivers, file systems, the core of operating systems, are still big on C.

SquareCog
+1  A: 

Most C programming jobs are in "embedded systems" ... things like televisions, cars, phones, alarms, clocks, toys. Such applications are often memory-constrained by cost reasons, so higher-level languages (eg, Python) are not an option there.

At a time when C and C++ were the predominant coding environments, it was said that 90% of the C programming jobs were for embedded work. Stuff that isn't advertised as software, and for which there are rarely any famous names or faces associated. This is even more the case today.

digijock
+1  A: 

Linux is completely in C. So any company that contributes to Linux is likely to employ C coders. I worked for an industrial automation company that developed in C. Though most automation shops run PLCs and ladder logic.

stonemetal
+2  A: 

I work primarily as a C (and Perl) developer, because the application is mature, with a fairly long history (i.e. originally developed in the early 90s). The application suite originally was developed for Unix based graphical workstations. My previous job was a similar situation, a mature distributed application that was developed on multiple Unix platforms, originally in the early 1990s, and due to the source code size and maturity, it would be difficult to justify simply throwing that code base away to move to a new development language or even migrating to C++.

I would imagine there are still a number of larger in-house (used for internal purposes, not sold as a product) applications written in C that are still being maintained. Not entirely unlike the massive COBOL applications that large companies (insurance, finance, banking) that are also still being maintained.

For new development in C, others have already mentioned the embedded systems market, where the development is often for software put into ROM or EEPROM / flash memory where it is referred to as firmware, for microcontrollers (Microchip PIC, Atmel AVR, 80C51, 68HC11, etc.), where object code size, RAM usage, and performance matters so the usage of a programming language with fewer high-level or generic abstractions or assumptions is desirable.

One critical thing about good to great C programmers, is that they are expected if not required to know more about data structures and algorithms. Priority Queues, Binary Trees, MergeSort, QuickSort, Knuth-Morris-Pratt, and Karp-Rabin should be at least vaguely familiar. This is because the C language lacks the STL, Boost, CPAN, and other standard libraries available in other languages. This is at least partly because most implementations are type-specific (due to lack of templates or dynamic typing or similar mechanism) to have generic enough routines to be useful in practise.

Knowing more than one programming language is not a bad thing, even if you don't feel comfortable enough to claim to be comptent enough to program in the additional langages professional. A "modern" scripting or "trendy" web development language might be a good match. Perl, Python, and Ruby are good potential candidates.

For programming experience, functional languages like LISP, Scheme, Prolog*, ML, Objective Caml, Haskell, and Scala are good candidates for making you "think different." Admittedly Prolog is actually a declarative logic programming language, but it is still programming experience expanding.

mctylr