What are some pieces of advice for a struggling programming learner?

In summary: Take the time to review what you have learned. Repetition is one of the best ways to learn. Try to use the same examples or exercises over and over again. This will help you internalize the information.4) Don't be afraid to ask for help. There are many resources available to help you learn programming.In summary, people say to do projects to learn, but I don't know how that works. I've tried doing projects but all of them have been bad. I do not think that programming is easy.
  • #1
shivajikobardan
674
54
TL;DR Summary: advices for struggling programming learner

I had access to world's best resources to learn books, tutorials, blogs, youtube, udemy etc. I had access to forums like this to get help and support but still this was tough for me.People say do projects to learn but I really don't know how that works. For eg: This project. I make stupid stuffs like these and can't produce a good output that is playable. It's too hard for me.
These are some of my projects.
https://htmlcssbasicsite999.netlify.app/

https://counterapp999.netlify.app/

https://dicegame999.netlify.app/

https://digitalclock999.netlify.app/

https://portfoliosite999.netlify.app/I did all these projects without looking any tutorials and no wonders, all of them are bad. In 3 months, I am seeing no progress, except few days like:

1) When I carved a site on my own using html,css without looking tutorials.

2) When I carved a site on my own using bootstrap without looking tutorials. But I still don't understand bootstrap as I'm not using bootstrap grids.

My problems:

1) I've not break through'ed in programming. If I can make anything with javascript that's over 500 lines of code, I'd consider that a breakthrough. I'm aware LOC aren't a good metric but please try to understand what I'm trying to say. A big application using programming.

2) Even in css, I failed to make presentable sites. The coding bootcamp I feel is going too fast as well. Same for bootstrap, I made sites but I failed ot create beautiful sites. People recommend me frontendmentor.io but IDK what to do there? It looks sketchy to me. If there is something that can teach me css, I'd be so grateful.

3) After watching tutorials, I can't repeat what they've done in tutorial without watching the tutorial of project even though I understand each and every step they do in project.

4) I still am not fluent in ES6. I can't think in ES6. Arrow functions, map, reduce etc. I Understand them, but using them is different ballgame.

Do you have any advice? Even advice to quit is appreciated. I've full day to learn programming luckily but being dumb(for programming) I am unable to utilize it.
 
Physics news on Phys.org
  • #2
I have been programming for many years and I am still learning new things all of the time. I wouldn't worry about not being able to duplicate every tutorial that you find. It's been my experience that many of them aren't as 'easy' as they claim. If I can't duplicate their results in a reasonable amount of time using Google and Stackoverflow, I move on and try to find better examples. It can be frustrating at times but I have found that the best way to succeed is to break problems into smaller pieces and make sure that those pieces are thoroughly tested and working well before moving on.

For example, when I wanted to figure out something with Bootstrap, I didn't expect to master it but I did go looking for examples and focused on understanding pieces of it well. The best example that I found of using Bootstrap, JQuery, CSS and FontAwesome was this free AdminLTE Dashboard. I have used that dashbord as a starting point for everything from basic html prototypes to production servers and I don't think that I've even looked at the documentation once. I just go to the section that I want, view the source for that element, and copy it as a starting point. I stay focused on that one section and make sure that it does exactly what I want before I move on.

It's also important to try to be as organized as you can because everything that you learn becomes part of your knowledge toolbox. Just as you wouldn't want to go looking all over a workshop to find a tool that you need, you don't want to have to go looking all over your computer when you need an example of something that you've coded before.

BTW, speaking of Stackoverflow, most of my Google searches end with this - "site stackoverflow.com". That will focus the results on results from that site which often has the needed answer. If you don't find the answer that you're looking for, change the search phrase but keep the site declaration. Otherwise, you'll get results from sites that have paid to be at the top of the Google results but aren't great answers to your questions.
 
  • #3
1) Programming is never easy.
2) You say that your programs always look bad. What type of debugging techniques are you using? If you can see your program run and identify things that you do not like, you have made a huge step in programming. Now you have to be able to go to the part of the code that controls the thing that is not acting right. Then you need to be able to methodically narrow down to a particular error (there may be more than one). Do you have the skills for that? Use a debugger? Insert print statements? Believe me, sometimes you need to narrow things down to the exact line of code, even to a part of the line, before you can spot the error.

