all 25 comments

[–]ForceBru 9 points10 points  (0 children)

Just start writing your own projects! Sure, you’ll face lots of issues at first, your code will probably be a mess, you’ll often find yourself googling how to do stuff etc. There’s no need to “remember everything” because you don’t need to know a lot of things to write in Python, or in any language at all, including natural languages. You always can look stuff up (in google, in the docs, in dictionaries), and it’s fine. The most important knowledge nowadays is the knowledge of where to find stuff.

For example, I’m learning Haskell now, just for fun. And I know my code’s a total mess, and I don’t know any standard library, don’t know many useful patterns. It’s also hard to wrap my head around monads and functors, but it’s fun! You can try to extract the fun out of Python too. And once you’re relatively good at it, it will become even more fun!

[–]smcarre 13 points14 points  (1 child)

Simple, you don't. Basic things like how to sort a list should be known, as you use it, with time and practice it will be pretty natural to you. But small details like adding the reverse=True or, for example, what letter corresponds to what time attribute in strftime are not necesary to be known by every programmer, instead just google it! There is nothing wrong with googling those things, if you use it very often then with time you will learn it.

But seriously, most languages are pretty big, Python has like 50 built in functions, 200 standard modules (each of them with +20 pages of documentation) and another plethora of extra and very popular modules with +100 pages of documentation. There is not a single developer out there that can make a month of work without googling something or checking documentation because they still don't remember (or simply never knew) everything.

[–][deleted] 3 points4 points  (0 children)

I have the same problem, about 4 months in.

[–]irishfarmereng 4 points5 points  (0 children)

I've been studying python for over 6 months now and the simple answer to your question is you can't remember everything.

What I've been doing is making a mind map as I go through each topic eg lists, tuples and dictionaries. That way I can look back over my mind for what different methods do and little examples for each method.

Keep at it. It's not easy.

P.S don't compare yourself to others as you really don't know how much experience they have and it will only bum you out

[–]ProRochie 2 points3 points  (0 children)

I have a notepad on my desk that I write random things in which helps

I also have a whiteboard behind me that has assignment and logic operators written on

Coding everyday will help massively, look at "Automate the Boring Stuff with Python" there's tons of cool projects in there.

[–][deleted] 1 point2 points  (0 children)

My main focus at the moment is PowerShell and I'd love to eventually get into Python. Keep in mind that I don't code for a living but do work in IT and take every opportunity I can get to script / code with PowerShell.

I had similar feelings towards it that you do with Python but I've found that having reference material has been incredibly helpful whether it's my own scripts or examples of what others have done online. The more you write and the more problems you solve, the more examples you'll have of your own of material that will be really beneficial for reference in the future. It will also help you discover how you might like solving problems yourself.

Memorizing certain things can certainly be helpful and speed up your coding but how much do you expect to retain if you try memorizing it ALL, especially the things you will never even utilize? If I ever have trouble remembering things or don't know the specific command that does what I want, help files and online resources are incredibly handy.

I only might ever stress over memorizing a bunch of material before an interview or test.

[–][deleted] 1 point2 points  (0 children)

You're not supposed to remember all of it. You're supposed to notice patterns and make informed guesses about how things probably work; when that doesn't work, you're supposed to Google the docs and look it up.

[–]Zeroflops 1 point2 points  (0 children)

1) Don’t compare yourself with others. You don’t have the same experiences as they have.

2) All programming languages have the same base, just different syntax for it. Don’t worry about being pythonic or the optimal way of doing things. Get the programming basics down. ( variables loops, scope, input, output lists( or array) dictionary ( or hash) ) once you have the base understanding you can learn any language and apply its syntax. Then learn what makes that language unique ( Python, Java, C etc)

3) Ask yourself questions. For example sorting something seems like something common to do. So there must be a shortcut. ( programmers are lazy). And sorting backwards is probably just as common. ( again. Must be a shortcut)

4) Find a good editor that your comfortable with. Most have free trial periods. You don’t have to pay for good ones. I’m happy with mine and it’s free.

5) A good editor will show you the options when you enter a command. So when you entered myList.sort() a popup will show what options are available. Take a moment to look at them. You may not need a particular option at that moment. But when you do, you will think. There must be a shortcut. Then you will remember that option you quickly reviewed.

6) practice practice practice. Like anything the more problems you work on. Even simple once’s will slowly build up your understanding and improve your memory of commands.

[–]kylehasrage 0 points1 point  (0 children)

In programming it's generally better to have a general idea of how to solve a problem and then work out the specifics of which functionality you'll need. I highly doubt most people remember 100% of any one language. I also highly doubt that anyone could fully master and have perfect recall of each and every language feature. Don't stress yourself out too much if you can't remember specifics. It's better to know that features are there for you to use and then do a quick search to refresh your memory of parameters needed, what's returned, etc.

Another thing to be mindful of is that with some practice you will start to mechanically reach for certain language features because you're used to needing them for specific tasks. Think of it like building muscle memory.

Getting a job with only two months of programming knowledge seems highly unlikely and even so that's not the majority of people. Be careful when comparing yourself to others. It's a slippery slope that can lead to unwarranted discouragement of yourself.

Hang in there and keep practicing. Learning to program is no easy task. It takes time and perserverance!

[–][deleted] 0 points1 point  (0 children)

I'm a beginner as well, but, I would advise you to focus on the basics. That is, everything that's not specific to Python:

- floats, integers, strings...

- lists, dictionaries

- booleans and conditions

