Getting Along with Python

Keep learning

There are a huge number of topics this book doesn’t cover which could be important to your projects. Find out what you need to learn and work on it. Here are some ideas.

Become self-sufficient.

  • Learn how to look up technical terms you don’t understand.
  • Learn to answer your own questions with relevant docs.
  • Learn to answer your own questions by reading code.
  • Conceive, finish, and publish one simple project without getting help from anyone else.

Learn the command line.

  • Learn to use man pages.
  • Learn basic shell commands.
  • Learn how to combine shell commands with pipes and redirection.
  • Learn to use a build tool like make.
  • Get good with a powerful, extensible text editor or IDE.
  • Configure your editor and/or shell to your tastes.
  • Learn new and better command-line tools.
  • Write and publish your own command-line tool.
  • Write and compile a simple “Hello World” program in C.

Get better at Python.

  • Write and read lots of code.
  • Learn Python syntax and standard library modules you don’t know yet.
  • Try out third-party Python libraries that help you do things you want to do.
  • Write lots of tests.
  • Troubleshoot and fix some bugs in other people’s code.
  • Reorganize or “refactor” some of your old code to make it clearer and more robust.
  • Port some programs so they can run on both older and newer versions of Python.
  • Learn to use features in newer Python versions.

Learn some ops tasks.

  • Learn to deploy a server-based app.
  • Learn to set up and administer a server (VPS, EC2, etc.)
  • Learn to set up and administer a database.
  • Learn how to use virtual machines and/or containers.
  • Learn how to use provisioning and configuration management systems to manage groups of servers.
  • Learn to make an OS-native package for a desktop or command-line app, so users don’t need to know about Python or pip to use it

Set up team servers.

Learn to stand these kinds of servers up and use them. Develop an awareness of available tools and how they compare and form your own informed opinions about them.

  • A source control server
  • A CI or build server
  • An issue tracker
  • A code review tool