IMO, it is a mistake to move on to the next program before you have developed the skills to debug and correct the current program.
 
  • #4
Everyone, Please share advice as well...If programming is so tough, how come lots of average people do it?
 
  • #5
shivajikobardan said:
Everyone, Please share advice as well...If programming is so tough, how come lots of average people do it?
Maybe I am missing something in your example.
You can ask for more advice, but you will not get far enough to use that advice unless you can debug a simple program like your example.
IMHO, the way you are doing it, you will never get very far. You see the results in the simulation, but you never display the results of the calculations. You can see what is happening but how can you tell why it is happening? Are you using a debugger? I see no uncommented console.log statements and even the commented ones have no details that are useful for real debugging.
 
  • Like
Likes Vanadium 50
  • #6
Since you mentioned "presentable websites", often in many larger companies I had worked, there were programmers who wrote the guts of the presentation but not the presentation screen itself - since that also seemed to take some artistic ability and actually good practice. You may fit into the former category. Even that category may be split between programmers who write the database interfaces alone and the logic rules - and at times instead of actually writing pure code for logic, they might even use logic "engines" purchased from larger companies. Breaking the entire site construction by functionality also facilitates the ability to create modules that are more easily modifiable and avoids spaghetti code.

Also it's important to do a technical design ahead of writing any code. Most beginning programmers don't do designs except on maybe a smaller scale - until they actually get more expertise in what is good and what is not. Often your choice of database, language and OS makes a huge difference in how you implement things. For instance with a relational database, you might write a query that is in a book you read that works, but it could be extremely slow for your particular database, your OS and the database "file" design. That kind of knowledge is important when constructing a design - and even how to design you "files." That takes often a lot of sweat and work - although there are often guidelines by companies that developed your OS and database type product - yet that is not usually specific enough for your own needs. Most programmers strive toward excellence in this aspect of coding - because their technical design proves itself as good over time, and exhibits speed and flexibility.

THEN the technical design, in my opinion, should only be done after a person knowledgeable in the needs of the users writes a thorough analysis of the desired product. It helps to have programming take part in this process - even to work with the user themselves during the development - if the system is small enough to allow them to do that.

As far as replicating what is in books - I think those were just meant as examples anyway for specific instances. When I started, I also taught myself after buying tons of books while working (there was no internet back then) and also had some good "friends" who were more mentors willing to help. You probably may do better either experimenting with the ins and outs of what you are trying to pick up (and only use the books as the first step in a more complex process). Also try to find a mentor of sorts who will work with you - not always one on one, but in a more relaxed fashion where they can tell you things after reviewing where you are at on a project. The mentor should be a friend, not an adept criticizer.

Avoid people who offer no help and only consistently find issues with your work. If someone can't offer valid help or truly constructive criticism then they probably are lousy programmers themselves. Even if its a teacher - same goes there - many teachers have never worked in the field which is sad.

Yes, many people program, but a good proportion of people are really not good at it. They just sound like it. Don't be fooled by people who talk big and produce small. Many create websites with virtually little of anything beyond basic HTML 1.0 - even with no CSS - and many often use pre-built offerings that do a good part of the "coding" for them under the covers - things you are trying to learn yourself to build without that.
Don't give up. The more you do, the better you get.
 
Last edited by a moderator:
  • Like
Likes Tom.G
  • #7
shivajikobardan said:
f programming is so tough, how come lots of average people do it?
You might turn it around - if programming is as easy as you say, why are you struggling with it?

