What Every New Python/Django Web Developer Should Know in 3 Months

This is a collection of things I think any beginner web developer working on the Python/Django stack ought to know. This assumes zero knowledge in web development or programming to begin with.

  1. Web Related
    1. What is a GET and POST request
    2. 200/301/302/403/404/500 status codes
    3. What is a cookie and how is it used
    4. Learn how to search and read documentation
    5. Basic SEO knowledge
      1. Best book to read: The Art of SEO
  2. Frontend
    1. How a page is loaded in the browser (DOM)
    2. Working/basic knowledge of HTML/CSS/JS – You will learn this by osmosis
    3. What is AJAX
    4. What is HTML5
    5. Basic UX/UI understanding
      1. Best book to read: Don’t make me Think
  3. Python
    1. Write Fizzbuzz
    2. Read Learn Python the Hard Way then an intermediate book like Dive into Python or one of the O’Reilly series
  4. Django
    1. Do the tutorial project at djangoproject.com
    2. Read Definitive Guide to Django Development Done Right
    3. Be able to setup a new project from scratch using virtualenv locally with a skeletal folder structure and settings that caters to a production and development environment
    4. What a view function does
      1. GET/POST paradigm within a view function
    5. What a model class does
    6. What does a template do
      1. What is template inheritance
    7. Basic Regex and URLS
    8. How do urls, views, models and template relate with one another
    9. Difference between model forms and forms
      1. How does form validation occur
    10. How to write a test that tests the view functions, models and utility methods
    11. How to debug and find the source of a problem
  5. Database/Models
    1. How to model Foreignkey relations
    2. How to model M2M relations
    3. Basic data types
  6. Tools in your Employ
    1. iPython
    2. South
      1. How does a migration work
      2. How to do an initial migration
      3. How to migrate subsequent changes to a schema
      4. Trouble shoot migration conflicts
    3. Git
    4. IDE of choice, preferably VIM
    5. Firebug
    6. Fabric
  7. Processes
    1. Deployment process at your team. How it works, what git hooks are used for what purposes. What fabric scripts do what etc
    2. Git Flow
      1. How to add, commit, release, rollback, fix, merg and conflict management
  8. Soft Skills
    1. Communication with product owners
    2. Communication with colleagues
    3. Cultivating a Growth mindset
  9. Graduating Project!
    1. Create a one page Django project that will allow me to:
      1. View all the users on the project
      2. Edit the details of the users
      3. Create a new user
      4. Delete a user

A note on doing too much reading:

Oftentimes as a beginner, we’re overwhelmed by the amount of information we need to do something. The knee jerk reaction, a badge of the fine education doctrines what have been ingrained in us, is to read about the topic/subject. I find this hits a wall of diminishing returns quickly.

For the reading to be truly effective, you need a certain amount of wisdom to absorb it. This can only be done by reading backwards. What this means is that say you’re tasked to create a dashboard page from scratch. In your mind you’ll probably think something like: whoaaaa, I have on idea how to do this. I need to do some research! And then you try to do random reading at djangoproject or various books and then bite off more than you can chew. The human brain has a tendency to make things more complex than it really is. The right question you should be asking in your mind is: how do I first load a page and then present a form on this page to manipulate data? This will make your reading much more directed and effective.

Advertisements

9 thoughts on “What Every New Python/Django Web Developer Should Know in 3 Months

  1. Pingback: What evry new python/django developer should learn? | Techbie's Weblog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s