As a new user of Django, and a noob python developer, what steps do I need to take, or which ones did you take, to ascend to the level of guru, or at least competency? Also, what did you do which you wish you didn’t?
Also, what time-frames are we talking about here? 6 months will get me…1 year will get me… etc, and hours per day would be nice…
Have at it…
Obtain some reasonable degree of proficiency with Python. See the Beginners Guide to Python for some resources. At a minimum, it would be best to have an understanding of such topics as Lists, Dicts, and Tuples; Control Flow statements (loops and conditionals, list comprehensions); Code Organization techniques (Classes, Functions, Modules, Packages); Environment management (venv, pip, etc); and an appreciation for everything that exists in the standard library. (No, I’m not saying someone should know the entire standard library. But, they should be familiar enough with what’s in there to realize that there’s a lot there.)
Then, once that’s done, I believe Django can be more easily learned. Work through the tutorials, look at other released projects, and experiment with it.
I won’t address rates of learning. Everyone learns in different ways and at different rates. Availability of resources and guidance is going to have a tremendous effect on the timetable. Access to in-person training / mentorship is, IMO, far more effective than just working through written examples.
This blogpost ’ How to Learn Django (2020)’ looks like it has a bunch of good suggestions: https://learndjango.com/tutorials/how-learn-django
@KenWhitesell, and anyone else who has an opinion on this, you suggest in-person training / mentorship. Are you referring to both face-to-face and virtual (online), or only face-to-face (i.e. physically in the same room)? If so, what are the differences and benefits of ‘in the same room’?
Face-to-face and virtual both have the benefit of having someone available to answer questions or provide clarification on a specific issue.
Face-to-face has the additional benefit that it’s easier for both the student and the teacher to be able to refer to each-other’s screens. The student can see what the teacher is working from, and the teacher can see what the student is doing - able to provide more detailed feedback on the work being done.
I’ve found this to be particularly problematic when you’re working with a GUI and trying to explain where a particular menu entry is or how to access a particular feature when the screen is crowded. (e.g. trying to demonstrate how to use the Chrome developer tools remotely can be extremely frustrating on both ends if the person has never even seen those tools before.)
My opinion if you want to reach guru level (without having reached it):
- Learn the basic principles of object oriented programming to the point where you know how to model something a bit more complex, at least three of four types of entities that interact with one another.
- Learn Python Basics, espcially introspection and datastructures: Lists, Dicts, Iterators, etc…
- Start with Django: do the tutorial, get an overview what Django can do for you, start your own more complex project, get a ton of experience through working with Django.
I would advice against learning Python and Django at once. I believe that approach is overbearing and due to the fact that you would have to accept a lot of things without understanding them, you won’t learn them well.
I bought Django for Beginners, and Django for Professionals by William S. Vincent. Both of these books are excellent. I stumbled across Corey Schafer’s Django tutorials on YouTube via a recommendation by Mr Vincent.
As a noob, these resources are helping me tremendously.
I’m not a python programmer. But I’m finding that google is my friend there, cos I already know how to code in a different language, and I can figure things out enough by asking myself : this is what I would do, how do I do this in Python?
I’m not even a web-developer really. I managed to cobble together a word-press site previously, and more recently one which doesn’t use word-press at all, but uses css grid . (Can’t say I’m a fan of PHP which lead me to Python in the first place)
So it’s a very steep learning curve right now.
Btw - excellent resource for css grid : https://gridbyexample.com/