It was probably a cold and snowy night of December 1989, when a young (weeks before his 31st birthday) programmer Guido van Rossum was looking for a way to stay occupied during the week around Christmas. His office was closed, so he decided to find a new hobby - a new scripting language, that he was thinking about for some time, that would be a descendant of ABC language and would appeal to Unix/C maniacs. As a big fan of Monty Python’s Flying Circus, he decided to name the project “Python”.
It is also one of the few languages that keep being on the rise since 2015. One of the most important factors that influence the language’s popularity is the machine-learning explosion and the fact that Python and Python’s framework are leading technologies behind this business revolution.
So long story short - Python is a perfect pick both for the skilled developer and the developer-to-be - but why?
Why Python? (and what is Python?)
Python is a general-purpose programming language that is sometimes called “battery included” language, due to the rich repository of libraries and frameworks supporting multiple goals. Python’s philosophy puts a strong emphasis on code readability and making the developers’ lives as simple as possible.
Python is revered for its flexibility due to the support for multiple programming paradigms. The program can be written in a procedural, object-oriented or functional paradigm depending on the programmer’s preference and business goal to achieve. Thus, the language gives the developer a significant and sometimes unseen level of liberty, sometimes standing in direct opposition to the popular programming languages. An example can come from one of Ideamotive’s favorite programming frameworks - Ruby on Rails. Ruby brings clarity and order by supporting only one preferred way of solving the problem and Python delivers flexibility by taking a directly opposite approach - there is no preferred way to solve a problem and the coder can do what he or she considers the best solution.
A set of Python’s core philosophical ideals are collected in the document called The Zen of Python. Among the most significant elements of the “moral code” of the programming language there are:
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Readability counts.
Sounds as cool as wise, doesn’t it?
Why should you learn it?
Apart from being cool and wise, Python is on the strong rise, as mentioned above. The language is used in multiple ways to support a plethora of processes. Depending on the framework and set of libraries, it can be used in front-end, back-end, web development, machine learning and other usages that would be pointless to enumerate here.
The key point is Python is a jack-of-all-trades that makes the developer much more flexible and requires significantly less effort when needing to broaden competencies to deliver the project. For example, to manage the web front of the project, the developer needs not to learn a new language, but just a new framework.
Also, Python is the main language behind machine learning, one of the most promising and dynamic technologies in the modern world. Not only 80% of customer interactions will be done without humans by 2020, but also 75 countries are already using AI technology in surveillance.
There is a high need for Python developers out there and the trends show it is not going to fade quickly. And where there is a need, there is a money of companies in need, ready to be taken by a willing developer - right? So both Python developer salary and junior Python developer salary are quite appealing.
How should you start learning Python?
So learning Python is a good idea considering the trends on the market and the general direction of technology. But to keep consistency with the general mood of the programming language one could say:
“There are many paths to the top of the mountain, but the view is always the same”
A slightly more modern version of this proverb, seemingly tailored to fit the process of learning the programming language. A reasonable roadmap of learning Python composes of:
- Building the basics - the obvious one. Just get used to syntax and commands, write something more complex than “hello world!”
- Reading or watching tutorials. Again, and again and again - none cover everything. Start building your own small apps that support your daily tasks, be that email sending, scraping the data or anything possible. Many great startups started with the product that solved the owner’s problem.
- Reading the documentation - at this point, you should be able to understand it properly. Make your apps more sophisticated, use frameworks or libraries to enrich them
- Watch talks, go to events - because that’s always a good idea
- Read source code - at this point, you will not only understand the code, but also be able to differ between a good and bad code.
- Never think you are good enough - programming language is not a skill to be acquired once and for all - it is crucial to polish it and make better
But let’s get to the point, shall we?
The way one learns Python, the amount of work required to do so and benefits depend highly on the background one emerges from. A student (maybe a school student?) has many more ways to pick and is in significantly different situations than the one who wishes to change the career course and reskill.
For the former, picking the software engineering-related studies is always a good pick and there is a good one in Stanford for example. The world floats toward technological advancement and increasing the role of technology in our daily lives, so picking up the career that is directly related to this field is a good idea regardless of the other factors.
The rest has to be creative and find their own way.
Self-learning vs. classes & paid courses - how to develop Python skills
There are three main ways to gain skills as a software developer. Every single one has pros and cons and comes with unique benefits that can come in handy in the later stages of the career.
Self-learning - a lone warrior
The most primal and sturdy way to acquire new skills. There are multiple self-learners among coders, including those who got immersed into the programming early on as teens or even earlier and decided to skip formal education and get skills in the real battlefield of bugs and coding. For the godfathers of modern programming and software development there was no other way - the field has been built by engineers and mathematicians willing to automate their daily jobs and toss off the most frustrating elements.
Pros: self-learning is a hard road to pick and it forges a resilience in the developer, the quality that is more than desired when building software. It also requires discipline and ability to form own goals - other qualities that are valued by employers. Self-learner shapes also own ways to look for solutions. It is possible that there were a huge number of developers who encountered the problem earlier - the key is to find the solution.
Cons: first and foremost - it is time-consuming. Acquiring any new skill is, but this particular way to do so is even harder. One lacks the person who knows the answer or provides guidance. Also, when learning to code on his or her own, the developer can form some bad habits that are not necessarily hurting the program’s performance but are generally seen as a coding bad-practice. A good, top-of-mind example is leaving hardcoded values where a variable would do, creating a hidden dependency in fact. The program will work - for a while, and after a careless update, everything will collapse with no-one knowing why. And that’s only a top-of-mind example.
Last but not least - it is sometimes hard to prove skills in a Python developer resume.
So you are a strong one, right? Even the greatest journey starts with the first step, so here is the place to take yours.
Classes - a Jedi temple
Pros: Classes come with a schedule and curriculum designed to deliver a set of skills that are valued on a market. Also, there is a tutor who provides all the information needed, so a significant amount of time is saved.
"By working 1:1 with a coding mentor, students also get the reassurance that they're truly understanding technical concepts, and not just glossing over the material"
Ryan Desmond from CodingNomads code school.
The risk of silly blocks and obstacles encountered in self-learning is minimized. On the other hand, the course comes with a set of exercises to polish one’s skills. In the end, there is a certificate and, sometimes, contact to the company that was looking for coders.
Last but not least, a Bootcamp or other class is a good way to meet interesting people who share interest and a self-change drive. Also, there is always a Python developer certification (this one is good) in the end - a document that underlines the skills and provides good proof that the candidate has some skills indeed.
Cons: classes and bootcamps vary in quality and one may never be certain about it. Also, this type of skill building is similar to school where one can be left with some set of skills, but no deeper understanding of the technology or the mechanisms that stand behind it. Thus, one can be seen as a “doer” rather than “thinker” and is able to deliver a set of previously learned constructs without the crucial need for a developer ability to create a solution. The presence of peers on the course can be also seen as a downside - if there are people less suited to become developers, with another set of talents than desired, they can have a negative impact on the whole group.
So do. Or do not. There is no try.
Paid courses - the Sith way
One can also buy a course or pay a skilled developer to teach him or her. It is a master-apprentice relation, comparable to the Sith paradigm, where there are only two of them, while Jedi had younglings classes and were later taken into the apprenticeship by more skilled knights.
Pros: there is a mentor who guides a coder-to-be through all the process. Even in the online course, it is common for the expert to be available to deliver answers via email. All problems can be solved. On the other hand, in an online-course one has motivation to find their own solution before reaching the mentor.
Cons: the cost is significant. It is time consuming and, depending on the type of the course (online or one-on-one) it can take significantly more time than a class. Also, one may never be sure about the mentor’s skills and can also gain some bad habits on coding and software development (vide point 1).
On this path, my young Jedi. You will find that it is you who are mistaken…about a great many things.
How long does it take?
The key question is the tricky one. Being a software developer is like any other skill - it needs to be constantly built and fed. There is no point beyond which one “becomes a developer” - only working as one can be such a measure.
But becoming a “good developer” a “skilled coder” is a never-ending process and one needs to further polish skills, broaden knowledge and keep up-to-date. So finishing a course can take about 40 hours, a bootcamp is about two weeks and self-learning can be done for months during the evenings.
But it is not the end - this time it is Churchill to quote, not a zen-related master:
“(Now) this is not the end. It is not even the beginning of the end. But it is, perhaps, the end of the beginning”
Practice, practice, practice - that’s the key.
Where to look for offers?
The tricky part is to find a decent job after acquiring the new skill. The best idea is to look for internships, where one can gain skills in real-life projects as a support for more experienced coders. There are multiple ways to find offers, including:
- Popular job boards
- Specialized job-boards focused on IT-market
- Facebook groups for developers
- Peers and people who inspired one to become a software developer
It is also increasingly popular to become a freelance coder apart from working for a main employer, or even instead. It is another way to polish skills and solve real-life problems.
So what about this “bullshit” mentioned in the title? The greatest stack of it is in the ever-present promising someone to become a Python developer fast and painless, without hard work. No way - not even close. Becoming a Python developer is a commitment.
In his famous book titled “Outliers”, Malcolm Gladwell, a renowned Canadian journalist and author, analyzes multiple factors standing behind a success seen in a broad context. He follows famous ice hockey players, Bill Gates and multiple others on their roads toward success. The most famous conclusion is that one needs to perform a certain task for about 10 thousand hours to become a world-class master.
The theory was later challenged, but one remains undoubted - there is a lot of work required to be good at anything - and Python software development is no exception.