(Besides, I am not sure I would want to denigrate the same people I am hoping will help me with programming. Just sayin'.)
 
  • Like
Likes PhDeezNutz and Borg
  • #8
You want to go too fast, you quit before a project is done, and you are all over the place. That is bad for learning.

Let's start with what you've already done. For example, the clock you made. Let's concentrate on that. Are you happy with the result? If not, what would like to change to reach your expectations?
 
  • Like
Likes FactChecker, Tom.G and Vanadium 50
  • #9
shivajikobardan said:
Do you have any advice? Even advice to quit is appreciated. I've full day to learn programming luckily but being dumb(for programming) I am unable to utilize it.
Write pseudo code first and plan the structure of your program before you touch the editor.
 
  • Like
Likes Svein and symbolipoint
  • #10
shivajikobardan said:
TL;DR Summary: advices for struggling programming learner

These are some of my projects.
https://htmlcssbasicsite999.netlify.app/

https://counterapp999.netlify.app/

https://dicegame999.netlify.app/

https://digitalclock999.netlify.app/

https://portfoliosite999.netlify.app/I did all these projects without looking any tutorials and no wonders, all of them are bad.
I looked at all five of these projects. The counter app, dice game, and digital clock all seemed to work OK, so it seems you have a good feel for the JavaScript (I assume) coding. Why do you consider them all "bad"? Is it because of the user interface, or UI?
Personally, I've always been more interested in the actual code part than in a flashy UI. If you don't get the underlying code right, a flashy UI is really useless.

If your concern is CSS or HTML or other UI Web components, which to me isn't "real coding," I'd advise spending some time on tutorials that focus on these UI aspects. In the past I've found that W3Schools websites to be helpful. Here's a link to one of their tutorials on CSS - https://www.w3schools.com/Css/
 
  • #11
Mark44 said:
Personally, I've always been more interested in the actual code part than in a flashy UI.
I agree with this. But I would say that the most important feature of a UI is not being flashy. It's being unsurprising.
 
  • Like
Likes Tom.G and berkeman
  • #13
shivajikobardan said:
Everyone, Please share advice as well...If programming is so tough, how come lots of average people do it?
You would need to pick at what they have been doing. You may find that the so-called average people are putting more effort into this learning than you think. You may find that they began their learning at an early age. You may find that they had some formal instruction at least at their beginnings. You may find that their actual time studying and practicing is much more than you think.
 
  • #14
I'm really in a turmoil situation. all your advices are welcomed. But I think it's time to quit. I've not heard any new magical advice so probabbly means I've done what I could and it's time to quit. If there was a wonderful tutorial I'd be glad...But ig such things don't exist.. What I'm scared of is if I succumb into same situation if I try to learn something else. I wish I had money. I'd try getting some mentorship and see if that works. I'd get a job in anything IT now and maybe see my programming dream could be fulfilled later. you guys have known me for a long time, what field would you recommend getting a job for me?
 
  • Sad
Likes PeroK
  • #15
shivajikobardan said:
But I think it's time to quit. I've not heard any new magical advice so probabbly means I've done what I could and it's time to quit.
Ha! Nothing magical. But don't feel bad. Your example above is pretty good.
IMO, learning to program requires some real reason to work at it. That motivation can be to accomplish some unrelated task. Most tutorial examples would not interest me enough to learn to program. The world has enough Pong games already. You might look at a language like Python. It is the current hot language for many subjects like robotics, artificial intelligence, image recognition, etc.
Is there a reason for your apparent concentration on Javascript and databases?
shivajikobardan said:
you guys have known me for a long time, what field would you recommend getting a job for me?
I would concentrate on subject areas that are interesting to you and see what programming languages are used in that. The internet is likely to have a user group that uses the language for that application and you can get good help from them or from people here. When you approach it that way, there might be a lot of cases where you just want to modify existing programs for your particular needs. That is a fun way to learn.
 
  • Like
Likes symbolipoint and jack action
  • #16
shivajikobardan said:
magical
Magic doesn't work. Work, however, can do magic.
 
  • Like
  • Love
Likes vanhees71, Tom.G, FactChecker and 1 other person
  • #17
Vanadium 50 said:
It's being unsurprising.
AKA, the Principle of Least Astonishment.
 
  • Like
Likes vanhees71 and Vanadium 50
  • #18
shivajikobardan said:
I'm really in a turmoil situation. all your advices are welcomed. But I think it's time to quit. I've not heard any new magical advice so probabbly means I've done what I could and it's time to quit. If there was a wonderful tutorial I'd be glad...But ig such things don't exist.. What I'm scared of is if I succumb into same situation if I try to learn something else. I wish I had money. I'd try getting some mentorship and see if that works. I'd get a job in anything IT now and maybe see my programming dream could be fulfilled later. you guys have known me for a long time, what field would you recommend getting a job for me?
No! Not the time to quit. The time to rethink and plan. Register for and attend a beginning programming course and study formally. Learning to create software programs/program code building is a struggle. One needs to study, struggle, and do the exercises; that is how the learning and the skills come. You may very well need a good BEGINNER programming textbook and to use it in a class, and perform exercises from the book assigned to the class.
 
  • Like
Likes FactChecker
  • #19
Mark44 said:
Principle of Least Astonishment.
Misspelling detected. Format disk now? (Y/maybe)
 
  • Haha
  • Wow
Likes Tom.G, Mark44 and FactChecker
  • #20
If, by chance, you care to start at the hardware level of programming, there is an excellent beginners instruction manual on Assembly language programming at http://dunfield.classiccmp.org/altair/d/88opman.pdf
It will give you the grounding in the basic requirements of program flow that is needed through-out programming with any procedural language.

That manual came with the Altair 8800 computer back in 1975; it was the first 'home' computer that was actually useful.

Cheers,
Tom

p.s. Shortly after it came out, my wife and I built an Altair from a kit using our kitchen table as a work bench. A few years ago, after replacing some Power Supply components, it still worked!
 
  • Like
Likes berkeman
  • #21
shivajikobardan said:
I've not heard any new magical advice so probabbly means I've done what I could and it's time to quit.

At least part of the problem might be that the pressure you feel to succeed is making you distressed. That can take the fun out of it. And if its not fun, then its going to be more difficult.

shivajikobardan said:
What I'm scared of is if I succumb into same situation if I try to learn something else.

You will need to keep learning new things, but the skills you will develop will remain and having those skills will make it easier to learn the new stuff. Right now you are still developing the basic skills. So it is hard to say how much you will struggle once you have a solid grasp of the fundamentals and some more experience. Then again, things are changing in the industry as AI is becoming such a powerful tool. It might change the whole picture going forward in ways that would make my advice from my prior experience mostly irrelevant.

shivajikobardan said:
I'd get a job in anything IT now and maybe see my programming dream could be fulfilled later.

I don't see a problem with that. Since you say that programming is your dream, I think it might be too early for you to give up.

However, maybe it could be that programming was your dream, but it turned out that programming makes you miserable. If that is the case, then maybe it isn't for you. One of the important questions is whether you actually enjoy programming or not.

shivajikobardan said:
you guys have known me for a long time, what field would you recommend getting a job for me?

I don't know you very well, or what the job market is like in your area. And the world is changing quickly. So it is hard to recommend a job to aim for. Maybe if you list some of the ones you've considered it would help.
 
Last edited:
  • Like
Likes FactChecker
  • #22
shivajikobardan said:
you guys have known me for a long time, what field would you recommend getting a job for me?
It has been an aggravation to me that so few people put any information in their profile. I have no clue what your background or level of education is.
 
  • #23
Jarvis323 said:
I don't know you very well, or what the job market is like in your area. And the world is changing quickly. So it is hard to recommend a job to aim for. Maybe if you list some of the ones you've considered it would help.
Any IT jobs.
 
  • #24
shivajikobardan said:
Do you have any advice?
1st: Self-studying is just not for everybody. Based on your input here I suggest you to find a place or group where you can get appropriate tasks, personalized advices and immediate reflection on your work. (Even good programmers needs a pat on the shoulder and a 'good work!' from time to time!)

2nd: more patience and perseverance. You will be always troubled. Progress is not about leaving the troubles behind, but about being troubled by more complicated things than yesterday :wink:
 
Last edited:
  • Like
Likes symbolipoint and FactChecker
  • #25
Rive said:
1st: Self-studying is just not for everybody. Based on your input here I suggest you to find a place or group where you can get appropriate tasks, personalized advices and immediate reflection on your work. (Even good programmers needs a pat on the shoulder and a 'good work!' from time to time!)

2nd: more patience and perseverance. You will be always troubled. Progress is not about leaving the troubles behind, but about being troubled by more complicated things than yesterday :wink:
I was actually learning something few weeks ago. Now I am so demotivated that nothing enters my head and I don't even feel like trying. Hope this changes.
 
  • #26
shivajikobardan said:
Now I am so demotivated that nothing enters my head and I don't even feel like trying.
Struggling without the feeling of success does that.
Give yourself a breather and then find a place where you get appropriate feedback: both good and bad.
 
  • #27
Most people are asking me to get a mentor. What's a mentor btw? How can a mentor help me?
 
  • #28
FactChecker said:
It has been an aggravation to me that so few people put any information in their profile. I have no clue what your background or level of education is.
That is known as Privacy. Somewhat unfortunate. If live and in person, much different situation than an online forum.
 
  • #29
symbolipoint said:
That is known as Privacy. Somewhat unfortunate. If live and in person, much different situation than an online forum.
If I want help that is appropriate for my level of education and background, I would put the appropriate information there.
 
  • #30
FactChecker said:
If I want help that is appropriate for my level of education and background, I would put the appropriate information there.
And maybe that could happen if you convince him to hide less.
 
  • #31
symbolipoint said:
And maybe that could happen if you convince him to hide less.
So it's there but only visible to some people? I guess if so many people want it that way, I have to accept it. I just think it would be easier for others to give appropriate help if we knew their educational background and experience. I am often unsure of what level to answer some questions.
But I am afraid that I have hijacked this thread.
 
  • #32
shivajikobardan said:
Most people are asking me to get a mentor. What's a mentor btw? How can a mentor help me?
Mentor is a person who does things in a way that you want to be able to do, and who will give advice on how.
 
  • #33
shivajikobardan said:
TL;DR Summary: advices for struggling programming learner

I had access to world's best resources to learn books, tutorials, blogs, youtube, udemy etc. I had access to forums like this to get help and support but still this was tough for me.People say do projects to learn but I really don't know how that works. For eg: This project. I make stupid stuffs like these and can't produce a good output that is playable. It's too hard for me.
These are some of my projects.
https://htmlcssbasicsite999.netlify.app/

https://counterapp999.netlify.app/

https://dicegame999.netlify.app/

https://digitalclock999.netlify.app/

https://portfoliosite999.netlify.app/I did all these projects without looking any tutorials and no wonders, all of them are bad.In 3 months, I am seeing no progress, except few days like:

1) When I carved a site on my own using html,css without looking tutorials.

