How do programmer actually learn and utilized their knowledge to solve problems?
Posted by DarkMist77@reddit | learnprogramming | View on Reddit | 15 comments
Hi, I'am a student with almost a year of experience in coding. I learn some python and now majority in c++. Like many other I first thought coding would be easy, but I was very wrong. There are tons of syntax rules and dozens of different libraries and also the c++ documentation that can take while to read and longer time to understand the concept and logic behind certain function and library. Most of the time I wouldn't even brother to read the documentation since it confusing and require quite a time to understand it. I often use LLM to help me process and help me better understand the concept. After doing some easy leetcode questions, I realize the depth of programming is even deeper than I thought.
There is time complexity that I need to consider, syntax error, logic error, and more.
I want to know how you as a professional or someone with experience learn and apply in real world.
Sometimes I think programming isn't for me considering the number of talented people in the world and the ability of AI that is taking over entry level job market.
In the end I just want to see how you learn programming, considering thousands of syntax rules, hundreds and thousands of libraries and also considering time complexity and the forgetting nature of human. (lastly the ever-changing technology with new documentation coding and new syntax rules.)
I know doing project is a great way to learn programming, do you'll search up documentation or use AI to help u understand syntax?
TheCableGui@reddit
By solving others problems. A programmer is a problem solver, you should be building software that people ask for. Grinding leetcode should be a hobby not your goal.
It’s worth noting that I rarely read the docs upfront. Sure When I was first learning I did, but most frameworks are abstractions and it’s a waist of time to understand it in its entirety. Isolate the important components and design a working model.
The quickest path to a working solution should always be your goal. Don’t over engineer your solution, just make it exist. Optimizations will come when you need them. Do not refactor until you have a solution.
Don’t get freaked out because you don’t know everything. You’re going to be learning new things nearly everyday as a programmer. Embrace it.
If you ever get overwhelmed just remember the fundamentals of computer science. computers and even programming languages have rules they must follow. Use the rules to course correct your mistakes.
Astronaut6735@reddit
Getting really good at programming takes years of working at it for hours each day. There is a vast breadth of topics to learn, and each topic can be explored at great depth. It's daunting. But you do it like any other really hard thing: learn, practice, work at it, fail, recover, and keep going.
PoMoAnachro@reddit
I think a big thing is being realistic about how much you can learn and how fast it is to do so. Picking up a little bit of a language to make some toy programs is pretty fast and easy - like learning how to do your own personal taxes or how to perform CPR, it is a skill you can pick up over a weekend frankly. But learning to actually do the work a software developer does is a whole profession - more like learning to be an accountant or a doctor.
I think for the average person, it is reasonable to spend 4000-6000 hours getting up to the level you'd need to be at to be an employable junior level developer. That's a lot of time, and a lot of practice! Probably about the equivalent of a B.Sc. in Comp Sci(including studying, homework, and practice time not just classroom hours!) plus an internship.
So, on one hand, yes there's a ton to learn, but on the other hand no one expects you to learn it quickly or easily. Start small, build up little pieces, and if you ever find yourself writing (or copying) code you don't understand take it back a few stages and return to working on fundamentals. You'll start to figure out what is stuff you must absolutely learn thoroughly, and what stuff you can afford to just look up in the docs when you need it - it is very, very hard to get a sense of this without many many hours of practice.
Oh, and for the first few thousand hours of learning - avoid AI like the plague. It can be a very useful tool for more experienced people, but it tends to stall out beginners' learning bigtime - or, worse, convinces them they're learning very fast when they're learning nothing at all.
aresi-lakidar@reddit
two things:
Firstly, syntax and basic rules of languages is NOT the "hard part", it's just a part that takes a long time to learn. You need to learn it, it's easier to learn by doing (and doing mistakes!) than just reading or asking LLM's over and over. Over time, you'll find that browsing docs will be faster than asking LLM's for this part.
Second, leetcode is like a game with hard bosses. Even the "easy" stuff on there is not really like, the kinda stuff you'll do as a programmer most of the time. Programming is not about solving the hardest questions all the time, it's about.... umm... programming. Like, making software in my case. My struggles in my C++ projects rarely have to do with tricky algorithms or language struggles at all, my struggles are fighting against difficult api:s, difficult real world scenarios, in essence difficult requests from people.
xenomachina@reddit
This is your problem.
Imagine you were trying to learn a foreign language, but instead of reading, writing, speaking, and listening to the language you had your friend, who previously finished a high school level course in the language, translate for you. You'd never learn anything.
I'm not going to tell you to never use LLMs. They do have their uses, but not really as a beginner.
The confusion you feel when reading documentation is the frustration of learning. Learning is frustrating. That's the way our brains work. If you bypass the frustration, you also bypass the learning itself. Read the docs, and read them again. Do experiments. Take notes, even if you don't read them.
TechBriefbyBMe@reddit
Most of coding isn't knowing stuff, it's knowing how to Google the stuff you forgot you knew. The libraries and syntax are just noise. Problem solving is the actual skill.
mxldevs@reddit
Software as a profession (ie: job) is about solving someone else's problem.
And most of the time, they don't really care how efficient it is as long as it works and it saves them time (which is of course money)
You don't need to know hundreds of libraries, just the ones that can solve the problem.
ExtraTNT@reddit
Scientific method: fuck around and find out…
ffrkAnonymous@reddit
I don't. I'm learning lisp which has minimal and consistent syntax, and don't use libraries when learning opting to do stuff manually by myself.
TorresMrpk@reddit
There are lots of high-level programming jobs that are much different than what you learn in college. Most real-world projects consist more of building robust, self-healing business applications and not memorizing algorithms or being able to solve leet code questoins in minutes.
JGhostThing@reddit
To learn, stop using AI! It gives you the answers without the consequences. Learning comes from fixing mistakes: AI means no learning.
speedyrev@reddit
As a beginner, get away from LLMs unless you are using them like a teacher or mentor. Don't allow it to code for you unless you 100% could do it yourself.
Learn to dream and envision the solution, then break it into small pieces that are mini solutions. Thinking about a button is easier than wrapping around the entire needed code base. An LLM could suggest a workflow.
Imakadapost@reddit
Documentation! Ai is a shortcut, a tool for when you know what you're doing and want a lacky to do simple tedious crap you don't feel like doing.
Step one, choose a project, any project is fine, if you get the basics avoid tutorials. Tutorials hand hold you too much and you don't think kinda like the ai stuff.
Step two, decide what you need to code for the project. Do you need user input, is there a UI, can you do everything yourself or is there a library for that? If you don't know what you need do research.
Now some code:
"While incomplete" code...
Ok, not real code but I thought it was funny.
Step three, begin coding. Start small, breaking your sections from step two down. You can always go back and add more to what you've already done. Go step by step and build up your project. If you find something you don't know Google it or read documentation. Plan, code, test, feel stupid, Google, repeat... That's programming.
Eventually, you'll build a surplus of random knowledge about code, libraries and algorithms you've used before. Then, you'll be flying through new projects.
AbbreviationsSalt193@reddit
The best thing to learn something is by using it. The only way you can truly understand something is if you also understand the necessity of that thing to solve some problem, otherwise you won't retain it. The best way to learn programming is by making projects.
grantrules@reddit
Think about learning a language like English. How do you know all the words? How do you know how to put sentences together? How do you know how to write an essay?
You practice. You start small and build your knowledge. As you keep working on things, you remember patterns.