Technology

Write Servers Not Websites - How to Start Learning Python

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?

What is backend development?

Why is backend development called so?If it is not obvious to you yet, computer applications have two sides:

  • The one that you see.
  • The one you do not.

In the case of a web page, what you see consists of HTML, CSS and JavaScript files that your web browser (e.g. Google Chrome) reads and presents to you on the display.But where do these files come from, and how does it happen that you can get them just by typing some words in the address bar; where does the data that is displayed dynamically come from?It comes from the backend — in this example, a web server. Front/backend terminology does not just apply to websites. Think of mobile phone applications — it’s the same — a smartphone app can display data that is stored somewhere online. Consider Gmail on mobile: it pulls emails from the Internet and displays them, or lets you compose messages and send them to Google backend from where the addressee downloads them.You might think that there is not much space for you in the web development agencies as a programmer if you are not into design, animations, layouts, media, typography and so on, but there is. And that is because there is more to web development than just the visual part of products.What am I responsible for in our team?I provide the logic that cannot or should not be put in the frontend. When designing a web page, my colleagues might use fake data or mock things up during the development process but, after a while, we have to provide a program that accomplishes these functionalities for real.

Backend vs. frontend development

[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:

  • Frontend developers will have to know JavaScript and its derivatives (transpilers everywhere...) to build anything for the browser.
  • As a backend developer, you will use different programs than the frontend guys because your typical tasks deal with other class of problems, be it data storage or processing, cyclic activities, hardware interaction, external services integration and so on.

To begin working on backend development, you need to know at least one programming language (such as Python) and install three free programs: a language interpreter, text editor, and a dependencies management program for your language of choice.If you were to start frontend development, you would have to learn two presentation layer languages (HTML and CSS), one programming language (JavaScript), have minimally one package dependency resolver program (npm) and of course a web browser to present the results and a text editor to write the code in.

Why should you learn Python?

Before you embark on your journey as a Python programmer, you need to learn the most important lesson:

The only way to verify if you are a good fit for a backend job is by trying to write code by yourself.

You can read books and websites, but this will neither get you far nor give you the idea what this job is about, let alone whether you’ll enjoy it.Again, there is really no such thing as the best language for everything, but some are just easier to learn. The first one I have encountered was Pascal which was advertised as a good choice for beginners but, compared to modern scripting languages, it is a rather poor choice.GitHut can give you a popularity estimate about open source projects on GitHub — the place for social code sharing for programmers.Bear in mind that programmers often use different technology at work and when they do something in their spare time. At the time of writing, the first three languages with most active repositories are JavaScript, Java and Python.We ruled out JavaScript as a frontend language, and Java is a compiled language, so our first pick would be Python.

What tools do you need?

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.

Learning Python the oldschool way

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.

Can I start learning Python online?

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.

Conclusions

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.

Read more

Project Manager’s guide to IT time tracking: the basics
How to adopt Management 3.0 at a software development company?