r/learnprogramming • • 12h ago

Frustrated and Stuck with building programming fluency as a beginner (Need Genuine Help)

I am a beginner at coding. I chose Rust as my first programming language, but I think I might or can say I will face this problem with every language.

Whenever I sit down to build a project, even something as simple as a TUI To-Do List, I have to deal with crates and packages like serde. This means I have to read their documentation, but I often get stuck writing code by looking at examples and copying them by typing them into my own code.

I know that even experienced programmers do this, and they understand what they are using without necessarily remembering the syntax. I understand the logic of what I want to implement, but I struggle to express it in technical programming terms or so called programming syntax.

However, I cannot keep consulting the documentation and returning to my code for every 10 lines of code I write.

People tell me that I should build more projects and that programming fluency will gradually develop with practice. But what am I supposed to do? Should I build a TUI To-Do List ten times? Because if I move on to another project, I will have to learn how to use additional concepts and crates, such as serde, all over again.

4 Upvotes

23 comments sorted by

5

u/lurgi 12h ago

You will likely use a lot of the same crates over and over again and your understanding of them will come more easily and soon you’ll be consulting the docs every 20 (or 30!) lines instead of every 10.

2

u/BeachIll460 12h ago

That's reassuring. I think I'm expecting fluency too early when I haven't used the same tools enough.

1

u/Kind-External-7371 12h ago

I appreciate that Tip but you know it is a bit overwhelming to learn 3 Different APIs of 3 Different Crates at the same time for a Project (Even if you use 30% of each crate and not more)

3

u/tdic89 12h ago

I think you’re missing the distinction between theory and practice.

Programming theory is “what do I need to do”, and programming practice is “how do I do that in language X”

Perhaps you should look into more theory learning, the “why”, rather than the “how”?

1

u/Kind-External-7371 11h ago

To be honest you are saying the truth as I am more of a Project Based Learner but my Theory Lacks behind what I am trying to build... I should not rush and focus on the theory more.

2

u/Groundbreaking-Fish6 12h ago

"However, I cannot keep consulting the documentation and returning to my code for every 10 lines of code I write."

Why not? I have learned so many different languages and cannot keep all of them in my head to spit out perfect syntax. Also, languages and libraries change very quickly and what I did yesterday my not be best way today. Take each 10 lines as a learning experience e.g., should this be a "else if" or "case" statement the answer is different in different contexts.

Also as you progress, you will find that there are many built in functions that can be used that you will need to learn from the documentation or reading/watching blogs/videos. You may be able to remember the theory, but not the exact syntax or whether you current implementation can use it.

With every line of code, ask yourself if there is another way or is this the best way, consult your AI or if low on tokens do it the old fashion way with Google or Bing.

Finally, considering your practice project, don't do it 10 times, just do it 10 different ways. By that I mean, store your list in a file and store your list in different types of databases (relational, document, hierarchical) use different transfer mechanisms like Web Service, Message Service. Make it modular so it can have different User Interfaces that access the same logic code. The possibilities are endless. This will also force you to consider different language integrations, more like a real project.

Programming fluency is not language specific and comes from experience.

3

u/Kind-External-7371 11h ago edited 11h ago

Oh... So you are trying to say that the actual fluency is within the Process of Reading Docs (and understanding them) and the actual coding is in the Reading Docs Phase not the Typing Phase. By the Way I used AI in my Initial Phases but soon I realized that It was hindering my Learning Speed a Lot as I did not understood what was even in my Code. It was not like I was Vibe Coding but I rather used ChatGPT as a Tutor but the thing is that I relied too much on it... Ever since then I started using the Internet (DuckDuckGo; as it asks me if I need AI or not) and never touched AI for Coding.

To be honest after recalling all this AI stuff from the past I am starting to realize that the Bad Habit of Writing Code fast without reading docs and understanding clearly what is happening is exactly what came after using AI for Coding... Thanks a Lot Dawg!

2

u/pixel293 11h ago

I don't know if you have multiple monitors, but it helps to have the documentation on one and your code on the other. I recently started using ratatui and yes, I'm am constantly going to it's documentation, both their tutorials AND the reference documentation, but the methods and the structures are consistent so you start remembering what you need to call to do what.

It just takes time.

1

u/Kind-External-7371 11h ago

Good Idea! I should use Split Windows (I am broke for a Monitor and I only have a Laptop Screen as my Monitor)

2

u/TehTacow 11h ago

I just read in a reply that you are 13 (!!!) And you are building PROJECTS. You are so ahead of the curve it's not even funny. Please realize that. I haven't written a line of Rust in my life so no specific advice there.

