I had been planning on writing up a big summary of my CS307 Software Engineering project. But after thinking about it for a bit, I'm not really sure what would be achieved by doing so. It would probably have just come off as complaining and whining, which is certainly not my intention. I loved the class, and thought it was incredibly valuable. In fact, I think it should be required of everyone who isn't going to grad school & planning on becoming a professor (and maybe even they should take it).
So, about the project. First, a bit of background: it was a client & two-tier server system, in this case for medical records. I was on Team A, the largest team (we ended up with 9 people). We divided into three sub-teams of 3 each: Client, Communications, Data. I volunteered to be the sub-team lead for Data. We also had a team leader, documentation manager, and development environment expert.
Now, as I see the project, it was a failure. We failed to complete the Regional Server (the second server tier) portion, and so we failed to meet the requirements. This failure was a result of the people involved in the project. As a team, I do not think that we were motivated to work on the project. And we never seemed to find that motivation. Consequently, we didn't work hard enough to try and get everything done. Furthermore, the problem was not one of which we were unaware. It was blatantly obvious that some members were not contributing their share. We were just unable to come up with a successful resolution to that problem.
The other big problem with the project was a lack of testing. The majority of the team was unfamiliar with developing using the platform and tools that we picked, and just didn't have any experience working on this type of problem. This let do a lot of bugs appearing, which testing could have uncovered earlier. But we didn't test early, and even at the end we did not test thoroughly. Hence the GUI crashing during our demonstration because of an invalid entry of a date, and hence the server responding with failures because the Event Log had filled up. We were using unit tests and regular builds, but having good process techniques is not enough if there are only 20 test cases (for a program that was in development for 10 weeks!), and those test cases don't test anything.
In the end, it didn't really matter. The project wasn't worth any of the grade; the paperwork, documentation, and presentation were the grade. So 5/9 people (including me) pulled off A's in the class without any problems. On the presentation day, we were awarded all the website awards (Best Organized, Best Aesthetics, Best Updated – Go SharePoint!) and the team awards (Best Conference Calls, Best Work Sharing – yes, it's a good idea to PAY ATTENTION TO PREVIOUS CALLS and address issues raised during the next calls). The Work Sharing award kind of left me scratching my head, because that was an area I felt we could have done better on. I guess we did a good job of dividing it up, and people did a good job of reporting about it – whether a task really got done or not. It also makes me wonder about who did what on the other teams…
Finally, I had some individual accomplishments. During the awards granting, my justification of our platform choices during the presentation was singled out and applauded for being, well, the only justification of platform choices from any group. On my team, I was voted the MVP (all other teams had pairs of people as their MVP's). And I got the A for the class (only the 3rd A for me in a CS class!).
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.