I am in the beginning phases of familiarising myself with an internal project at my company, and what I saw really shocked me. It certainly isn’t your typical “Student Project”; in fact, it would probably fail the more advanced courses.
In some sense, I feel quite disillusioned: surely what I have learnt (and in most cases, taught) in University would see some application in the real world. However, it seems that what I have learnt in uni is “How to do it Right“. In many real-world projects, including this one, the focus is on “Getting it Done“.
The project I am current assigned to is an excellent example.
The System
The System is a relatively featureful Time Tracking System. Employees log in, log the number of hours they worked on a specific project, and log out. Yet for something this simple, the System itself is broken is more than 1 way:
There is a list of “projects” on the left, which Employees can click to add a particular project to the current week’s timesheet. However, “projects” can also be sorted into “categories” and “clients”. Since the list control treats every single item as an item, Employees were able to add “categories” and “clients” as projects as well. While not exactly a critical issue, it is obvious that this is not the intended behaviour of the System.
Another problem was the “comments” mechanism that was built into the system. Aside from entering in the number of hours worked (into a textfield, no less), a small input area is overlayed next to it, allowing the Employee to enter in a small comment about that particular entry. However, the Javascript involved is strictly IE6 only. Meaning, it broke on all the other browsers that employees wanted to use.
Lets Be Realistic
This is not the first time I have experienced this “mentality” in my company. When estimating deadlines for a project, it is done with the intention of keeping cost low (cost being calculated as a rate by the hour). Thus, the mindset of the programmer is always to “get it done as soon as possible”. Is this what you’d call “Agile Programming”? Or is this just irresponsible coding?
Or perhaps it is simply impossible to “do it right” in the real world.