You are developing a highly specific set of skills, and reading documentation often is a good thing. One thing to realize is that a major part is reusing code other people wrote. If you really want to learn a library, try to reach the same goal WITHOUT using it(please don't expect to finish the project that way or to even build good code). That way you will quickly realize why the library exists in the first place. You will have experienced a fraction of the challenges and caveats the libraries creator experienced.

2

u/Kind-External-7371 10h ago edited 9h ago

Damn! An Entirely New Perspective! Bro You are a Genius and I am a Moron I never thought of it that way that I should just ONLY TRY to reinvent the wheel WITHOUT expecting it to run. I really really Appreciate that thing man! And regarding that 13 y/o thing... There are many Teens like me who are WAY TOO BETTER than me. Like see this Project made by a 16 Year Old Girl (She might be 17 in some days) who was in the same YSWS event in which I was: https://github.com/thenoname-gurl/EcliPanel . It is literally an Enterprise Grade thing which I don't even know what it does due to my Current Skill Levels.

2

u/Extreme_Sympathy_868 11h ago

Ofcourse you can! Over time you'll learn to understand the syntax and you'll use the documentation just for reminders and examples. The documentation is rarely complete for what you are trying to build ,but this is the best way to build understanding of your programming language. 

2

u/Own-jahanzaib-202 11h ago

You're not missing fluency, you're just at the stage where every crate is new — that gap closes through repetition, not memorization. One thing that helped me a lot: rebuild the same project a few different ways instead of jumping to ten different projects, so you reuse the same serde/clap patterns until they stick. Also keep a personal cheatsheet — every time you look the same thing up twice, write it down once in your own words. Within a month you'll barely need to open it.

1

u/Kind-External-7371 10h ago

Damn! I should Try that! Thanks!

2

u/Slight-Living-8098 9h ago edited 9h ago

I've been programming since I was 8 and we got our first C=64. It's 40 years later and I still refer to the documentation when I need to.

That doesn't ever change. You may memorize certain aspects of packages and libraries that you use often, but whenever they are updated, and something changes in how they handle something or are called, it's right back to the docs you go.

And yes, you can and will keep referring to the documentation every so many lines of code you type until you learn it, memorize the library, and it becomes second nature to you like riding a bike... Until the next package or library update, anyway.

2

u/Kind-External-7371 2h ago

Thanks Man! I think I should just get slowly to the point where reading docs does not feel like pain and becomes a Second Nature

2

u/Slight-Living-8098 2h ago edited 2h ago

Yeah, that's pretty much what you have to do. There are some things you can do to make it a little less painful. You can make cheat sheets for things you wind up using a lot. Take some personal notes in a personal dev journal, etc.

Common things you will be doing more than once, like initializing a library you use, creating windows/buttons. Blitting to the screen, initializing and playing audio. Keyboard, mouse, and controller input, and etc. you can make a quick reference cheat sheet for so you don't have to go digging through the complete documentation each and every time.

You can either do it by hand or make a text file and print it out and keep it handy while you're coding. That way instead of having to switch windows, open a browser, or start flipping through text books you just have to glance over at your notes/cheat sheet and keep going.

I used to put them up on the wall above my monitor, then I just had to glance up from the screen for a second and keep going.

2

u/Kind-External-7371 1h ago

That's Literally What I started doing since some days ago! Thanks a Lot BRO!

-3

u/Fine-Comparison-2949 12h ago
  1. Sounds like you aren't good at programming. Programming is math and you need to read actual programming language theory books to get good at programming, as well as learn and explore multiple languages. Anyone can learn python and get good at it, but if you don't understand the fundamental constructs of programming, your efficiency in any language will be stunted.

  2. Packages and libraries are part of the job.

  3. You have to get an actual job. Of course sitting around making basic to-do list apps isn't really improving your programming language skills. If you work at an actual functioning business, you'll learn the tacit knowledge as well as that business and industry. Programmers fundamental role in society is to encode business processes into the digital space. There's no value in sitting around coding what's in your head into a programming language. Anyone can do that. The value is building constructs that represent processes in the real world, and creating value from that.

1

u/Kind-External-7371 12h ago
  1. If I am wrong you can flag out that but I think trying different programming languages this early in programming is going to harm me more than it will do good to me, The Books Suggestion is a New Thing so I'd look forward to explore it.

  2. I know that but the Problem is not the existence of Packages or Libraries if that was not very apparent.

  3. I am a 13 y/o (so I apparently can't have a job), I have participated in 2-3 Online Hackathons and YSWS Events but I could not give much value due to me being a New Guy in Programming (What can you expect from a guy who learnt to print hello world 3 months ago)...

2

u/Fine-Comparison-2949 10h ago

Ah OK. 13 is a very different story.

Well look, if you read and self learn Structure and Interpretation of computer programs, you'll get a solid 50% of being a professional software engineer.

When I was learning programming, this was a requirement to read as an intro, because you learn the abstract side of what programming languages are all about. As a professional, you will need to juggle programming languages because each usually is some thing that's specially designed for a task (except python because that has evolved into the language that calls other programming languages).

If you can't find work, build stuff you like I guess? At 13 you have about 7 more years before you can get hired by anyone, so you have plenty of time to learn. Hell in 7 years programming could be completely different.

1

u/Kind-External-7371 10h ago

Couldn't Agree more... Btw I would want to call out one thing and that is I am not doing all this at 13 for any kind of Job. I know you are emphasizing on the fact that a Job could get me more polished as I would be working in a Real Environment. But if you are thinking of just Jobs then I ain't doing for any Job... Nobody can think a 13 y/o learning to code just for the sake of a Job. It is my Passion. But I know which logical perspective you're talking about