In less than two working days we re-wrote the Coopers’ business-critical desktop application as a web application.
Almost ten years ago, for my undergraduate thesis, I wrote an inventory management and point-of-sale application for the Music Coop. It was written as a Mac desktop application, and at that time the direction of Mac development was unclear. So the app was written in Java, which Apple has since waged war against. Long story short: modern Intel Macs cannot compile native applications from Java.
To keep costs low and solve the problem quickly, I catered to my strengths. I re-wrote the whole thing as a Django based web application. The database model remained the same, but the entire codebase was ported to python and Django. For fast-paced UI development, as always, I used Bootstrap.
The application was finished and ready for deployment in just over 12 working hours.
Why was this project so efficient?
1. Design
Design frameworks and pre-designed templates make development fast… until we get picky about design. It’s not that it’s always bad to invest in design, but we should be very conscious about when we do. Most of the time projects are over-designed, and it’s expensive.
2. Scope
The scope of this project was defined by the current application, so it was pin-point accurate. There were no requirements gathering and there was no scope creep.
This took the bulk of work out of the project and allowed super-fast completion. It’s important to note, however, that the requirements gathering process is hugely valuable in and of itself.
3. Good Delegation
John and Trina, the owners of the Music Coop, smartly managed this project. They were aware of their technical limitations and the answer to each of the questions I asked along the way was “whatever you think is best”. They trusted me and they are more than satisfied with the resulting product.
Can other projects be as efficient?
Probably not. Requirements gathering is important and should not be rushed. The reason this project went so smoothly is that I’d worked at the Music Coop for many years and I know exactly how they run this part of their business. Any good software developer should make the effort to learn about the problem they are working to solve, and it takes time. I think, though, that this is the most important investment in any custom software project.