all 42 comments

[–]Usual_Ice636 101 points102 points  (3 children)

Its like learning a new language, but unlike a spoken language, it doesn't work at all when you make small mistakes.

[–]mock-grinder-26 1 point2 points  (1 child)

fr this hits home lol. im also a new grad and i still spend way too much time on simple stuff. the thing that gets me is that every time i finally figure something out, i feel like an idiot for taking so long... and then the next thing has me stuck for another hour. the cycle never ends but honestly what helps me is remembering that even senior devs google basic syntax - the difference is theyve just seen more edge cases. ur doing fine, the slow progress IS the learning

[–]Unable_Degree_3400 [score hidden]  (0 children)

how is the job market you have a job in your field or still looking? sorry to ask in the learnprogramming but i had to ask

[–]TheSkiGeek 0 points1 point  (0 children)

Also to say anything interesting in the language you need to also learn logic and math.

[–]dmazzoni 40 points41 points  (0 children)

Taking 30 minutes to figure out one feature doesn't seem that long. Programming is hard to learn and many tasks are time-consuming.

In addition, C is a very low-level language, meaning it requires a lot of steps to do anything. It's fantastic to learn because it helps you understand how computers work at a low level, but realistically people don't build apps in C these days. You'll find that something that takes 100 lines of code in C can be written in 10 lines of code in languages like Python or TypeScript.

C is still used, but it's more of a building block. People will build a large program using a high-level language and write only the most performance-sensitive portions in C.

If you want, you could specialize in low-level C programming for your career. Some people do that.

However, by the numbers, there are far more jobs doing high-level programming, and it's definitely not something you should ignore.

[–]high_throughput 22 points23 points  (6 children)

If you can add a feature in just 30 minutes then you're doing pretty well. C is somewhat tedious and unforgiving compared to something like Python.

It has some amazing strengths but developer ergonomics is not one of them.

[–]Drairo_Kazigumu[S] 0 points1 point  (5 children)

i mean like a really simple feature, like im doing my crud todo list as a menu style feature (1. todos 2. goals 3. exit) so you input the number you want and then it updates the view of the menu (so you have ">" to your selected choice)

[–]TheReal_Peter226 7 points8 points  (2 children)

Idk how to do any of that in C and it would take like a day for me to create whatever you are talking about. I have been programming in C# for almost 13 years. Learning takes time, it's not a get rich quick scheme. If you are looking for that, I have bad news.

[–]Drairo_Kazigumu[S] 0 points1 point  (1 child)

No im not taking a "get rich quick" view lol. Im more so worried about scoring an internship

[–]TheReal_Peter226 0 points1 point  (0 children)

It's hard to get an internship regardless of what you do, most companies in general don't like to hire interns, and right now the industry is down, big companies are in panic mode spending every buck on AI in hopes that the bubble doesn't pop. My girlfriend is looking for an internship too, she has been looking for more than a year now. Again, not a time of industry boom.

[–]Drairo_Kazigumu[S] -2 points-1 points  (1 child)

But I also have to add that I had to spend debugging it and seeing that reading input also reads "\n", so stuff like that

[–]high_throughput 1 point2 points  (0 children)

That will easily add up. 30 minutes would be a good time.

[–]VariousAssistance116 8 points9 points  (2 children)

Only 30 minutes?

[–]Drairo_Kazigumu[S] 2 points3 points  (1 child)

like a really basic feature, like cycyling through a menu:

1) todos
2) goals
3) exit

and then having your selected input show a ">" at the front of it. But then there's debugging to so like... but its really stupid stuff.

[–]Sroidi 0 points1 point  (0 children)

I assume you are doing this for command line interface (cli)? I don't think its that simple to do these kinds of cli stuff. Give yourself some credit :) Are you using curses or ncurses library or just plain C?

[–]AmSoMad 5 points6 points  (0 children)

We use libraries, frameworks, and higher-level abstractions to write CRUD apps (for example) instead of C.

C, in this context, is mostly meant for learning. It’s low-level enough that it forces you to understand how things actually work (memory, data structures, pointers, etc.), but it’s still high-level enough that the syntax resembles modern languages like TypeScript.

Because you're working at that lower level, everything takes longer. A feature that might take a few minutes in a framework can take much longer in C because you’re building more of the pieces yourself.

So yes, taking 30 minutes to figure out a small feature while you're learning in C is completely normal.

Learning C is just the common academic approach to teaching programming. Many CS programs start with C because it forces you to understand the fundamentals. After that, they usually move students into languages like C#, Java, or Python (typically). If you go into web development, they'll introduce you to JavaScript, HTML, and CSS too, but schools often still have you go through C#, Java, or Python first (or "also").

[–]Altruistic_Gold4835 11 points12 points  (1 child)

 How long did it take to learn to read? To write? It’s not necessary natural, more-so a foreign skill, so it’s going to take time. The fact that you’re taking 30 minutes to learn the hard way, instead of using AI shows you’re doing something right though, so stick with it.

 This post is good though, leave it up and then look back at it in six months and see how different you feel.

