5 ms·
What kind of companies hire C developers
I like C and systems programming. How hard would it be to find a job doing this after I graduate next year with my CS degree?
- MichaelCrawford 12y agoYou could do kernel and embedded work. Actually there's quite a lot of that. And device drivers. That would include Linux for desktop (including ChromeOS), as well as mobile (Android), embedded Linux. Buy an embedded target board, then learn ARM and Thumb assembly code. Even if you never actually write any, it's quite helpful to know the instruction set architecture. The Raspberry PI is quite cheap, but I have a gumstix overo fire as it is rather more featureful. Also look at really low-power, cheap targets as the ARM7TDMI. That's not something you'd use for mobile, but is quite common for embedded. Atmel makes oodles of target boards with ARM7. There are also storage chips from Oxford Semiconductor. They sell target boards that come with gcc for ARM. Also look at embedded powerpc. I haven't done it myself, but powerpc is quite a nice architecture. More or less the difference is that powerpc is more powerful than arm, but typically needs to be plugged into the wall rather than run off a rechargeable battery as with ARM. Motorola 68k is still important for embedded. I think that's what the dragonball is, an embedded 680-something. I once bought a Mac SE with a 40 MB scsi drive, that still booted into system 6.5, for nine bucks at a thrift store. I used to dream of the day when I would have enough money for an SE. Whatever box you presently have, install Linux or BSD into a VM. For Linux, read "Understanding the Linux Kernel" by Bovet and Cesati, as well as "Linux Device Drivers" by Corbet, Rubini and Kroah-Hartman. They're both published by O'Reilly. If you're going to do embedded, while not strictly necessary, it is helpful to know how to build your own cross-compiler from source. Doing so will deepen your understanding of the target architecture. It's also a huge PITA. You'll need to know at least one scripting language to get a job. Getting really good at any one of bash, python, perl or will be just fine, in addition to GNU make.
- MichaelCrawford 12y agoLook for "Android Platform Development" jobs. That is, as opposed to "Android App Development". Besides the kernel, there is userspace stuff like the OpenGL ES libraries, audio and video codecs and the Dalvik JVM. You could also work for Apple, doing all that stuff for iOS or Mac OS X. (OS X drivers, and the driver architecture of the kernel are written in a greatly simplified subset of C++, but the rest of the kernel is C, a massive fork of *BSD on top of Mach, but not as a microkernel, rather Mach is statically linked.) To be an Android Platform Developer, you need to work for a handset manufacturer, such as Sony Mobile, or Sharp Labs in Camas, Washington, or someone who makes the components, like Intel, which has development shops all over the world but is headquartered in Hillsboro, Oregon. There are a few Android Platform Development consulting firms, but not many that I know about. Most is done in-house, or like Intel, they provided reference implementations so as to move their chips. Work for anyone who makes the chips that go into mobile, like ARM Holdings - mostly dev tools - or QualComm, mostly they do wireless I/O.
- brongondwana 12y agoAt FastMail we do quite a lot of work on the Cyrus IMAP server. That's all in C! Plenty of C out there still.
- donavanm 12y agoWe have people working on everything from firmware, network devices, kernel and virtualization development, up to applications doing millions of tps and serving billions of bits per second. Sounds like it's too late for internship but we're always hiring. I didn't see contact information in your profile, but get in touch if you're interested. I'll make sure you talk to someone relevant to your interests. edit: as general advice know your basic algorithms and data structures in your choice of language. Focusing on C is fine, but I'd suggest familiarity with something like python to make some of the interview questions faster. Outside of that it would be good to have familiarity with fundamental tasks; word counts, graph traversal, streaming sorts, approximate counts, type conversions, etc. Oh, ask questions. Clarify and verify your tasks and implementation. Bonus points for sketching out some quick tests. Practice on a whiteboard, not your desktop, not paper. A whiteboard.
- MichaelCrawford 12y agoLots of crypto is done in C, with assembly code optimization for common platforms.
- dllthomas 12y agoUnfortunately, most of the things that need to be written in C need to be written by someone deeply experienced with C, which would not likely be an optimal fit for a new grad. Fewer things are being written in C when they don't need to - about which I have mixed feelings but which is also probably the right thing. To get to "deeply experienced with C" in that environment, you're likely talking about personal projects, and/or working on existing code that doesn't really need to be C any longer but is because porting the whole thing is more work than worthwhile.
- deleted 12y ago[deleted]
- davismwfl 12y agoYou can absolutely find a job writing C if you are a decent coder and you desire to work in it. I'd slightly disagree but also agree with @dllthomas too. A lot of times, new grads who want to work in C will get put on maintenance tasks and small modifications until you can prove your abilities not to screw up majorly. C can be a dangerous language in terms of causing system instability through poor resource management, overflows etc. And while smart pointers and other constructs are common now a days, a lot of older C/C++ code didn't utilize (or have them available) so you are having to manage all the details. For a while C/C++ wasn't as popular and you saw people really ragging on C/C++ devs for being ancient etc... Now you have seen a bit of a come back, or maybe just coming out, of a lot more people using C/C++ again. It really is powerful and has its uses and purposes. A number of Game companies use C for console development. Embedded systems of course, as others have said. The Space and defense industries still use C and C++, especially in and around command and control systems. Microsoft still has a lot of code in C/C++. Again, Linux kernel and device drivers as @MichaelCrawford pointed out. We are building some new sensor devices to join the Internet of Things, and we are using C for some of that coding. It isn't quite embedded programming, but C keeps us lean and mean on devices that don't have a ton of resources. And we are not alone in this, we researched and found a lot of companies are doing this.