Why python?

Python is easier to learn in comparison to other languages(personal opinion). Best is to start learning Python from official documents: [https://wiki.python.org/moin/BeginnersGuide](Beginner's Guide to Python) is good to get started with. After the basics you can move on more advanced topics. You need to chose specialization like:

  • Web development
  • Game development
  • Artificial Intelligence
  • Data science

Why Python? It's easy and its designed to be simple and force programmers to write beautiful and well formatted code. Python has huge community and it's popularity is growing for several years.

According to Eric S. Raymond: Why Python?

This reflects another useful property of the language: it is compact--you can hold its entire feature set (and at least a concept index of its libraries) in your head.

Python for non programmers

Python is language which can be used not only by programmers but also by scientist and enthusiasts who like to solve different problems. As someone who want to be part of the new information era you need to understand and know at least coding basics. For me programming is going to be part of general knowledge for next generations. Something simple like being able to read.

Python could be the best choice for all people with non IT background who wants to touch programming and create their own programs. As a scientific language is a best choice of scientists, researchers and people who like to automate stuff. Many reasons can be said why python is better for first language:

  • Gentle learning curve - it's easy and intuitive
  • Simple syntax
  • The language force/teach programmers how to write beautiful and clever code
  • Big community
  • Many applications in different areas: biology, neuro-science, predictions, analysis, artificial intelligence, gaming
  • Huge set of libraries - you can find image editing, math, physics, statistics and much more
  • user-friendly language

First steps of learning python

In my opinion the best is to choose only one source for learning. A book, a course or Youtube channel. For example this book is perfect choice for people with 0 experience in programming:
Python Learning Material

After completing it you can think for something more advanced like:

Dive into Python

Tips for your first days of learning

Find what motivates you and ask yourself why do you want to learn it. What is your final goal:

  • write a program
  • understand how AI assistant is working
  • automate your current tasks(yes you can automate big part of your work related to computer - sending mails, reporting, messaging, technical analyses)

Motivation is your key which will help you in your first days when everything looks hard, boring and awful. Sometimes you will need to memorize a bunch of methods, functions, code styles, syntax. This can be rather discouraging. On the other hand if you have a big goal or a dream:

  • building an AI
  • helping someone to complete his job
  • making software which helps others
    You can stay up many late nights learning, coding and enjoying coding.

Another advice is to pick one area which is interest for you:

  • building mobile application
  • making game
  • website
  • data science
  • AI (artificial intelligence)

This will help you to focus on something feasible and realistic. If you want to cover to many areas you will end up confused and disappointed by the amount of information that you need to learn

Try to keep track on what you've learned and frequently refresh your memory and knowledge. This will help to orient better in the vast Python / Programming world. You can check these articles on this topic:

This is not mandatory but it will help you a lot. Think for this step as building a map. If you visit new place, new city it's better for you to have map which to show you the right way.

Learn basics step by step. Don't try to work on big projects with many different libraries, tons of code lines and advance techniques. Keep this for the time when you know what you are doing and best practices and design patterns.

Basic syntax is the first step in any programming language, otherwise it's hard to implement anything. Of course don't spend too much time on this. You can learn the basics while working on simple projects (working on your points of interest).

After the basics

Next steps, when you are confident in the language syntax, have good understanding of the basics, you can write programs from 0, are:

Work on open source projects and collaborate with other people. You can learn a lot from other's people code. See, analyze, understand, contribute. Contrary to popular belief programming is also a social job. You need to discuss problems, communicate requirements, share ideas. This may sound easy but it's not. You can have many different situation which require not only technical skills but also soft skills.

Master one area of interest. This is also the time when you need to focus more on your area of interest. And go deeper in it. For example if you choose artificial intelligence and neural networks you need to dive into:

  • Artificial Intelligence > Machine Learning > Deep Learning
  • Neural networks
    • Feedforward
    • Convolutional
    • Recurrent neural network
    • Modular

Chose one are of specialization and master it before switch to another one.

Work on your own projects. Once you have learned the concepts it's high time to move on your projects. Most probably you will need to consult references, documentation and look up for some tricks. Difference this time is that you will learn what you need and not because it's part of the language. You will have incentive to learn in order to solve your problem in better way

Resources

Official Documentation

Books

No programming experience:

Knowledge in other programming language:

Programming Books by Al Sweigart

Python eBooks (Free)

Courses

Python courses (Free)

Youtube channels

Beginners

  • Softhints - Here you can find interesting things about programming, software and how to improve your IT skills. Java and Python Programming tutorials, MySQL and SQL tips, Linux and Windows, Automation for beginners and advanced.
  • CS Dojo - Videos mostly about programming and computer science here.

Advanced

  • sentdex - Python Programming tutorials, going further than just the basics. Learn about machine learning, finance, data analysis, robotics, web development, game development and more.