2) When I carved a site on my own using bootstrap without looking tutorials. But I still don't understand bootstrap as I'm not using bootstrap grids.

My problems:

1) I've not break through'ed in programming. If I can make anything with javascript that's over 500 lines of code, I'd consider that a breakthrough. I'm aware LOC aren't a good metric but please try to understand what I'm trying to say. A big application using programming.

2) Even in css, I failed to make presentable sites. The coding bootcamp I feel is going too fast as well. Same for bootstrap, I made sites but I failed ot create beautiful sites. People recommend me frontendmentor.io but IDK what to do there? It looks sketchy to me. If there is something that can teach me css, I'd be so grateful.

3) After watching tutorials, I can't repeat what they've done in tutorial without watching the tutorial of project even though I understand each and every step they do in project.

4) I still am not fluent in ES6. I can't think in ES6. Arrow functions, map, reduce etc. I Understand them, but using them is different ballgame.

Do you have any advice? Even advice to quit is appreciated. I've full day to learn programming luckily but being dumb(for programming) I am unable to utilize it.

I have a question for you. How much time have you spent learning these topics in total? Your post stated 3 months, but in my opinion that is not enough time for most people to become proficient programmers. Online resources are a good first step, but to become an acceptable programmer should take at least 1 full year (and when I say an "acceptable" programmer, what I mean is someone who is proficient enough to be able to work in a programming team in a work environment).

I think your main issue is that you are too impatient. Learning is by nature a slow process, and you need both patience and persistence to be able to succeed.
 
Last edited:
  • Like
Likes vanhees71, Vanadium 50 and FactChecker
  • #34
symbolipoint said:
Mentor is a person who does things in a way that you want to be able to do, and who will give advice on how.
Any idea on how to get mentor? How much will it cost?
 
  • #35
shivajikobardan said:
Any idea on how to get mentor? How much will it cost?
No. Sometimes in someplaces a mentor system is established; but usually "getting a mentor" is very informal.
 

Similar threads

Replies
1
Views
1K
Replies
5
Views
1K
Replies
7
Views
2K
Replies
5
Views
1K
Replies
7
Views
2K
Replies
5
Views
2K
Back
Top