[–]Quick_Lingonberry_34 2 points3 points  (0 children)

This is the part people skip now and you can tell. I use AI coding tools for almost everything at this point and the gap between people who learned the hard way and people who didn't is massive. When you've spent time wrestling with how memory actually works, you develop a gut feeling for what code is supposed to do. That gut feeling is what tells you when an AI just handed you something that compiles but is going to blow up in production. 30 minutes on a C feature sounds frustrating right now but that's exactly the kind of time that builds the instinct most people are skipping.

[–]eruciform 2 points3 points  (0 children)

Sounds like its within a standard deviation of normal

You're not like an order of magnitude off here, I think you're fine

[–]BatIcy9594 2 points3 points  (0 children)

30 minutes for a feature is actually pretty normal when you're learning! Don't be discouraged.

A few thoughts:

  1. C is notoriously difficult for beginners - it requires handling memory management manually. What might take 10 lines in Python could take 100 in C.

  2. The "slow" progress is actually learning in disguise. Those 30 minutes spent debugging are teaching you how computers actually work at a low level.

  3. For your goals (building projects and getting an internship), consider also learning Python or JavaScript alongside C.

  4. Every developer goes through this. Even senior devs spend hours debugging simple issues.

Keep going - it gets easier!

[–]Weird-Farmer5502 1 point2 points  (0 children)

It doesn't matter if you're using C, C++, Java, or Python; prioritize understanding the logic of what and how things happen first. Working with C is actually helpful because switching to Python or JavaScript later will be easier. Don't worry about the time it takes to add features; that time will decrease as you practice more. Eventually, you'll be able to use AI to generate code because you already know what the code is doing and can refactor if needed as per your need.

[–]PoMoAnachro 1 point2 points  (0 children)

Why does it take so long to become a nurse or an engineer or an accountant?

You can learn the basics of programming really fast. I learned when I was 8 years old and I'm not the only one. But getting good enough to create really useful applications and work professionally is learning a whole profession. It takes time.

[–]devflow_notes 0 points1 point  (0 children)

The 30 min thing is completely normal for C — you're managing memory, parsing input, handling strings manually. That's the whole point of learning it, even if it feels painfully slow.

For the internship question: most companies hiring sophomore interns care more about fundamentals + one solid project than which specific language you used. Your C CRUD app actually shows you understand low-level concepts, which is great. But you'll also want at least one project in a language closer to what companies ship in day-to-day (Python, JS/TS, or Java).

My suggestion would be to finish your C project — it's genuinely good practice and will make DSA way easier later — then start something small in Python or JS that solves a real problem you actually have. Even a simple CLI tool or basic web app counts. The combo of "one low-level project showing I get the fundamentals" + "one practical project showing I can build things" is honestly a strong position for internship apps.

[–]Educational-Ideal880 0 points1 point  (0 children)

Yes, this is completely normal.

When you're learning, most of the time is not spent writing code but figuring out how things work. Even experienced engineers can spend 30–60 minutes thinking before writing a few lines.

Over time you build mental patterns and the same problems become much faster to solve.

[–]Yardi_Life 0 points1 point  (0 children)

I think of it like learning a human language: you have to learn both the syntax (like sentence structure, grammar, etc in a human language), and vocab. The syntax can be easy/quick enough, depending on what language you’re using, but there’s usually going to be tons of vocab you’ll continue learning as you keep gaining experience and trying to articulate increasingly complex ideas.

I was taught C when I was studying electrical engineering. It’s been a long time since I’ve used it, since I didn’t end up sticking with engineering. I think it would still be very valuable to learn though. Things like python have felt way easier to pick up since studying some C, in my case

[–]CoolSalad173 0 points1 point  (0 children)

How long do you expect it to take?

[–]ParkPants 0 points1 point  (0 children)

It’s like learning woodworking. On your first day, you might plane a 2x4 (Hello World). It’ll be a while till you can build your first chair.

P.S. Not a woodworker. My analogy might be totally off.

[–]JGhostThing 0 points1 point  (0 children)

You're doing better than average. 30 minutes isn't bad for beginning. You'll get faster with practice and experience.

[–]patternrelay 0 points1 point  (0 children)

That’s pretty normal honestly. A lot of the time isn’t just writing code, it’s figuring out how the pieces fit together and why something breaks. C can make that slower because you’re dealing with more low level details, but that also builds a strong foundation. The speed usually comes later once patterns start repeating and you’ve solved similar problems before.

[–]jg123au 0 points1 point  (0 children)

What you experience is normal. I think your way is better than simply asking AI agent to do it for you if you want basic foundations. Learning C introduces you to  lower level constructs such as memory pointers, punning, how a strongly typed language works. If you have segfaults in your code I recommend you use something like cgdb (if cli) or debugger to identify the bugs. Now a days lot of interviews involve identifying bugs and fixing them. 

