blog / source / en_posts / 2012-07-12-regular-python-engineer.rst

Full commit

Regular Python Engineer Skills


This post is still in-progress. Please be patient and don't read it if you are lazy to re-read it when it's ready. When I'm finished, I will publish it on hacker news, reddits and so on, and if you are interested -- you will probably won't miss it.


On my current I was asked to write a document that would cover some basic knowledge areas for people who want to become regular python programmer, since there was often a situation when people were hided with comments "but still has lack of knowledge in XXX". So, based on that comments, I'll try to write that doc. I believe it's best to show it to community, otherwise it would be just a wase of time.

This document aims to cover different gaps that regular engineer might have, and ways to improve them in most common aspects. This document is incomplete and should be updated with missing common needs for regular python engineer.

Most of topics should cover lots of practical impact of typical python engineer's tasks (also some topics assume web and can be skipped if it’s not).



  • What is functional/integrational/unit-testing? Describe the difference, needs and common problems.
  • What are mocks? What’s they’re purpose? How do you use them?


Imagine you have function create_consumer from module that looks like this:

# module proj/consumer/

from proj.consumer.model import Consumer
from import send_welcome_email
from import add_company_employee

def create_consumer(email, password, company=None):
    consumer = Consumer(email, password)
    if company is not None:
        add_company_employee(company, consumer)


Write such unit-tests for this function that make sure:

  • consumer gets created
  • add_company_employee gets called when company is not None
  • send_welcome_email gets called with consumer as parameter

Clean Hypermedia API Design


  • Describe main REST principles and restrictions.
  • How would you implement flight ticket-ordering API?
  • Why would it be bad to implement API via POST /order_ticket/from/Kiev/to/London?


You need to design API for your bookmarks list. Each of your bookmarks has these fields:

  • id
  • title
  • url
  • tags
  • date_created
  • date_modified

Show how to list bookmarks. Add pagination, filtering by tags and date-range.

Deployment & Automation


Algorithms, complexity


Databases, indexes, query profiling