Do you want to start learning Python? If so, you've come to the right place. In this post you'll find comprehensive summary about learning Python and how to do it right.This post is meant to be a follow-up to my colleague Wojtek Panek’s post on learning how to code.We both graduated from Poznań University of Technology and now we also work together at Apptension, but we do quite different things — Wojtek is a frontend developer while I program the backend (mostly Python) and mobile (Android).My own university path was kind of a blind shot. This is why having some younger acquaintances that are in the midst of choosing their universities and reading a lot of reddit programming-related subforums makes me sure many of them would appreciate a chance to know more about programming jobs.In this post, I want to show my point of view, as someone who is rather on the server side of things, to give you an outline of how can you start learning Python and, consequently, become a backend developer.Here's what you'll find further in this article:1. What is backend development?2. Backend vs frontend development3. Why should you learn Python?4. What tools do you need?5. Learning Python the oldschool way6. Can I start learning Python online?
Why is backend development called so?If it is not obvious to you yet, computer applications have two sides:
[caption id="attachment_1259" align="aligncenter" width="679"]
The difference between frontend and backend developers explained with Backand's infographic.[/caption]The very first thing you’ll notice reading about the backend and frontend is how the language and tool ecosystems are different:
Before you embark on your journey as a Python programmer, you need to learn the most important lesson:
What do we need to program in a scripting language like Python in modern operating systems?As I’ve already mentioned, you need to install the interpreter (the Python program) and a text editor (to write code). When it comes to the latter, you can choose between simple code editors that survived through history and integrated development environments that recreate the older ones with modern technology, adding many useful features.[caption id="attachment_1263" align="aligncenter" width="1024"]
Atom.io is an example of the text editor suitable for Python developers.[/caption]For free Python choices, I would recommend PyCharm Community Edition, Atom, and VIM — choosing one of them over the others is really a matter of personal preference. Nobody is going to force you to use some specific editor if you are more productive in another.Having the interpreter and a text editor of choice is enough for simple tasks but, eventually, you will want to use the code someone distributes for free as open source software. Modern languages have package managers or build tools that deal with software dependencies — other programs that you can use in your projects. For Python, pick up the pip program.
The so called “hard” way to learn coding simply entails reading a lot. Check out this list on GitHub if you're looking for available reading resources.When it comes to the books on programming languages, some authors prefer to write very long books which cover a lot of ground but I usually go first for the shorter ones — which have about two hundred pages. They give you a good starting point for expanding your knowledge in the way you want. You can then choose to read the bigger ones to learn more tricks.You can also go to university to obtain a degree in computer science. From my point of view as a Polish citizen, I think that our university program is rather an overview of the knowledge and history of programming rather than a specialisation route. Most likely, at a technical university in Poland you will have some assignments regarding creating web applications, but those will not get you far if you don’t learn on your own or work with someone on solving real-life problems.However, it is worth it as far as you are able to learn those advanced concepts that are hard to master alone and gain knowledge of some already-solved programming problems and different programming paradigms that expand your horizons.
In the old times, people learned from books and at universities. Then, there was a boom for online textual tutorials, followed by videos. Next came the interactive coding tutorials that featured text editors embedded in browsers and massive open online courses.You may ask yourself:‘Where do I start learning Python online?’I have tried CodeAcademy once and, apart from some verification system bugs that are probably gone by now, I find it useful for beginners as it has a fine, well-guided overview of the most basic language constructs and makes you write some simple programs for a start.[caption id="attachment_1264" align="aligncenter" width="1024"]
Learn Python online entering courses on websites like Coursera.[/caption]If you have more time (counted in weeks) you can try edX and Coursera courses. Once you have a solid knowledge of programming basics, you can try websites like learnxinyminutes for quick language reference or CodingBat for short tasks that test your problem solving skills.If you feel lost on your path to learning programming, you can ask helpful strangers on reddit forums such as learnprogramming, askprogramming.Lastly, if you have the guts for it, you can try reading other people's software on GitHub and learn by interpreting it.If you are stuck with interpreter or compiler problems, copy the error message and paste it into your search engine, later picking up the results from sites like StackOverflow. Somebody most likely encountered the same problem before you and somebody else helped them solve it. You just need to pay attention to the example and find similarities between it and your code after reading the available answer.As a last resort, you can always try asking someone on the Internet. StackOverflow is your friend and so are your fellow programmers.
After accomplishing your first few goals, you will quickly find out that you need to have more complementary knowledge to move you projects ahead.Think what a businessman can achieve by networking and negotiation. It is the same with programming: you can know the language but there are many concepts in the programming world which define our jobs. You will eventually stumble upon relational databases, data transfer formats, background processing queues, virtualization solutions and many more.The more time passes, the more sophisticated our solutions become and the more legacy software we inherit when starting to learn programming.That is why it may feel so overwhelming at first.Learning programming is a long-term project that requires time and effort, but it will prove very exciting and rewarding in the end.So if you feel like a career in Python programming is something you’d like to pursue, then try it out, sign up for the courses, read the books, and enjoy your time.Follow our Facebook page to keep an eye for any open events we may organise — you rarely get a better opportunity to learn than when having someone guide you in a workshop or a devtalk.