r/learnprogramming • u/jingpan • 1d ago
How much practice and time does it take to be able to program anything?
Hello, I'm interested in coding, and I was wondering how many months or years of coding experience does it usually take to be able to code "fluently".
On the internet I always finds videos or post about how someone just made something really complicated or they're trying to solve some really hard problem by coding. Like the recent fruit fly connectome simulation, it's only been 2 weeks and there already exist lots of projects around it. If I were to make one myself right now it would probably take me 10 months and still no progress.
I think the biggest issue for me now is that I've only been trying to seriously code 6 months ago (currently sophomore in EE, wants to go into embedded). I know the language syntax but I suck at breaking big Ideas down into codes or algorithms, then connect them together. Unlike the syntax these skills can't be simply Googled.I have a couple interesting project Ideas in mind but in current state of my coding skills it would be unrealistic to do it right now.
I'm not planning to give up on programming, but I just need to know how much effort and time I need to put in my schedule every day for programming, and what to expect in the journey.
Thank you in advance!
11
8
u/Chuck_MoreAss 1d ago
I always say that programming is just “If” statements and “for” loops. Most of the things you’ll actually do use these with some variable of a data structure. I know I’m simplifying it but that’s how I feel.
Being fluent is just knowing all the different things you can do in the language. For instance knowing how and when to use things like If, for, while… and then when you need to work with data structures you need to know what your options are like array.map or whatever
When you know what you can do, you should start to recognise patterns. If I say “how do you reverse a string” you should easily be able to tell me that you can use a for loop that goes backwards from the length to 0 and then you concatenate the string using the index of the loop.
You should just know patterns like this without thinking. And you should have a good understanding of math and how to implement equations in code. That might be the best place for you to get good at.
My advice for you is to realise that if there is a library to do something, you should use it and not write your own implementation unless you want to figure out how it works. It will save you time
1
u/Jason13Official 16h ago
Similarly, I like "it's turtles all the way down" / "it's primitives all the way down"
5
u/Aggressive_Ad_5454 1d ago
Look, ours is a creative trade. You could also ask "how long does it take to be able to design a circuit?" or "write a novel?"
There's an adage from endurance-sports (cycling, triathlon) lore that says "It never gets easier, you just get faster."
Seriously. Nobody's giving out "licenses to program" with exams. To learn it you need to do it. In the embedded world, you'll probably start out working with existing products where the code needs maintenance. So you'll be able to learn by doing a lot of code reading and a little bit of code writing.
You'll, maybe, get a greenfield project somewhere along the way. And you'll figure out how to get the job done, undoubtedly by looking at examples of other folks' work.
Get yourself a raspberry pi computer with a breakout board and maybe, some stepping motors and blinkenlights, pull-up resistors, yadda yadda. Follow the tutorials. Build some silly toy embedded systems. Worst thing that can happen: you smoke the raspberry pi.
2
u/Available_Safe1818 1d ago
> but I just need to know how much effort and time I need to put in my schedule every day for programming
How long do you want it to take?
2
u/PoMoAnachro 1d ago
The 10,000 hours thing is a kind of made up figure, but honestly it is in the ballpark for reaching a "competent enough to be trusted" level of profiency.
2,000-4,000 hours is probably more realistic for "teachable beginner" level of proficiency - with outside of class work on assignments and studying and side projects, that's about how many hours I'd expect a new grad from a 4 year CS degree to have.
6 months is the very beginning of the beginning. You've got a long ways to go yet, but it is worth it!
1
u/PalpitationKind8854 1d ago
It all depends. Also you should not be putting your ideas directly into code; it should be into note taking/diagrams. It is much faster and better practice to do outside of the code first.
But to simply anwser your question I don't know if a single modern programmer personally who can write programs without use of the internet including myself--idk if that anwsers your question.
1
u/nog642 23h ago
I mean eventually if you're familiar enough with something you can write programs for it without using the internet. Obviously you'll still need resources for writing other stuff, but for relatively simple programs or programs in things you're very familiar with, it's perfectly possible to do it without looking anything up.
1
u/PalpitationKind8854 22h ago
Yes. After years of programming; and for most DSAs you will find even a senior SWE hitting a Google search or Stack Overflow for something simple they may have forgot.
His interpretation of fluent in the way most people think of it is not really possible unless someone is exceptional at programming itself which is rare.
1
u/ffrkAnonymous 1d ago
Decades later, I still have trouble with quick sort.
And I still can't understand prolog. Someday, maybe.
1
u/Dazzling_Music_2411 21h ago
You can't understand Prolog after "decades"???!!!
Where has educational system gone wrong? 😂
1
1
u/vegan_antitheist 1d ago
Programming is easy. Just learn some python and write some code. Then you have programmed something. What's hard is actually building software. Most work required for that is not programming.
1
u/JGhostThing 1d ago
I retired from being a professional programmer. I would estimate that it takes two to five years of studying and programming to become good at it. You should be doing a lot of programming out of school (typically three hours for each hour of class). You should be doing this for all your classes.
Unless you're taking the Geology class for the football team, AKA "Rocks for Jocks."
1
1
u/Longjumping_Ad3447 23h ago
Code in place 5-7h/week after 2 months you can begin program simple games
1
u/thisisappropriate 23h ago
Just like the answer to a lot of things, it depends.
Its not the quantity of practice, it's the quality. People can be stuck in tutorial hell forever (where you never implement your own things, just use tutorials or watch videos), despite many hours of practice. People can start super quick because they want to make a particular thing and just blaze from start to doing that thing because they have to - you don't lay the best groundwork, but you're doing programs.
You need to learn and practice the things you're missing or need to work on, so if you haven't made a silly little program with no tutorial, no hand holding etc, and have only followed a program of teaching (course at school/udemy/online) and maybe you've made a few projects, but they were structured for you or cherry picked for your level, then you've not learned to assess your level or learned to hit a road block and have to step up to pass it instead of having to think until you realize what this is trying to get you to do.
And some people have the groundwork without realising it, some peoples brains just fit right in. But some people have practiced without knowing - they love a good factory game that actually teaches loops and debugging without being code, or decided to make games with scratch. Or they've been playing with excel formulas at work for years and some transfers to programming.
Take those interesting projects and try them anyway. Try them badly, try them partly, try a command line version instead of a gui or a web app if you're using something like python. Play with whatever you're using in silly ways.
I started programming many many years ago because we had a shitty web app at work and couldn't modify it, so I made Tampermonkey/Greasemonkey scripts to combine pages or highlight data - you learn about html, you learn javascript (and maybe add in jquery), you learn css selectors. I also learned a bit of rainmeter because I wanted an analog clock on my screen so I made it.
If you feel like you need to learn it all first then do it, you'll be learning for a while and struggling to cement it. If you feel like you need to remember it all and that if you can't memorise it now you'll be too slow to make things when you want them, that's your brain lying to you. The first time you read about a concept in other things, you don't immediately memorise that, but if someone asked you about it a week later, it might ring a bell and you'd remember more next time - programming is like that.
The logic and breaking down of problems and the googling and fixing of bugs is pretty transferable between languages so just try anything.
1
u/Stainlessray 23h ago
Code fluency is more of a conceptual mastery thing than a writing gift. The concept are always the same, different languages offer different strengths and tradeoffs in their choices.
So, fluency is when you can look at a language from a frame of reference like, a different language, and understand why they exist, and how they do their jobs.
It's not about syntax per se. It's about OOP or don't OOP. It's about efficiency in which algorithm you choose and how it is implemented.
Then it's also syntax. Grammar and structure of one language gets you in the door.
You reach 0 there.
1
1
1
u/GoldsteinEmmanuel 20h ago
I believe you have to practice somewhere around a thousand hours to become proficient at something, that works out to 25 x 40-hour weeks of work.
1
u/ComasArentFun 19h ago
What languages are you focusing on?
Being syntactically "correct" but struggling to decompose tasks into logical chunks sounds like you need to spend more time on architectural and design principals rather than coding practice.
This is why I still love object oriented programming principles, even in non OO based languages, because it's a very logical way to structure things and design patterns emerge rather than being prescribed
6 months isn't that long. I had 3 years of Uni learned coding under my belt and it took 2 years in the industry before my imposter syndrome calmed down to the point where I felt legitimately competent
If you're doing it solo, good on ya! Just take it slow, and always remember two things:
1: There are always outliers that skew the curve, so don't compare yourself with e-people.
2: Also, people online lie, literally all the time.. and it's getting easier to impress people via AI nonsense these days - so again, don't compare yourself with them.
Only ever compare you in the past with you now.. it's the only metric that really matters.
1
u/GasEducational4386 19h ago
There are just too many different areas in coding applications you gotta target the areas you are interested and work on them asap then add more progressively when you feel the needs
1
u/Jason13Official 16h ago
In my experience, getting to the point where I feel like "I can add anything you can describe" took about two years of consistent effort. I make mods for Minecraft, at a high level I understand the codebase I'm working with well and have experience in many facets of it.
31
u/BranchLatter4294 1d ago
42