Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Doing embedded development using C. Thoroughly enjoy it.

I was once in a group that was switched away from the work we were doing and repurposed to do web work. It was a bad experience, but not because it was web work. The code base we were given was in terrible shape and we weren't allowed the time to adequately fix issues. Thankfully I no longer work there.





I have worked exclusively on web apps for my entire career (~17 years), but something is pulling me toward C development. I have no idea how to really get started though. I'm doing a little hobby project, but I'm not sure where to channel my study/effort to become good enough for a career change. I picked up the second edition of The C Programming Language by Kernighan/Ritchie, but I assume it's outdated by now. Any advice?

I'm not sure I'm the best person for advice on this matter, or maybe it is great advice for some. I took a leap, believed in myself, and it worked out okay.

I'm self taught when it comes to computers and software development. For years before I landed a paying development job I did a lot of hobby projects. When I decided to take the leap and landed my first development job I took a fairly steep cut in pay. I was single, could afford the cut and was doing something I really wanted to do. It got the experience I needed and after the first year and changing jobs, my pay substantially increased.

I realize not everyone can take the approach I took. It may not even work these days. I did this 38 years ago when the industry was a bit more accepting of developers without a college degree.

Addendum: I also networked. I went to the equivalent of meet ups of the day. Talked with other developers, showed them my work, etc. This is how I found my first job.


What is “C development”?

K&R is a great intro.

If you want a book that digs deeper, try Modern C by Jens Gustedt. It’s update for C23 this year, and it’s CC (free).

If you want to make something like TigerBeetle or Redis, that’s sort of just specialised back-end development.

You can also do embedded in C. And you can make operating systems.

What people often do when they want a career change is: they work on New Thing in their spare time; they find this little niche at work where New Thing could fit; they find that there’s a limit to how much workplace will let them prioritise New Thing; they start applying for jobs where New Thing is a focus point, with a non-empty resume.


Start by writing a few basic hello world style programs while focusing on the "C way of doing things" - most importantly how you manage memory in C. That's probably the biggest pitfall I see people coming from higher level programming trip up on. Study how objects work, different forms of math, etc. And that's all console code btw - don't move onto GUIs until your console knowledge is solid. GUIs are a whole different beast in C/C++ (and are a big reason why frameworks like Electron were built).

LLMs can also help you break into C development by a large degree. But they still get overwhelmed on a sufficiently large C codebase just like any other language. Your mileage may vary there.


Got my start with C via Linux kernel hacking in the 90s. It's practical so that's where I would recommend. (or a BSD kernel which are often better organized).

With ~17 years of experience already, start with the study of the structure of C programs. Recreate some of it manually, build it, and research the things that do not behave as expected.

Bonus of using an open source kernel is they have a lot of eyeballs on them. They will be pretty dialed in versus studying random Github projects that happen to be written in C.

Would recommend avoiding cognitive overload, wait until you get into comfortable flow writing, building, fixing as needed, simple programs before you dive into lower level debugging, trying to grasp assembly structures that a compiler spits out.


Honestly, they shouldn't even need to touch a debugger if they're able to reasonably manage their memory "well enough". Like in general. I'd only touch a debugger myself if I knew I was dealing with a memory problem.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: