Is low level programming still in use and worth learning ?
Posted by Savings_Performer_42@reddit | learnprogramming | View on Reddit | 47 comments
I am a 2nd year student persuing my cs degree and I am really curious about low level programming. Everyone around me is doing python, web dev and Ai Ml but I am really fascinated by c++ and c. I enjoy learning about developing things from scratch like game engines or compilers and interpreters. But many people have told me that it won't be worth it as you will use frame works and already available tools. Shall I continue learning about low level languages and programming or shall I drop it as it may not help me in future to get an decent job as ai is taking over alot of things nowadays?
TomokoNoKokoro@reddit
As someone who is employed specifically because of my ability to write C++ in an embedded environment despite a difficult job market... You’ll be fine. In fact, C++ is used heavily at the intersection of AI and hardware anyway (think robotics, self-driving cars, and the like), so it isn’t a mutually exclusive thing.
You will always be building on top of somebody else’s work or leveraging somebody else’s library or framework, though; that part is true. Reinventing the wheel is a complete waste of time no matter the language, and that’s one reason we use these.
Fuarkistani@reddit
Do you need a deep knowledge of electronics to get into embedded systems?
skul_and_fingerguns@reddit
it depends on the peer pressure; iff it's high pressure, then go for it, otherwise low-level programming is like zen rock balancing, and therefore requires low pressure peace of mind…oh, you're just doing high-level c/c++; nevermind, it's practically python (cython)
Western_Rip9953@reddit
IMO, there is a difference between usage of low level languages falling because they become (1) obsolete vs (2) obscure (hidden beneath the abstraction layers and less mainstream).
Long TL;DR: - Apprenticeship, and early-career learning by doing is invaluable. It will help teach you how to adapt your contribution as you grow. Creativity, debugging, architecting, directing - all will remain critical as AI reshapes coding.
Follow your interests & build first-principles thinking early. Hobbies get harder later, but they often become future differentiators.
for job-readyness/relevance: Balance low- and high-level languages. Once proficient, use AI tools (like Cursor) to speed up development.
Low-level skills still land jobs, and definitely stand out to me when interviewing candidates but for teamwork and versatility in most industry jobs, keep at least one mainstream high-level language in your toolkit. (You need to communicate with your peers beyond LLM-prompting in english :) )
——Extras——- The dev job market is tough, and both realities hold:
AI is disruptive—boosting productivity and lowering entry barriers. Some dev skills will become obsolete (denying this is naive). But low-level languages (including Python) remain crucial for debugging, creativity, and guiding AI.
Mainstream high-level languages are more prone to automation. Low-level skills will likely see AI as a copilot, not a replacement. We’re still a few years away from AI handling deep system tasks unsupervised. By which time you will have enough experience to know how to upskill or adapt.
Personal bias: Coming from a physics background before transitioning to ML, I see parallels—physicists don’t start with simulations; they prove old theories by hand to own the ideas (https://nabeelqu.co/understanding). Later ofc, they use computers—or switch to other careers with better paying jobs.:p
Be a lifelong learner!
BluesFiend@reddit
Even if you never go on to use it, and work in a higher level language. Having lower level knowledge rattling round in your head, will set you apart from those that don't. Having an idea of what goes on under the hood helps make choices at a higher level.
I work in Python these days but did c and assembly in uni. The better understanding of what python is hiding from me has helped numerous times.
ToThePillory@reddit
Kernels, drivers etc. are not discovered, they're written like any other software.
Personally I think it's a good idea for juniors to get into those areas, because the world doesn't need yet another web developer, but it probably *will* need developers who actually understand how computers work.
Systems level programming is probably going like COBOL, it's still in demand, but not many young developers are learning it.
Historical_Cook_1664@reddit
someone's gotta program the AI libraries - not just the scripts and frameworks, but the actual optimized code for GPUs. it's also not just game engines, but anything that needs to be efficient, due to memory constraints, energy spent etc... that being said, may i interest you in Zig ? \^\^
grantrules@reddit
Think about every device that is in your computer, they all require low-level programming. Every IOT device, every robot, every new car on the road.. AI is not writing the code for these things.
Savings_Performer_42@reddit (OP)
Yahh i understand but will these projects like game engines and compilers help me get a job in future ?!
gm310509@reddit
Maybe, probably not. But neither will it if you focused on the high level things either.
Think about it like this - when you hire a tradesman, do you look for an expert in hammering? Or perhaps one who has championships in screw drivering? I think not, you are looking for someone with broader subject oriented skill such as someone who can plaster a wall or someone who can make a cabinet for your kitchen and so on.
Komputa stuff is the same. Nobody needs a C guru or a framework champion. They want someone who can contribute to a project as a team member. If you fit that bill then your technical skills will become relevant.
So, if during your "early years" you develop these "soft skills", the actual things you work on (e.g. a game) will be less relevant than the way you approached problems provided leadership other soft skills. Put simply, if you invented a generic data structure that was able to manage a list of items for a game (let's call this a linked list - just for fun) and that solved a problem of tracking an arbitrary list of things, would it be different if your new potential job also needed that amazing capability to track a list of options for their accounting software? (Hint no, it won't).
fuddlesworth@reddit
You sound like you've never been in the real world and interviewed for real jobs.
My early career was all low level: OS code and virtualization. I got laid off and so had to find a new job. I applied to lots of positions. My experience didn't matter because they wanted someone who was experienced in X language. I didn't have professional experience in X language, so I was rejected.
gm310509@reddit
Yes, your assesnent that i never had an interview in my life in the real world is very insightful (but sadly 100% incorrect) indeed my interview success rate was pretty high.
But i also conducted plenty of interview as part of a team of hirers (me and one other guy focussed on team fit and skill sets). We also had to experience coding gurus who where "legends" but who left nightmares when they got bored and left. Why? Because they weren't team players they didn't care about writing code and documentation in such a way that others could easily pick up. But guess who was usually called in to fix those problems? The guy that never had a real life interview in your assessment.
Don't get me wrong, we never hired any people who did not have some skills in the tools that we used. Of course that was important. Some technologies were more critical than others. For example, the programming languages we used were more important than say a specific SCCS system as we felt if they knew the concept of SCCS but only had experience with say SVN, then we felt they would know how to use git with a few pointers. But being a team player was most important.
And for the interviews that you claim "I never had" there were always tests, but my referrals, body of work and understanding that there was more to a project than knowing a particular tool were what always got me through.
But sure there are lots of different roles and work styles. Equally there are lots of people who struggle to get a job and when asked to post their resume, they always lead with some complicated piece of code that they wrote and totally omit how they did any "soft skills" - if an aplplicant didnt get that concept and their resume came across my desk then I would say one word: "next".
For giggles we had one guy who claimed he knew SQL with intimate and expert knowledge but didn't know what a SELECT statement did. Once he realized that he wasn't going to pull the wool over our eyes, he turned (it was a video interview) and offered evidence of his skill by pointing to the book case behind him and said "but I have lots of books about it - therefor I am an expert". "Next".
fuddlesworth@reddit
Tldr? Too much nonsense to read.
gm310509@reddit
Tldr - I've never been laid off.
All the best to you sir.
fuddlesworth@reddit
That was over a decade ago (hence me saying early career). Just goes to show you also can't read very well.
fuddlesworth@reddit
There's fewer people with low level skills than there are say web development.
FlashyResist5@reddit
There is also less demand. There are many more apps than there are operating systems.
fuddlesworth@reddit
It's pros and cons. Overall fewer jobs, but also fewer applicants. The "full stack" developer position is oversaturated.
ThunderChaser@reddit
And the benefit of fewer applicants means it’s easier to get hired and get paid significantly more.
Pretty much everyone I know who has extremely deep systems programming knowledge never worries about losing their job no matter how bad the market is, because they know if they did lose it they could find a new one in a matter of weeks.
ka0sFtw-@reddit
Kindly answer my fellow redditor's question.
WarBlaster@reddit
Where to get started with this. Asking as someone who has programming knowledge of high level languages
iOSCaleb@reddit
That seems like it's probably true. But when you look around at all the things that run on software, from toasters to cars to routers to TVs and phones, plus tons of back end services built on operating systems and databases and microservices and on and on, it's obvious that there's a large army of people writing software that's more likely to fall under "low level programming" than "web development." Web developers might well be the largest single group but still be dwarfed by the sum of all other groups of people who write "low level" software.
fuddlesworth@reddit
Most of your examples aren't low level. Do you even understand what low level is?
Phones and TVs is mostly android development. A lot of that is still app development, which isn't what I would call low level. Back-end services like microservices aren't low level.
What is low level are drivers, firmware, operating system level code, things like vmware, the databases themselves, etc.
BarcaStranger@reddit
I think he mistaken embedded engineer with regular software engineer
fuddlesworth@reddit
Guess the iOS in his name is a clue to that lol
ThunderChaser@reddit
At least personally, if I was reviewing resumes and saw a student or new grad have something like a basic compiler, I’d instantly take a lot more interest than yet another React todo list app.
Pretty much any time I’ve ever interviewed and mentioned a low level project of mine, the interviewers ears instantly perked up and they were visibly taking much more interest, make of that what you will.
Serious_Divide_8554@reddit
Frameworks will always need to be improved and rebuilt as tech progresses.
grantrules@reddit
...
TomokoNoKokoro@reddit
As someone who is employed specifically because of my ability to write C++ in an embedded environment despite a difficult job market... You'll be fine. In fact, C++ is used heavily at the intersection of AI and hardware anyway (think robotics, self-driving cars, and the like), so it isn't a mutually exclusive thing.
You will always be building on top of somebody else's work or leveraging somebody else's library or framework, though; that part is true. Reinventing the wheel is a complete waste of time no matter the language, and that's one reason we use these.
Zikker@reddit
Low-level programming doesn't have to be relegated to embedded systems only!
Cloud providers employ highly optimized software solutions to control/reduce interference between co-located workloads in their distributed infrastructures. This is useful for some specific use-case, such as cloud-hosted time-critical applications. See AWS DynamoDB, for instance (although their software is closed-source). A more generic example for low-level enthusiasts is WiredTiger, the storage engine of MongoDB.
justUseAnSvm@reddit
Go where your interests take you, and then where the opportunity is.
The people doing the latest trend, they were either doing something else a few years ago, or doing the unpopular thing and working in the subject before it was popular.
Education isn't strictly job training: it's about getting a well rounded set of fundamentals that you can use to go learn anything you have to. Knowing how ASM works? IMO, that's pretty helpful!
Venfoulex@reddit
Been hired to work on a project writing in an HDL. I know it’s different, but it’s fun so far!
kitsnet@reddit
Then you are you like 30 years late to the party.
These days, it's not what commercial programming in C and especially in C++ is about. You might be developing a subsystem from scratch, though, but the chances that it will be a part of millions lines of code project are higher than the chances that the whole code base is just started from scratch.
If you want to be able to write something conceptually new and to have full control over its development, you're better doing it in Python.
EsShayuki@reddit
This just isn't true at all. You're not better off doing it in Python if you want it to actually, you know, be performant, which is a requirement for stuff like game engines.
kitsnet@reddit
If you want it to be competitively performant on modern hardware, it's extremely stupid to try to write it alone from scratch.
STODracula@reddit
Oh the memories of using C and assembly on an embedded device where they didn't even have the power to play a mp3. By the way, C and C++ are not low level languages. Just checked in case there was some demotion I wasn't aware of. 🤣
monster2018@reddit
The terms low or high level are fundamentally relative. Certainly C was created for the explicit purpose of being a high level language. But that was done in the 70s, and these days it’s low level when compared to other languages that are used a lot. Like it was meant to be a high level language you could write OSs in, instead of having to just use assembly or whatever. For that purpose I suppose it’s still a “high level” language (honestly it’s a “middle level” language because it’s kind of the default for that purpose). But when it was created, there were no ultra-high level languages like Python and js for it to be compared to.
EsShayuki@reddit
Obviously. People who say it's not valuable are doing so because they're coping, as they themselves cannot do and they themselves are using frameworks. However, if you can outperform these frameworks and offer something new and unique, then you'll be able to stand out. Everyone can use a framework, few can write a new one.
aCrookedCowboy@reddit
Yes - these are some of the most valuable engineers because it’s hard.
Dean-KS@reddit
Back in the day.... I did a lot of Fortran technical work and would look at the compiler's machine code output as a guide to optimization. I was able to achieve 80x run time reductions. While not programming in assembly code, I was able to achieve a similar result. Reentrant code libraries where a single image of the code was in memory for any number of users. Memory was small at the time, expensive and the hard disks were slow. Reduction of hard disk seeking was also a goal. The department used to bill out machine cycles to other departments. My manager asked me to see if I could fix things. I said yes, and stated "you might not like it". Afterwards he had to abandon selling cycles and had to seek a new budget model. Then he comes to me with a printout saying that the users were not using my applications. I got into an app and entered a control code to make program execution time visible in a corner of the screen. I beat up a lot of data showing him what the app could do. After a while I pointed out how many millseconds were consumed. Never challenged again.
dswpro@reddit
The more you gravitate toward hardware tinkering the lower level of code you typically use. Yes, frameworks come into play even with embedded systems, but when you get into controlling devices, data communications, etc, the bit manipulations matter a whole lot.
Gloomy_Season_8038@reddit
Play with an Arduino for a while and see if low-level is your cup of tea. Look at the Arduino and Raspberry ecosystems
There are so many cool low-level projects !
We need people like you for new ideas
im_in_hiding@reddit
I've built an entire career in C++ dev. You'll be good.
Wingedchestnut@reddit
It is only worth it if the jobs you apply for use low level (embedded, hardware, gamedev...)
Realistically If you are planning on applying for software or data jobs then It's better to prioritize other roadmaps without low level programming.
You can still learn it out of interest or as hobby in your free time.
theReasonablePotato@reddit
Yes, keep going. In a world full of web devs, be different.
Who do you think programmed the web browsers all web devs rely on?
Also yes, low level is extremely relevant - Qualcom, Broadcom, ASML. Just a few massive companies which rely on it.
I am a web dev and scrambling to learn Rust. Because it is multidisciplinary for my needs.
But C and C++ are still extremely relevant.
Organic_Platypus3452@reddit
Same here, you'd be surprised how many webdevs have CS degrees and dont know shit about computers.
wildgurularry@reddit
I've spent my whole career in the low-level world. In some ways having those skills can help set you apart and ensure that you will be employable in the future. Right now I manage a team of graphics developers and compiler developers, and everyone writes in C++ without using any frameworks. We write the frameworks and compilers. At the moment, AI coding has not had much effect on this area, and my prediction is that it is one of the last areas that will be taken over by AI coders.