Last week I took three days off to attend my graduation ceremony. It turns out that the project I’m currently assigned to isn’t making any milestones during that time. When I came back, everybody seemed so stressed out. We were already almost three weeks overdue and the pressure was eating everybody’s nerves.
This brings out a question: Where have we taken the wrong turn?
Possibility #1:
We did not take into account the absence of our System Analyst during the first two weeks of the design phase due to an illness. From the staff’s perspective, the staff was forced to continue development with very limited manpower. With only three team members at the time (one Project Manager, one System Analyst, and one Programmer), the aftermath was quite horrible. The one-and-only Programmer was given the responsibility of taking over system analysis, while he still had to do the prototyping.
Possibility #2:
The programmers assigned to this deadline-infested project is not suitable. My senior had joined not sooner than a month before me, and I was a complete noob about Java itself. Even now we are still struggling to comprehend the framework as we work, and many of the mistakes we made are actually simple and silly ones. Our performance is still way below standard, and we have a long way to go before we can work effectively using the new framework.
Possibility #3:
This project uses a new framework. Although not entirely different than the old one, it still has quite a few major differences. This made the task of building the project a daunting one, as me and my co-workers could not ask any of the staff assigned to other projects about the framework itself. The fact that the framework itself is still quite messy adds up to the already overwhelming deadlines.
Possibility #4:
The entire team is not up to it — we might just not have the correct skills and abilities to do the task at hand. The project itself is considerably smaller and very much simpler than its “sister-project”, but still we were making very little progress.
Either way, the staff is subjected to lots of pressure from the beginning. But, that still does not justify the delays. We will have to find a way to speed up development and immediately submit the beta version for User Acceptance Tests. So, what can we do?
In my opinion, the one thing that must be done immediately is get the client to understand that we are currently in desperate need of more time. A person’s illness is not something we had planned, and it is certainly not in the project budget. Nevertheless, it happened, and something has got to be done about it.
On the other hand, the entire team must be brought up to speed. This is, in my personal opinion, something futile to pursue. We are noobs, and, hard as we try, we will not be up to speed within the allotted time. A more reasonable move would be to rewrite the entire framework from scratch, defining code standards and conventions along the way. This is necessary so that in the future any one of us can look into a piece of source code and precisely tell what it does. Using a framework was meant to reduce work, not add to it.
Another personal complain from me would be about the current style of programming. We use Java, and thus we use an entirely object-oriented framework. Everything is an object. But, in my opinion, the way the existing source code looks, we are doing everything so sloppy that it looks procedural. We need to take time and rewrite most of the application logic, break down large tasks into smaller methods wrapped inside a tidy class, and make the source code easier to read. Methods should be made as independent as possible. This way, we can probably use most of our source code for future projects with minimum modification.
Well, that’s enough chatter from me. I’m just a noob anyway. This is — let me emphasize this — just an opinion from an inexperienced programmer. Any constructive criticism is welcome, as well as new ideas.