Languages and frameworks are only part of the process - a small part. You also need to learn how to think like a developer. Video: Habits for effective Python learning
- Set the stage
- Eliminate distractions - close browser tabs, silence your phone, use the Pomodoro method
- Clarify your what and why: What is it that you're trying to achieve? Why is that important?
- Focus on the process - The process is much more important than the end product:
- How do you approach a problem?
- What do you do when you get stuck?
- Can you brute force your way through?
- Play
- Take risks, experiment. The most fruitful place to be is at the edge of your ability, or your 'Zone of proximal development'
- Have fun! Recognize if you're in 'fight or flight' mode, and take steps to get yourself back in a positive state of mind.
- Reflect
- Ask the following questions at the end of each study session:
- What were my objectives?
- How far did I get?
- How much is left?
- How was the process?
- Am I on the right track?
- Ask the following questions at the end of each study session:
- 50% off Real Python: PYCHATWEEK
-
The docs are huge! How do you effectively read the documentation?
This just takes time. Practice. I use the [Standard Library Index](Standard Library Index) as a reference. I also tend to look things up in StackOverflow even if I the solution to a problem. This helps me see how other people have handled it and exposes me to new methods and ways of thinking. Finally, reading other people's code really helped me. Again, seeing how other people solved similar problems is super valuable.
-
I am currently learning Python now for the 3rd time. In the past, I have started out strong with lots of passion, but soon get derailed/lose momentum/lose drive as I find myself hung up on tough problems and end up discouraged. How can I stop that from happening and keep forward progress? I don't want to end up stopping again.
Learn just enough syntax and then start building something that interests you. This will help keep you accountable. Plus, you will inevitably be forced to learn along the way since you will hit stumbling blocks.
Ask for help. Meetup groups. Find a mentor.
-
How do you come up with, or what's a good place to get, practice project ideas that don't become overwhelming?
Try - Mega Project List and awesome-app-ideas. Feel free to email me (michael@realpython.com). Happy to brainstorm.
-
In your experience, when teaching novices, is it more fruitful to teach them the language basics first (as per normally done in programming classes), or to teach them a small neat/useful thing first?
I have always taken a learning by doing approach. Give them just enough syntax and then get them building something. Always good to show the end product of what they will be building at the beginning of a session as well.
-
Which common topics are good to learn/teach first about a programing language (control structures, variables, standard library, etc) or it depends of each language?
It does depend on the language. I generally start with primitives, move to variables, then to function, and on to control flow. See the chapter structure of the first Real Python course for more into.
If you already know a language, check out Learn X in Y minutes.
-
For many of us pre-web dev is hard to gather all the necessary technologies involved. Learning Python is one thing (an easy one) but get it to work in real world web apps is another. It would be great to learn a simple fast track web dev building blocks, no matter what framework we finally chose to work with. In any case I will be very attentive and grateful.
You do have to start with a language/framework, but as you are learning it's important to abstract out what you're doing so that it's applicable to other languages and frameworks - this is how the second Real Python course was written.
-
Any good Open Source projects for Python newbies?
- Search on GitHub for specific issues:
- http://pybee.org/contributing/
- https://github.com/MunGell/awesome-for-beginners#python