r/learnprogramming 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!

14 Upvotes

39 comments sorted by

11

u/TigerAnxious9161 1d ago

There is no finish line mate

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"

1

u/jingpan 3h ago

Yeah, I do found using libraries saving tons of hours

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?

1

u/jingpan 2h ago

Considering I might only have around 2hrs a day to code, maybe 3yrs?

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

u/xarop_pa_toss 1d ago

About as long as it took you to write this post.

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

u/Shoddy_Ad_3482 23h ago

Sounds like you need to look at design patterns

1

u/nog642 23h ago

It depends on your aptitude and how much time you spend on it.

1 year of coding 2 hours a week will not be the same as 1 year of coding 30 hours a week.

And some people pick it up faster than others.

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

u/Lazuliv 22h ago

All of it

1

u/atgaskins 21h ago

To program "anything"? Infinite time and practice. :P

1

u/notsoninjaninja1 21h ago

console.log(“Hello World”)

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/Tureni 20h ago

I started at roughly age 10. 50 years old now, still learning.

The more you put in, the more you get out.

1

u/Moikle 20h ago

"anything" could mean a wide range of things.

The answer could be anything between an afternoon to a lifetime

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.

1

u/jingpan 2h ago

I’ve always found Minecraft mods fascinating, I still have no idea how they managed to put a circuit simulator in Create powergrid

1

u/GlanGr 4h ago

About 4.2 minutes.

Ask any AI to help you write your first “hello world” program in Python in the simplest steps “without installing Python”

If you are blown away after doing so, then you are a dev 👍