For awhile I have been looking for a good sample application in Python that I can use for training purposes. Majority of the sample applications available online cover certain topic like data structures or string manipulation, but so far I have not found one that has more holistic approach. For Basic Python Developer Training I would like to use a real-life application that covers various areas from the language syntax and structures, but can also teach good software development practices. There are minimum requirements for a Software Developer that I believe need to be taught in Basic Development Classes, and the projects used in such classes need to make sure that those minimum requirements are met.

For our new developers training I decided to use a simple Expense Reports application with very basic requirements:

  • I should be able to store receipts information into a file
  • The following information about the receipt should be stored
    • Date
    • Store
    • Amount
    • Tags
  • I should be able to generate a report for my expenses based on the following information
    • Date range
    • Store
    • Tags

My goal with this application is to teach junior developers few things:

  • Python Language Concepts like data types, control structures etc. as well as a bit more complex concepts like data structures, data manipulation, data conversion, file input and output and so on
  • Code Maintainability Practices like naming conventions, comments and code documentation, modularity etc.
  • Basic Application Design including requirements analysis and clarification
  • Basic User Experience concepts like UI designs, user prompts, input feedback, output formatting etc.
  • Application Reliability including error and exception handling
  • Testing that includes unit and functional testing
  • Troubleshooting that includes debugging and logging
  • Interoperability for interactions with other applications
  • Delivery including packaging and distribution

I have started a Python Expenses Sample Github Project for the application, where I will check-in the code from the weekly classes as well as instructions how to use those.