Having trouble incorporating what I learn

Hey all! I have a serious issue when trying to use what I learn. I have been learning programming for a while now and I always retain the information. I understand all the concepts and how to use everything I learn. I always fall off though because for some reason I can’t figure out complex problems even though I know the language.

For example, I have been learning Python and I got pretty far in my learning. I was getting into using Python to get information from the web. Then I tried some coding challenges and realized I didn’t know how to solve them even though I knew the language. There was one problem in particular that I can say the solution out loud and talk it out but couldn’t put it into code. I know it as the server problem. I don’t know the actual name of it. But, you get a list of numbers which are supposed to be the demand for the server. You have two servers and you have to equally share the demand (the list of numbers) between the two servers. At the end the server utilization should be equal or near equal. So I know that sorting the list makes it easier to equally divide these numbers between the servers. In theory I should go one number at a time adding it to each server and keeping a sum from each server. When one sum is higher than the next one add the next number to the other server.

This is just one example to illustrate what I am struggling with. I really hate that this happens to me because it discourages me and makes me stop learning. I would appreciate any help or advice I can get. I really do love programming and I want to stop quitting because it delays me a lot.

Hey @java1318216783. I think what I’m hearing from you is that you’re having a slight bit of trouble stringing together all the different programming concepts to see how it works in the big picture. Is that correct?

I’ve attached a few forum posts written by seasoned programmers that will help you in what to do for your next step. Poke around and let us know what insights you’ve found helpful :slight_smile:

TLDR; Practice makes product!

In the last post, written by Codecademy Curriculum Developer, Alex Kuntz, check out the second half of his post where he shares tactical advice for how to go about stringing together different programming concepts in one project.

3 Likes

If we think in simplest possible terms about our goal, the steps more or less present themselves. Take for example your server problem, in simple terms…

>>> from random import randint
>>> a = [randint(1, 100) for _ in range(100)]
>>> u = v = 0
>>> for x in a:
	if u > v: v += x
	else: u += x

	
>>> print (u, v)
2550 2549
>>> 
1 Like

A good way to start stringing together ideas is to get involved in real world projects that already exist. I have several github projects that I use to practice concepts from my lessons, but by far the most effective way I’ve found to take the next step from a structured education platform like Codecademy to the real world was to find a project looking for contributors and asking to join, submitting my own work in the process.

I’m telling you from personal experience, the biggest possible motivator for me was when I made my first pull request and had it get accepted! I legit started crying out of joy and pride because that feeling I got was intense. Somebody looked at the work I did, and liked it so much that he made it a part of his project. I now work as a maintainer on the project and am very active with it, and its a great motivator to continue learning.

To get started, just search something like “github looking for contributors” or "github good for beginners: and there are many websites and resources that list various projects in many languages that are looking for people to help out. Then follow the instructions on that project to contribute! You’ll usually find that a lot of your work involves learning a new library or a new way of doing things, and it’s just a matter of finding a project you find interesting that you also can find a way to contribute. Don’t worry if you feel like you don’t fully grasp a concept either, my first contribution was literally just a couple of basic Python functions. My time on the project so far has taught me many new things that I didn’t know when I started: pytest unit testing, poetry and packaging, forking a project, and I even got to learn new ways of designing classes that weren’t covered in the Python 3 course because the project owner wanted things done a certain way.

I found that using coding challenges is a good way to practice thinking algorithmically, but its definitely not the only way to learn how to get involved in programming, and in my opinion, the kind of thinking required to do code challenges is completely different from how you need to think when developing a real project.

1 Like

Thank you so much for your response. I never try to get involved in real projects because I just don’t feel good enough. Sometimes I look at projects people have built and I understand the code perfectly but I’m still amazed at how they implemented it to do a certain task. Like, I feel like there’s something I’m missing because when I see those projects I feel I would of never thought of using the code in that way. So I am terrified to try to contribute code to someone else’s project and have horrible code.

What is a pull request? I can imagine how good it must feel to have the code you created on your own get accepted. I really hope to have that happen to me some day. And now you get to work on that project all the time, that is so awesome!

I’m going to try to search those things up and see what comes up. All those things you mentioned you learned I know nothing about lol. But I always felt that the best way to learn and fully grasp things is to do it everyday. I feel through experience you learn way more than through classes. Of course, classes give you an understanding of it but actually coding in a work environment with peers will teach a lot more. Right now I work as a network admin but when i first started I only knew what school taught me about networking. Now I think back at the knowledge I started with and I am amazed at myself. But the only reason I know everything I do now is because I use the knowledge everyday for work and through making mistakes. It’s all experience and working with people who know a lot more than you that teach you things everyday. Sorry for all the long responses. Thank you so much for your advice!

Thank you so much for all the great advice. I will definitely read over these multiple times and actually do what they say.

1 Like

When you contribute to a project on GitHub, you generally do so by forking the repo, meaning you basically make a complete copy of the original repository into your account. You then do your work (say you want to fix a bug, so you do the programming to fix it) and submit those changes to your copy of the repo. After you finish, you go back to the original and submit a Pull Request, which is where you basically submit your work for the owner to review and they’ll look at the request and your work and decide to either approve it without changes, suggest edits, or reject it. Once it gets approved, all your commits get merged into the original project, and your work becomes part of the official version.

(This)[https://firstcontributions.github.io/] is a good place to get started. If you hit their “get started” link, it takes you to a tutorial they wrote that teaches you how to fork, edit, and submit a PR, then you can use their website as a launchpad for projects to contribute to.

1 Like

Omg thank you so much for the help. I appreciate it greatly. This is a huge passion for me and this will completely help me reach the goals I have set for myself.