Skip to main content

r/learnprogramming



Possibilities start with knowing your options. Talk to a prescriber today.

See the following links for: Medication Guide & Safety Information

media poster


Feeling confused in my learning journey
Feeling confused in my learning journey

I've been a software developer for the last 3 years, and during that time I've learned a lot from working in production codebases that are 15+ years old. One of the biggest lessons has been how much your mental model changes when you're working on software that is maintained and used by many people, compared to projects that are only used by yourself.

In my free time, I've spent a lot of time reading books about software architecture and design. What fascinates me most is how people build systems that can be modified and extended by multiple developers over long periods of time while still integrating cleanly into an existing codebase.

This is also where I struggle in my own development. When I build systems, I often look back 3-6 months later and wish I had designed something differently. A particular part of the code might be difficult to change because of how I designed the API, and making improvements now could introduce breaking changes for other developers or tools that depend on it.

What confuses me is that many of the books I've read seem to contradict each other. For example, A Philosophy of Software Design advocates for deep modules and interfaces, while Clean Code emphasizes keeping methods and classes as small as possible. Both books are highly respected, yet they often appear to push developers toward very different design decisions.

I brought this up with a senior developer on my team, and his answer was essentially, "It depends on the situation." When I pushed further, he said that knowing which trade-offs to make is something that largely comes with experience. That's the part I struggle with. I'm the kind of person who likes having concrete principles or patterns to apply when design problems arise. I find it difficult to accept that two experienced developers can look at the same problem, choose different solutions, and both be right because of factors that only become obvious with time and experience.

I think this is also why I'm drawn to frameworks like Rails and Phoenix more than Next.js and much of the modern JavaScript ecosystem. Rails and Phoenix tend to provide strong conventions and well-defined patterns for solving common problems, whereas something like Next.js often presents several officially supported approaches for tasks such as data fetching. While that flexibility is valuable, I sometimes find myself wanting clearer guidance on which approach is preferable and under what circumstances.

Has anyone else gone through this stage in their career? How did you become more comfortable making design decisions when so much of the advice seems contradictory?


I relied on autocomplete and AI suggestions for months and now I struggle to write code from scratch. Anyone else?
I relied on autocomplete and AI suggestions for months and now I struggle to write code from scratch. Anyone else?

I want to be honest about something because I think it might help others in the same situation.

I started learning to code about eight months ago and almost immediately leaned heavily on AI tools and IDE autocomplete to get through exercises and small projects. At the time it felt great because I was shipping working code and feeling productive.

The problem showed up when I tried a simple coding challenge without any assistance. I froze. I knew what I wanted the code to do conceptually, but I could not translate that into actual syntax without prompting something to fill it in for me. The logic felt slippery. I could read code fine, but generating it independently felt like a different skill I had never actually practiced.

I have since started doing timed exercises with autocomplete turned off, and it is genuinely uncomfortable, but I can feel the difference after just a few weeks.

My question for people further along than me: do you think there is a meaningful difference between understanding code and being able to produce it from scratch? And for those who caught themselves in a similar pattern, what actually helped you rebuild that muscle?

Not trying to start a debate about AI tools being good or bad. I use them and will keep using them. I just want to close the gap I noticed in my own learning.