If you do a simple Google search of “How long does it take to learn python?” At the time of this writing you will get an answer of 8 weeks in big bold letters in the top Google snippet. Normally these are extremely helpful for people looking for quick answers but in this case I disagree with this completely and unless you already are comfortable with another coding language such as C++, C#, Java, etc… you will likely be left frustrated after 8 weeks wondering why you haven’t completely learned python yet and why you don’t have a top tier python developer job that you would using a more detailed roadmap.
In my article on how long it takes to learn Python I explain that with one month of focused study you can learn the core concepts of Python. In another month you may be able to learn Python classes and basic data structures and algorithms. You may even know enough to write some basic programs following a tutorial such as the guess the number command line game below.
But if you were given a very vague set of requirements that a boss expected you to solve with a Python application and you only have 8 weeks of coding background you would not know Python well enough to do that.
Why 8 weeks isn’t enough time to learn Python
Even if you were able to master installing Python, setting up your IDE, learning variables, conditionals, recursion, functions, classes, data structures, and core algorithms this is just the tip of the iceberg of the coding world.
In all honesty the commitment to learn Python is a life long journey. You will constantly learn new ways to organize classes that make them more logical and maintainable such as in my FizzBuzz example. There will always be new findings to optimize algorithms to make them run faster. There will also always be new ways to architect large programs to take advantage of databases, cloud computing, and concurrency of tasks better as well. This list is just a small example of the large breadth of knowledge that is included within the complex realm of software development.
Even within Python there are a lot of various frameworks that one can learn and language specific complex concepts that I would be amazed if someone could learn coming from zero coding background at the end of 8 weeks such as magic methods, functions as passable variables, context managers, and using concurrency in a way that the works around Python’s global interpreter lock.
How Long to Really Learn Python?
If your goal is to say you know Python well enough to create a guess the number game in a terminal then yes you can do this in 8 weeks. If your goal is to create a Tetris game with a graphical user interface that saves high scores and speeds up as your game gets harder than this can probably be made within 4 months since there are tutorials out there that can you help you achieve this goal. However just being able to code a feature complete Tetris game with the help of a tutorial is still not enough to land you a high paying competitive job.
Now if you want to learn Python well enough to be a professional and reliable Python freelance developer capable of using multiple Python libraries, frameworks, design patterns, and software best practices to deliver high quality software then this level of knowledge and self discipline is why coding boot camps and computer science majors exist. This is also the reason that all the Python developer job postings you find say they require a computer science degree or equivalent experience and it doesn’t say “created a Tetris game using an online tutorial after learning to code on Google for 8 weeks”.
Let’s break this down into an easy to read table.
|Skill desired||Time to learn*|
|Python “Guess the number” app||4 weeks|
|“Address book” using objects||8 weeks|
|“Tetris” GUI game||16 weeks|
|“Multi User Web application game”||32 weeks|
|“Can write a basic housing price predictor”||32 weeks|
|Basic full time python developer||6 month bootcamp |
2 year associates degree
Disclaimer that these estimates assume you are coming from 0 background and what I imagine new programmers could accomplish at a specific point in their coding timeline and not the actual time to complete such a project.
These other things will also keep you from quickly learning Python
In addition to the massive amount of things to learn in Python and software development; these additional factors will also keep you from really learning Python within 8 weeks.
Coding in itself is difficult. There are a lot of abstract concepts once you get into the world of classes, design patterns, and maintaining large enterprise level code bases. Corporate problems, where all you have is a very basic idea of what you are trying to solve are even harder and are ambiguous in nature which adds to the difficulty.
Enjoy the world of tutorials while you live in it because once you become a professional developer there is no tutorial for “give me code I can copy and paste to solve my Bosses answer”. If there was why would he need you?
Without going into too much biology your brain is constantly in a battle within itself between the Limbic system and the Prefrontal Cortex. The prefrontal cortex is the evolved part of the brain that knows if you really thoroughly learn coding you can get an awesome job and create some really kick ass software that is used by lots of people! Your Limbic system is the part of your brain that says “Damn this coding stuff is hard, I don’t understand it and it’s causing me stress, and I’d rather go watch Netflix.” It’s the part of your brain that keeps you ‘safe’, it also handles your breathing, your heart beat, and your basic emotions. In other words your procrastination is a biological function of your brain.
However, as simple as it is to blame our brain, as a human we have an amazing ability to be aware of our state of mind and control our response to hard stuff that makes us run away to Netflix. In the first 8 weeks of learning to code your limbic system will probably win most of those battles and 8 weeks will turn into 16 and eventually 24 unless you are able to recognize this war within yourself and fight off procrastination queues. This in itself is another skill that can take years for people to master, but now that you know about it you can take steps today to overcome the urge to procrastinate.
Lack of direction
The other big reason you will fail to learn Python in 8 weeks is because of a lack of direction. Sure there are lots of courses out there that can provide direction or you can follow my 8 week outline in my Learn Python Quick Guide but even with these steps you don’t have a significant reason to go through all of them. I’m not going to fail you if you don’t watch one of my videos, there’s no tests after watching them, and you didn’t pay me 400$ to give you a grade at the end either. This puts all the responsibility on you what you want to learn, when to learn it, and how you will apply it. With how much there is to learn and the over whelming amount of places to learn it, new self taught programmers can often waste time learning the wrong things or spending too much time learning from sources that are difficult to understand.
Now that I’ve given you the depressing news that you likely won’t learn Python in 8 weeks let me reassure you that if you really want to learn Python you WILL. You might not do it in 8 weeks but your career will span 30-50 years and maybe even more with future technology. Don’t be in a rush to feel like you have to learn something in the time Google says you can learn it. Everyone is unique.
There are some things you can do to make sure your journey to learn programming and software development is a successful one that I’ll list out below.
- Create a set of goals and realistic timelines you’d like to accomplish them in
- List out the reasons you want to become a software developer and reread that back when you find you are being challenged too much or are procrastinating
- Come up with a mission statement that summarize who you are as a developer and person!
- Follow my blog and YouTube channel. It really helps provide me inspiration to fight my own demons and put out content for you all.
- Reach out to me with any suggestions that could help you and our other programming friends to keep focused on their coding journey.
About Stefan Bradstreet
Stefan is a software development engineer II at Amazon with 5+ years of experience in tech. He is passionate about helping people become better coders and climbing the ranks in their careers as well as his own through continued learning of leadership techniques and software best practices.