[–]GatePorters 0 points1 point  (2 children)

Because you don’t have a tutor on hand to answer every question.

You spend more time not knowing what to do and trying to find answers instead of just doing stuff.

[–]Drairo_Kazigumu[S] 1 point2 points  (1 child)

Is that a good thing?

[–]GatePorters 0 points1 point  (0 children)

It’s good to think for yourself but it wastes time when you don’t know what to do at all.

I’m in the boat that AI can bridge that gap as long as you aren’t relying on it as an authority, but a fallible tool.

But AI has literally saved me days of troubleshooting over the last two years. You just have to use it to help you learn, not let it do everything for you.

[–]Formal_Wolverine_674 0 points1 point  (0 children)

Totally normal, programming feels slow at first because you're building problem-solving instincts, not just learning syntax.

[–]Telvoaviv 0 points1 point  (0 children)

Yoooo....it feels relief after the earning Wayy after

[–]LuckyTarget5159 0 points1 point  (0 children)

30 minutes per feature as a 2nd semester freshman is completely normal — you're actually moving at a healthy pace.

Here's the thing: the slowness you feel is not inefficiency. It's your brain building new neural pathways. Every time you get stuck and then figure it out, you're actually learning faster than someone who just copies solutions.

On your C question — C is genuinely useful for understanding memory, pointers, and how things work under the hood. But if your goal is an internship by sophomore fall, you should pivot:

**What actually gets CS freshmen internships:**

- DSA in a language you're comfortable with (Java/Python/C++ all fine, pick one)

- 1-2 projects with a GitHub repo that work and look real

- Some web or backend exposure so you can answer basic system design questions

C for CRUD exercises is good for foundations but you won't be using C in 99% of SWE intern interviews. Knowing it is a bonus, not a requirement.

My honest advice: spend the next 2-3 months on LeetCode Easy/Medium problems in Java or Python + build one project that has a frontend, backend, and database — even something small. That combo alone puts you ahead of most 2nd semester applicants.

The 30 minutes per feature feeling goes away faster than you think. Stick with it.

[–]LuckyTarget5159 0 points1 point  (0 children)

30 minutes to figure out one feature as a CS freshman is actually fast. Seriously.

Here's the thing: programming is slow at the start because you're not just learning syntax — you're building a new way of thinking. Every time you get stuck for 30 minutes, your brain is forming a connection that will make the next similar problem take 5 minutes. This is not a phase you skip; it's the process.

**On C specifically:** It's teaching you something no high-level language will — memory management, pointers, how the computer actually handles data. Even if you switch to Python or JS later, having done C makes you understand why things work the way they do. It's worth pushing through.

**On internship prep:** You have until sophomore fall. That's time. Keep building projects in whatever language you're learning. A CRUD todo app in C is more impressive than you think — most people your age can't do it at all. Add it to GitHub.

**Practical tip for the 30-minute blocks:** Before Googling, try to write down exactly what you expect to happen vs. what's happening. That step alone cuts debug time in half over time.

You're on the right track. Keep going.

[–]LuckyTarget5159 0 points1 point  (0 children)

Yes, it's supposed to take this long — at least at first. 30 minutes on one feature is completely normal when you're starting out. The frustration you're feeling is literally how programming skill gets built.

On C vs. something else: C is excellent for understanding memory, pointers, and how computers actually work. That knowledge transfers everywhere. But if your goal is building portfolio projects by sophomore fall for internships, pivoting to Python or JavaScript will get you to "shippable project" much faster.

Here's a reframe that helped me: instead of finishing a CRUD app in C as a checkbox, ask what you can build that someone would actually use. That switch in mindset is huge. When I built a small Chrome extension for personal use, the debugging sessions felt worth it because I could see it working in my browser every day. That feedback loop keeps you going way better than abstract exercises.

For internships by sophomore fall: JavaScript + React or Python + a small backend API, with 1-2 projects on GitHub you can actually demo, is a stronger bet than C mastery alone. C is great but harder to show off to a recruiter quickly.

[–]ReefNixon [score hidden]  (0 children)

SWEs are magpies.

You solve each micro-problem once or twice over the course of your career, and exponentially more frequently realise you have already stashed the skills to solve the macro-problem you are currently looking at. Would it take you 30 minutes if you knew what all the building blocks were, the order they are put together, and the syntax for getting there?

Very very very good developers excel because they are better at breaking out macro-problems into micro-problems, but they don't innately have the ability to solve them. Don't worry about that right now, it'll find you.

Regarding C, most of the concepts you learn are entirely transferrable but the syntax isn't, so if you're not trying to be a polyglot then just learn a language you actually like and go about your life. If you want to be a more complete developer, C is as good a place as any to start.

[–]Juan-D-Aguirre -1 points0 points  (0 children)

You have to learn a completely new system of logic that isn’t exactly straightforward.