Tuesday, November 13, 2012

Project Idea #2 - Inventory tracking application

A local non-profit has a need to be able to accurately track it's inventory. They lend their assets out to people in the community and they would like to be able to easily view what is currently in their possession as well as what is loaned out and to whom the item is loaned to. In addition, they would like to store the borrowers personal information in order to ensure total accountability of all items. 

Currently, this process is managed on several excel spreadsheets. While the process works, it is very easy to lose track of items. The result is that many items are not returned and they are unable to track who last borrowed that item. 

The system will include a way for the agency to update their inventory, input and update all previous and new users personal information, as well as provide a reporting function that informs the user when an item has been out for a period of time set by the agency at the time of transaction. This will be a web based system that will allow all members of the agency to view their current inventory as well as have automated functions informing them of items past it's return date. 

This system, if used properly, will reduce the agency's losses as well as reduce man-hours spent tracking their inventory. 

Project Idea #1 - SIlent auction system for non-profit charity events

As I prepare to take on a volunteer programming project, my first thought is to create a system or product that would benefit a local non-profit agency. While there are many areas in my life where a new system could benefit me directly, I think it's important to reach out and help those who are unable to create, or pay for someone to create, a system for themselves. 

My mother works for a local non-profit agency called Parents And Children Together. They provide family and child services for those who are in need. On occasion, the agency hosts a silent auction where they auction donated items and services. These items are donated from various sources and are sold to the attendees of the silent auction. 

Currently, the agency uses multiple spreadsheets to track donated items and services as well as those who donated them. During the auction, bids are placed manually for each item with the bidder writing their bid down on a piece of paper. Once the auctioning closes, all papers are gathered and the winners are input into another spreadsheet which is then posted on the wall.

While the current system in place is functional, I believe that much of this can tracked much more efficiently. Creating a database to store donors, bidders, items, prices, and payments will give the agency a way to better access this information in a way that is helpful to all stakeholders. In addition, adding a front end system that would make data entry and reporting quicker and easier would greatly benefit the organization. If possible, creating an interface where bidders can easily enter their bids into a computer system would make the process much more streamlined and accurate. 

Most of this project is fairly "easy" in terms of creating the database to store the data. The challenge is creating an application that is easy for the agency to operate. The most difficult part of this system will be to create an efficient and non-intrusive/non-technical interface for bidders to enter their bids. 

Friday, November 2, 2012

The LoFi Approach

In the process of developing SaaS applications, we must always consider the end users experience. In fact, the user interface (UI) is the most important aspect when it comes to the usability of the application. Many times, we as programmers, are quick to think of the backend design of the application with little thought, in the initial planning phases, on the UI aspect of the design. 

The textbook "Engineering Long-Lasting Software" discusses behavior driven design (BDD) through the use of user stories. The concept is to design the application based on the users explanation of their processes and what they would like to see in the developed product. This process is implemented before and during development to reduce the chances of miscommunication. 

A critical element in the BDD process is to first identify what the customer expects to see in the application. In my personal experience, I have always done complex mock-ups and prototypes of software to present to the customer. These "prototypes" were always coded (in the simplest means possible). According to the text, this is overkill since: 

"Building software prototypes of UI can intimidate stakeholders from suggesting improvements to the UI. That is, software prototypes have just the opposite characteristics of what we need at this early point of the design."

Instead of these complex prototypes, we should take the "LoFi" approach. This approach involves paper-and-pencil mockup drawings of the UI. This approach is much less "permanent" and allows the customer to feel more comfortable with suggesting changes and modifying the application to meet their needs. In addition, this prevents programmers from wasting man-hours on developing prototypes that, in all likelihood, will be heavily modified or even discarded. 

This is a huge revelation for me as it is a practical approach toward developing a product. It's really a win-win situation for both the programmer as well as the customer. I'll definitely try to use this approach with my next project. That is, if my supervisors can get over their need to have everything "pretty and presentable".