My career is in full stack web development but I program in C in my master's degree coursework and as a hobby. Every time I have to peel back a decade's worth of CSS to move a button on a webapp I daydream of moving to a career in C. Is the grass actually greener on the other side?
I'm an embedded Linux engineer and I love C and Linux in particular. However, I'm considering dipping my toes in non-embedded stuff for a while, particularly full-stack development and wondering if the grass is greener on the other side from me, haha!
why is that? I am an embedded linux guy but I'm learning full stack all the time, plan to be able to do both, though, it's really hard.
embedded linux pay is fine but not great, not sure how it compares to full stack jobs.
full stack at least is more remote friendly as it does not need deal with hardware hands on which is not remote friendly, and, things made by full stack is potentially more scalable.
I am going sort of the embedded full stack way. Like include microcontrollers and fpgas along with Linux embedded. Most of my hobby projects are heavy on electronics and ham radio. I'd rather spend more time getting a better understanding in RF than getting better at react, typescript etc. Don't get me wrong, if you need a good UI it seems way more versatile to have a web server and a rest api than a qt GUI, but getting better at that just doesn't feel nearly as fulfilling as learning one more corner case in antena design.. to each his own
I'd love to have a career in C too. To me it seems like Linux kernel development is the most obvious C programmer career path. Anyone know of alternatives?
Pretty much any low-level library in userspace as well, though there's a (very slow) move towards more security-focused languages/variants in those areas (probably also true of kernel space). Though C++ creeps in as well (we see a lot of "C with templates" coding).
I started on front end work early in my career (mid nineties), moved to full stack and now write C full time for embedded (STM32) and Linux (RPI & Nvidia). I've essentially been digging deeper and can't seem to put the shovel down.
I don't think I would have appreciated it at different times in my career, but for me, right now, I'm loving every minute of it.
The biggest issue I've faced (beyond the obvious issues of getting anything to work at all), is how to organize the concepts.
The "Data-Oriented Design" folks have had a huge impact on that. Specifically, talks from Andrew Kelley, Mike Acton and the book by R. Fabian.
The second thing is registers. Just toss the HAL mess, pick up the Reference Manual and start poking registers. It's so much more enjoyable (and reliable) for firmware work.
I don't know about job opportunities as I'm running my own hardware business, but if you're feeling pulled in this direction, I highly recommend taking a closer look.
I’m also a “full-stack” web developer and would love to transfer to a career in C (or Rust also?). There’s such a wide variety of interesting problems to be solved over many applications.
I’m not sure how I would begin making a career transfer. Would anyone happen to have any advice / experience on this? I would be really grateful!
The best way to do it (if you can) is to get paid for making the change.
First, study C and/or Rust on your own. Maybe do a personal project or two.
Second, find something at work where Rust or C would bring some benefits. Tell your boss that you think this would work better in a language like Rust or C, and explain why. Volunteer to try to do it. (Note: Appearing too eager at this point might be a mistake.)
Do the second step a few times and you become the Rust/C expert. And you get paid as you do the work that helps you get better!
Also know your boss. I know I cannot suggest such a thing to my boss. Generally, the more "serious" your company is with an established stack the less likely you're going to get a green light to do anything not blessed by management.
If OP plays it wrong they can also look like a tonedeaf dunce. Definitely try to read the room.
Thanks so much for your advice! I agree, having the opportunity to use the language as part of your daily-work helps massively, and is one of the best but most difficult options to realize. I'm aware this will come with some sacrifices (pay reduction, longer hours to catch-up) which I'm willing to make while I become more competent.
As for the second point, that is a great suggestion. However, I'm very limited by my current working environment (regulation, corp. restrictions, etc.) so it becomes a little more difficult.
I believe I will just have to push very hard for option one and continue to study areas of interest in my spare time. I'm reading xv6: a simple, Unix-like teaching operating system which is helping me grasp some practical applications using C.
Im currently working on a large scale commercial app in C. You have to be very careful with memory and safety, but overall it's so much better than writing apps in JavaScript, Java, or any other language I can think of.
Both a specific request here and a general proposal for a norm here on HN: Can you be more numerically explicit when you say "well paid"?
Software development is a very segmented world. In the various social circles I'm connected to, I know devs who were thrilled to finally be making 6 figures 7 years out of college (in line-of-business software in a regional hub) and devs who were disappointed not to have crossed 400 k$/yr in that same time span (at FAANG in the bay area).