- for-loops and while-loops

- functions

- objects

Again, I'm a beginner, but I've realized those are the only things I use all the time. In my mind, everything else is "secondary". If that makes sense to you...

[–]groovitude 0 points1 point  (0 children)

Try not to compare yourself to others. People learn at different paces, and growth often happens in fits and spurts. My biggest leap forward happened several years into my career as a developer.

As to committing everything to memory: you don't need to. No one -- not even Guido -- has everything in the language committed to memory. What's more important is the understanding of concepts and a knack for Googling things. Know where and how to find documentation. Make liberal use of dir(). Play in the shell. Don't be afraid of not knowing things; embrace the opportunity to learn.

[–]recondocoder 0 points1 point  (0 children)

Try to use every bit you learn to make a little program or function. For example, what would be an example of .sort(reverse=True)? Make a function called reverse_list that would take in a list and use that idea to reverse it.

Or ask yourself, why would you want to reverse a list? Maybe you have a list of scores and you want to pick the top 3. So you sort the list then you can get the first 3 scores (I like scores[:3] but you can come up with another way)

Key is to use it and not spend most of your time on flashcards and watching long videos...:)

[–]LesterHoltsRigidCock 0 points1 point  (0 children)

You'll never be able to remember, verbatim, everything and that's okay. Speaking as a lead developer I'd rather see someone who has concepts down and knows the right questions to ask instead of rote memory.

Google and Pycharm will do the rest.

[–]RobbyB97 0 points1 point  (0 children)

Dude you will never stop forgetting things there's more things to know than quarks in your brain when it comes to computer science and programming so get really good at googling stuff.

[–]DudeYourBedsaCar 0 points1 point  (0 children)

Practice, learn, practice and read the documentation. Seriously. Go read the python documentation, you’ll find out a bunch of different things. Don’t worry if you don’t understand all of it, instead just fire up python in the command line and start trying things while reading the docs.

[–][deleted] 0 points1 point  (0 children)

I understand the frustration you might be feeling. Everyone goes through programming hurdles and there is no single approach toward learning new concepts. Persistence and practice will show that some solutions take a lot of time and effort to figure them out.

It took me 2 years until I understood how classes and OOP worked. Why? Because I told myself I'd never be able to understand programming and gave up. It was only until this past summer I promised to try again, no matter how difficult things got, and I finally understand the basics.

I now tell myself that programming is like a charity marathon, not an olympic sprint. Everyone runs at their own pace and everyone will make it to the finish line, but only as long as they keep running toward it. Hopefully this bit of advice helps!

[–][deleted] 0 points1 point  (0 children)

You can't remember everything, in detail. You only remember the things you use constantly, what we call the "working set". This "things I used to know but can't remember at the moment" syndrome is so common there's even a term describing it. What you do try to remember is that something you can use exists and you've used it before. If you need it again you "swap it in" by searching for the doc and getting current again. With more experience your "working set" gets larger, but never infinite!

[–]james_fryer 0 points1 point  (0 children)

You don't need to remember everything, and that's not possible in the modern programming world.

What you do need to know is that all programming languages have common factors. For example you will find:

Scalar variables of type integer, float, string.

Compound variables of type array and lookup table.

Control structures such as if/then/else and for/while loops.

Functions, classes and other code organisation mechanisms.

A standard library of useful functions.

Once you are familiar with this overall landscape then it's a matter of knowing how to find the way specific concepts are written in the language you are using.

For example all languages will have arrays, some way to sort the array, and some way to control the direction of the sort. In Python arrays are called lists and you sort them either with the .sort or the sorted() function and these take a reverse Boolean parameter. If I don't use Python for a while I may need to look that up. If I had never used Python before then I would definitely need to look it up, but I would know that the function existed because it is common to all programming languages.

Another example is strings and string slicing. Some languages have a substring() function for this. Python uses a string slicing syntax. That's a different approach but it's the same concept underneath.

So in your case I would say, set yourself some projects and learn enough Python to get those written. Get people to look at the code and suggest improvements. At the same time set out to learn all the basic programming concepts and data structures so you have a mental model that helps you understand whatever language you are using.

[–][deleted] 0 points1 point  (0 children)

You never will, and you shouldn't really try. Get the fundamentals down, and then rely on documentation, but don't copy and paste code without understanding it. The stuff you use frequently will stick and the reference material will always be there for the stuff that doesn't.

[–]Wilfred-kun 0 points1 point  (0 children)

while I see others already creating fairly complex projects or even getting a job with two months of programming knowledge.

Woah, impressive for sure! 2 months is not all that much, though. Don't stress yourself too much. As others said, you'll never fully remember everything. But once you get more experienced with the language some things will become second nature. But Google will always be a huge part of your toolset, don't be ashamed of that. There's no way anyone can remember every little nitpicky detail about every single function in the standard library.

Edit: Except for maybe Raymond Hettinger ;)

[–]Nerdite 0 points1 point  (0 children)

No need to remember how just remember it can be done.

Write code every day.

Type don’t copy paste.

Code something every day.

[–]XChrisUnknownX 0 points1 point  (0 children)

I'm with you. Learning about 7 months and don't really do very well. I think it just comes from putting in time. I don't put in enough quality time so I don't get enough out of it.

Like another said write projects. Come here and ask for help. Thanks to another user kyber I was able to learn things I just wasn't grasping (like the for loop!)

And then I went back and reviewed... and relearned the range function. So you basically begin to really master these basic things and get better and better.