When will I actually get good at programming
Posted by MilkyMadness6@reddit | learnprogramming | View on Reddit | 18 comments
I'm in my second year of software engineering and I'm a bit dissapointed with my progress. I can't understand more complicated code and my syntax knowledge is very limited. So far I've only been taught java, and we've just gotten started with C and C++. I feel like I should be able to do a lot more at this stage.
None of my courses have taught me how to do large scale projects either, so far we've only written short snippet solutions for assignments. I don't think it's a me issue either, when it comes to tests/exams I tend to perform way better than most people I know, im not a top 1% student by any means, but I do know I'm nowhere bad. I have attempted to learn on my own free time, but with the amount of assignments I receive every week I rarely have time to learn on my own.
randomreddituser7474@reddit
wow I’ve never felt more connected to a post in my life, are you me
Spirited_Score_3201@reddit
Don't worry! Keep learning. It's like complicated math formulae. You have to "divide and conquer". But you have to remember one of the basic programming principles - KISS - keep it simple, stupid. Experienced programmers, by rule, do not write complicated code.
born_zynner@reddit
2-3 years after you graduate is usually when you'll start being useful lmao
PerpetuallySticky@reddit
I’d say around 3-4 years is when things start to “click”. Including at that point you have been around and gotten comfortable in a large codebase.
This field is basically all repetition/experience. It’s obviously complex and there’s a LOT to learn. Unless you’re a savant who can just pick it up off the cuff, it’s going to take you a bit until all the pieces start falling into place.
At 2 years I and most of my peers had no idea what we were doing. Joked that we were children being given buttons to push.
At around 5 years most/all of us are confident in our abilities and feel like “real” employees (we also had mandatory full-time CO-OPs during certain semesters of college, so 3 years to have things click might be ambitious if you have no real experience)
FeistyFan5173@reddit
Takes way longer than people expect - I'm dealing with similar stuff in a totally different field where muscle memory and pattern recognition are everything.
heisthedarchness@reddit
I've been doing this for forty years.
I'm sure I'll get good at it at some point. Definitely.
RobertDeveloper@reddit
It just has to click in your head. I started coding at age 8 and it just said click. There are several paradigmas like procedural programming, object oriented, functional and relational, maybe a language like scala or prolog is more your thing.
Dahir_16@reddit
I would say don’t wait, 3 years passed as i was waiting, start trying to build and understanding small projects and rebuilding them from memory and you will form intuition when you build enough. Make it intentional and start from small as making displaying output text with button click and understand how to do it and how it works.
No_Lawyer1947@reddit
It's an experience scale, stop thinking time scale. The truth is, you can go 10 years learning and know jack shit. List the things you think would be cool to build, not cause it'll get you a job, not cause you think it looks good on resume, things YOU WANT TO MAKE. That right there is how you get any better. You want to make a mod for a game you play, go ahead. You want to make a game you've been dreaming about? Do it. Do you want to make some app idea cause you wondered how hard it is to reinvent the wheel? Go for it. Stop doing your courses, exams, tests, school assuming it will teach you. If you don't learn on your own cause you won't make the time, you shouldn't bother even learning CS at school sorry...
Btw I wrote this with tough love man, if you won't be driven on your own time, you will never be driven at all for programming. I never went to school for it, but I know others around me have, and I truly believe anybody who got any good or decent just spent time learning on their own BECAUSE school will not do it for you. It's just too many things that can be relevant/irrelevant, it depends on the problems you solve, but if you're going every day to just do your assignments you're boiling the ocean. Good luck bro
Aglet_Green@reddit
Once you're employed in 2028 or 2029 or so, you'll see a quantum difference in skill simply from using it 8 hours a day 5 days a week. You just can't duplicate that level of time to doing one thing while in college.
Also, your premise is wrong: if you were capable of doing more at this stage, employers would be content with an associates instead of a bachelors. You first need to learn what you need to learn.
cbdeane@reddit
That's the neat part! You don't!
Software engineering is primarily figuring out how to do things that you don't know how to do. You'll feel a lot more confident if you just put your head down and break through the wall of doing larger projects on your own.
FlakeOrg@reddit
Getting good at programming is a pretty hard thing to do. I have been coding since 9 and even I can't understand C#.
BrannyBee@reddit
Syntax knowledge isnt even something that experienced devs think about when writing code really at all. If you struggle with remembering keywords and typing, thats not a programming issue that is 100% about not having done enough repetitions.
Imagine i had to take in a bunch of temperature values in Fahrenheit and needed to convert them to Celsius so the numbers actually mean something.
After having literally drawn pictures in a notebook or thinking about the steps of that problem I have a clear picture of what needs to happen. No code, no fancy editor or shortcuts, literally just a mental model of the problem. I have a bunch of values that are the same type of "thing". Without even thinking I know I dont need a string or a boolean, itd be stupid to store a list of number values in those, its automatic in a more experienced programmers mind because we've done similar problems a million times. List of stuff => i need some form of collection. Maybe I dont know if I need a set or an array or a dictionary at first, but again dont code, think. Its just a list of temperature values. If they were assigned a location or time, then sure Id consider a dictionary, but they arent. I know from just being alive that you can experience 10 degree weather on Monday, and on Tuesday you can experience 10 degree weather again. So values can repeat, sets are out. So ill start with an array of floats.
Still no coding. You dont get faster at coding by coding, good programmers think. Coding is the easy part that we've done a million times and isnt impressive, thinking is the hard part. So i would think about what I need to do to that array to get the result. I cant just apply some logic to the array, i need a list of each of those F temps to be converted to C. I thought of the word "each" and Im already thinking of iteration, so a loop is obviously going to be needed.
The task is to convert to Celsius, so if I need to do that to each of those numbers, and i know a loop allows me to do things to individual values in an array, I know that whatever math is needed is gonna go inside the loop. A beginner may know the formula off the top of their head, but not know where in the code to put it, or mess up their indentation and not realize they arent applying the formula to each value, but without even touching a keyboard a good programmer knows they need a loop AND what logic needs to go inside that loop, preventing that bug from even happening. Then Id google "temp conversion formula" cause I know its a solved problem, and I have the logic omit need to use on those loops.
Only after all that would I even put my hands on the keyboard. Then when i do i have a mental model, and I know where Im going and start typing and converting that model and drawings I made into code. But even then I dont think about keywords when I wanna store some data and iterate through it, I think "ok I got a list of stuff I gotta store that here" and my hands type out an array, and i think "ok I need to iterate through that array" and a loop appears on my screen.
Maybe I frick up and used the keywords from another language, the editor underlines it and yells at me. 9 times out of 10 I realize what I did and remember the right keyword, if not I quickly jump over to the docs.
The simple temperature conversion is simple yeah, but you can see how that gets harder and harder with more difficult problems to solve abd many more variables. But right now, you arent even capable of devoting your attention to the mental model and logic, even if you think you can. You're thinking about what keyword Java uses for a loop when you need a loop. Then you're thinking of which statement is goes first inside that function when you've found it. Then you're thinking of what number to start that iterator (is int i = 0 right or did I see the teacher use int i = 1?).
If you understand the "concepts" of basic CS concepts, great, good for you. You did the hard part. But you cant think about the code if you're wasting mental energy on typing and keywords. You cant think your way through that no matter how smart you are, to make that automatic, you need to type a million for loops, then itll be automatic. Until you go proctive, idiots like me will always be better programmers. I may be dumb, but I can code, and I have twice as much time to think about how to logically solve a problem than you do because you are splitting your attention between the easy stuff like writing code, and the hard part which is programming programming
Coding is easy, but takes practice. You need to build stuff and write each keyword a billion times. Programming and solving problems is just thinking through problems, and you cant do that while trying ti remember the difference between an array and a set or how to define a variable.
Tldr; you need to code if you want to get better at coding.
Infinite-Land-232@reddit
Those who do not doubt themselves are generally clueless in this business. You will never get good, you will get better and better.
boonukus@reddit
I have learned most from technical books and recently using claude to expand my horizon for things i did not even know i needed to know.
You should make your own project that is a CRUD project. Create Retrieve Update and Delete. That teaches you one aspect. Creating a web ui interface teaches you something else. Learning git teaches you another thing. After a while you have a bunch of separate things you have learned that can be combined into a single application. That is how to become better. Overtime you will amass knowledge that fits together and forms a big picture.
Second year of school you are dedicated to learning snippets but if you dont like a language like Java i dont blame you most of the world agrees.
Dont learn code learn protocols, learn different language paradigms. Stick with the same language for a year. And remember the only way to get better at coding is to fall straight on your face and persist. Try it out open up a file and try to write the syntax for a function definition you can even make it up but at least you know that you did it from memory.
AssertRage@reddit
It takes time bro, i have over 10 years of experience and i still suffer from impostor syndrome a lot
Pale_Height_1251@reddit
"Good" is relative.
Most people get employable in maybe 3 years. Most people get to senior level in maybe 7 years. Maybe you're a good senior in 10.
I know I started learning in the 1980s and am still improving today. I am a better developer now than I was a year ago.
dkopgerpgdolfg@reddit
There are no courses on that. Those who can do it learned it by having lots of experience, among other things.
Don't worry. You're still very new.