To Be Done 3 (TBD3)

Project Details

Begun
Tue 09, Feb 2010
Completed
Thu 20, May 2010
Client
Center for Distributed Learning - CDL @ UCF
Languages
  • MySQL
  • (X)HTML
  • CSS
  • Python
  • Django

About the Project

To Be Done 3 (TBD3) is the next iteration of the Techrangers’ internally based work flow system. The primary function of the Techrangers team is to take Microsoft Word documents developed by university instructors for their online courses, and convert them into semantic and accessible XHTML documents. To do this, the team had created TBD some time ago, and then later released TBD2. This application is used as a tool for the team and other teams in the department to manage requests for document conversion.

For TBD3 we wanted to make things as easy as possible for everyone involved, so large amounts of effort went into reworking the process of how requests are created and assigned to people. Also we worked to integrate time tracking of work performed on every request, and integration with another system produced with the help of Advanced Systems that manages every single student, professor and class at the University of Central Florida.

Designing TBD3

Again, Chet Bortz worked as the primary designer for TBD3, producing an awesome layout for us to implement. I can not give him enough praise for this design. Later his work was continued by several other members of the team.

Developing TBD3

Just prior to beginning this project, the Techrangers team had begun to move away from PHP, and instead began using Django. Django is a Python based MVC (Model, View, Controller - though for Django it is actually a MVT: Model, View, Template) web framework. In any event, I’d had little opportunity to learn either Python or any bit of the Django framework before development began. Again, I seem to enjoy learning under fire. After a slow start, things finally clicked, and then began taking off.

Shortly into the development process, I became the senior developer on the team, and had to start managing the other 4 people working on the project with me. None of them were as knowledgeable as me about programming in general, or the Django framework itself, so I had to help teach them, and assign them tasks suitable to their skill levels. At times when it was important that they learn a concept we would work at Pair Programming. This is a pretty effective technique of sharing knowledge between a knowledgeable programmer and one learning. It also is excellent when working with two skilled programmers, as serves as an excellent way of bouncing ideas of each other.

Even while managing the rest of the team working on the project, I was responsible for developing the major features and writing all the more complex code to handle AJAX requests, dealing with any bugs that may appear, and all the other details needed to make the progress on development.

Thoughts on Python and Django

After working on this project, I feel that Python itself is a much improved language over PHP. It seems much cleaner, sensible, and more powerful. Additionally, the Django framework is powerful, customizable, extendible, and doesn’t get in the way. It definitely reduces the amount of code that needs to be written to get basic functionality, and being that it follows the MVT development process, the code is sensibly separated and it becomes easy to find what you are looking for.