Simon Griffee

Notes Introducing Python as a Programming Language in a Company

5 July 2013 · 4 minute read

My notes from P. Büchelr’s presentation at EuroPython 2013.

Car analogy - people who go to BMW will get different quality than Fiat. Same with software, but not appreciated.

Right mix of people important. Pointless to have lots of all-stars ‘cause they will all have their own idea of how it should be done.

Why Python? Too many languages = uncomfortably hot. Python is platform independent, has big community, good traction/adoption/future plans, good learning curve

  1. Simple and readable
  2. Versatile and platform agnostic
  3. Can be used for web and on client
  4. Also a philosophy - Zen of Python

How to implement Python? How to manage risks?

  1. If you take a decision, implement it quickly
  2. People learn only with real challenges
  3. Innovation not the same as research. As entrepreneur you must innovate, not research.
  4. Can’t afford to spend much money on not-financed activities

Choose project and do it with Python

  1. Project should not be critical
  2. Not be too small (at least 1 man-year)
  3. Should not contain complex technical challenges
  4. Should not contain complex business logic
  5. Should not be in a risky domain
  6. Should use easy to use framework (web2py)
  7. Should be assigned to a specific team, without people who are against the project, with mix of first-movers and conservatives
  8. Primary goal should still be to finish the project with a profit

Problems

Mostly went surprisingly smoothly! Consider the following:

  1. Python is not Java!! def my_function() != public int myFunction() Do code reviews! Especially when devs used Java or C# before. Developers coming from VB have less projects.
  2. Allow refactoring - give your team the time to make their first project perfect
  3. Enforce refactoring - force your team to make the first project perfect
  4. Be patient - do not forget that it is new for most devs
  5. Be strict - you decided to risk implementing the project in a new language, stick to your decision
  6. Python is agile, use this - with python debug cycle is very quick, use this i.e. in sprint review
  7. Don’t interfere too much - let your colleagues work on their own, so they learn!

Factors critical for decision about tech to use:

Tech and org factors (reasonable)

  1. Surrounding systems enforce specific tech
  2. Base systems used enforce particular tech i.e. Oracle
  3. IT Departments often proficient on one platform only
  4. Contracts with vendors or suppliers enforce given tech
  5. High investments required to change

Human Factors (personal)

  1. IT Departments often reluctant to change their systems even when outdated or try something new (consider the type of personality who becomes sys admin)
  2. Management hear saying (we MUST have SharePoint because it will solve all our problems as my friend told me on golf course)
  3. Internal Politics (we decided that XYZ is the best architecture, we cannot change now)
  4. Quasi-religious beliefs or important decision makers or influential people (there is no better sport than to provoke a dev by criticizing his language of choice)

The word ‘python’ won’t open doors, but the folowing may:

  1. Platform independent
  2. Very fast development cycle - You can even debug and change the code onsite during the sprint review!!
  3. Completely open source - not owned by Oracle unlike Java, MySQL, etc
  4. Mature
  5. Big community
  6. Do not force your choice of tech! Remember who is paying!

Fears/questions from customers:

  1. Fear of Vendor Lockin - most business people know .NET and Java and believe all else a niche
  2. Fear of Open Source - understandable, many dead open source projects
  3. Lend helping hand to sysadmin - maybe he used SQL Server and IIS since 199x! Suddenly it’s PostgreSQL and web2py. Help him and he will be a grateful promoter of your technology
  4. Most problems not technical! remind your customer and your team about this
Was it worth it?

:) Yes!

  1. Python is well established now
  2. At moment 4 different projects with Python
  3. Strategic decision: all individual web projects are done with web2py
  4. Wherever possible suggest using Python

Q: Tried sales pitch “lets do a prototype in Python first and see if it works” A: No, but it is a good idea

General notes:

What

Share