The Application Design
Initial Development
As Flask is a micro-framework it has a vast number of extensions that allow you to add extra pieces of useful functionality into your web application. Here are a list of some of the extensions I have used:
- Flask-SQLAlchemy (provides better integration of SQLAlchemy (a Python DB Abstraction Layer))
- Flask-Login (provides user based logins and also deals with session management)
- Flask-Uploads (provides easier file upload functionality)
As the project started to take shape I was given some extra development resources that I would need to lead and give direction to so the project could progress.
Team Leading
Problem 1: Communication/Lack of Direction
This lack of direction was made much worse because I was mainly communicating via e-mail or Instant messaging. This ended up with a lot of back and forth and a lot of frustration on both sides.
After getting some guidance from my manager I decided to set up regular conference calls to actually talk to my teammates in Pune and this ironed out a lot of the issues and also freed up time to actually get some development done.
Problem 2: Python Experience/Development Guidelines
This lack of experience from my teammates was rather difficult to overcome and there were a lot of large code reviews early on explaining exactly why we do certain things, like string formatting for example:
print "This is my string with a variable: {}".format(my_variable)
print "This is my legacy string with a variable: %d" % my_variable
After doing a few of these code reviews and also talking to my team via the regular conference calls these issues soon ironed out. I also made it mandatory that all my team must run pylint code analysis before submitting for review. In future I will ensure that all my fellow developers have a style guideline or code analysis application like pylint from the start.
Problem 3: Code Review Turnaround/Time Difference
I started doing code reviews as soon as the team had them for me, this would mean I could get it reviewed and comments back to them to address in their morning before I got to work. I would then use evenings whilst they were offline to do my own development work.
This was only a small change but it made the team much more fluid and allowed us to get more tasks done sooner.
Conclusion
Cheers :)