Before diving into development, please take a minute to check if you have all the necessary tools and skills to get started. You should be familiar with the following:
- Unix environment (GNU/Linux, OS X, etc)
- Git version control system: committing, pushing, pulling, branching
- Python programming language
- Django framework
If you don’t know yet any of these, please take some time to read about, understand and practise the tools.
Unix systems are so far the most developer-friendly environments. If you don’t have a Unix system installed on your machine, try out Ubuntu. It is a free operating system with constant updates, friendly X Window System and comes with Python pre-installed. From the developer’s perspective you should be comfortable using a terminal. Theoretically is it possible to stick with Windows OS, though none or very little assistance will be provided for OS specific issues.
If you have never heard of git, go ahead and read the first 3 chapters of Pro Git book. On the same page you can find cheatsheets, video lessons and a reference manual.
Please be sure you speak fluent Python, as it is the main language Systers Portal is written in. Essentially you should know how to invoke Python interpreter, manipulate numbers, strings, lists, tuples, dictionaries, sets, use control flow tools (if, for, break, continue, pass), I/O operations, errors and exceptions, classes, inheritance. It is a plus if you know about decorators, regular expressions, generators, iterators.
Django is one of the most popular Python web framework. Django official website contains pretty detailed documentation. At first try out the tutorial and build a small app. After you feel confident about Django, scroll through Systers Portal codebase to check your understanding. If some parts seem complicated, go back to the documentation to focus on a specific topic or layer.
“Untested code is broken code”, that’s why we try to write unittests for every new functionality. Testing helps us validate the functionality we already have and check whether the new code is implemented correctly. For that we use the Django unittest module. There are plenty of good resource on unittesting, but you can start with Django testing.