The purpose of this article is to train you to be a Python application developer.   This is not for the faint of heart.

In order to learn this and learn it well, it is important that we don’t automate these steps.  Why?  I believe in simplicity and understanding.  Until you get your hands dirty and have repeated something over and over again, you don’t truly know it.

The Program

For 45 minutes a day, or longer if you have it, we are going to run through every one of the steps below.

Goal . Until we can build an system to create and deploy a full fledged application in 1 hour from start to finish.

The Stack

  1. Web Server – Nginx
  2. Databases – PosGreSQL
  3. Web Frameworks – Django
  4. Source Control – Github
  5. Cloud Environment – Amazon’s Ec2

Tracking

In order to track your progress, it is going to be simple.  We are going to use a Google Form.

Skills

What are the important skills that a Python developer need to build?

  1. Application Deployment.  Automated deployment is perhaps one of of the most important aspects of good code development. We are going to deploy to Ec2 using Ubuntu.
  2. Sys Admin. You can’t deploy without sys-admin skills.
  3. Web Servers.  There are multiple servers we could use with advantages and disadvantages.  We are going to use NGINX for our setup.
  4. Databases.  There are a number of both SQL and NoSQL databases.  It is important to have  good understanding of which one you want to use, how to set up models in them, and how to configure the.  The 2 major databases frameworks we are going to look at are:
    1. MongoDB – for NoSQL.
    2. PosGreSQL – For SQL
  5. Web Frameworks.  There are multiple frameworks available.  In Python however, there are pretty much 2 options.  Django or Flask.  We are going to stick with Django here for a number of reasons, mostly being that it is the most robust.
  6. Application Testing.  Testing is critical to ensuring that changes don’t effect future changes.  We are going to keep it really simple here so we can set up some simple tests.
  7. Source Control. Keeping code versioned is perhaps one of the most important aspects of software development.  We are going to stay focused on Github.
  8. Networking.  It goes without saying, that you need to be able to move in the network very efficiently.  For our discussions, the primary skills that are needed are:
    • DNS Mapping
    • Firewall / Permissions
    • Running Daemons
  9. Security.  We will simply stick to SSL for now.

Leave a Reply