Based on my experiences and also being a half-student myself, I would like to share some thoughts with my student-friends who are under-taking their FYP.
Tip#1 Focus on The Specifications
I've discovered two schools of individuals - the Technologist and the Methodologist.
The Technologist will start-off by asking what technology should be used for their project i.e. Famous questions are "Is Java or .NET better?", "Should I use ASP.NET?", "J2ME or .NET Compact Framework?" and etc. I also often encounter technologists who want to cram as many technologies as possible into their FYP i.e. using COM+ and .NET Remoting plus some Web Services to spice things up.
In reality, the more the technology doesn't really mean the merrier. A lot of time will be lost in integrating these technologies. Learning them in-depth is already a pain. The objective of the FYP is usually to measure the maturity and understanding of software development - not just coding and knowing cool technologies.
"If you don't know why and what you are building, Tools and Fools don't make a difference."
The Methodologist on the other hand, places less emphasis on technology and focuses more on how to build or manage the development of the system - Famous questions are "Which methodology is better - RUP or XP?", "Should I use SDLC?", "How about OOAD?", "N-tier or Client/Server?" and etc. If a working product is not necessary to pass the course, methodologists usually score higher (due to the voluminous documentation that they produce).
Picking the right methodology can be a challenging tasks when it is a group project. All the team members must be in-sync and understand the chosen methodology before proceeding. New methodologies such as Extreme Programming (XP) that have not been taught or practiced by team members will be risky because of the learning curve.
Diagraming can also be a challenge where a lot of time will be wasted in debating whether the diagrams are drawn correctly (in the context of shapes and arrows) as opposed to the logic or flow that the diagram is trying to depict.
"It doesn't matter if it is this way or that way, if it works then it is a way."
My advice is to always focus on the requirements (or specifications). Some colleges provide a marking sheet to explain what will be scored. Examiners usually look at documentation rather than the system (they usually look at the screenshots). If I'm not mistaken, a working product does not really carry a heavy weightage on the marks.
I understand that we may be inclined to use the FYP as a platform to 'learn new things' but we should always remember not to get too excited over the freedom given to us. It is afterall a FYP and it carries marks. Therefore, you should pick the technology and methodology that we are most comfortable with.
"In the real world, we seldom can take our own sweet time to build the software we want. Eventhough we can, it will be difficult to sell it because all software are designed to satisfy the customer's needs - not ours."
Tip#2 - Define a Manageable Scope.
To some of us, FYP means "It's Time To RuMBLe!!!" With all that freedom to choose topics and do 'whatever we want', it is a good opportunity to flex our muscles. Well, defining a scope too large will often result in the project not finishing in time, lots of stress and lost of sleep. Also keep in mind that...
"The more you do, the more room for errors."
You need to carefully look at what you can build and decide on what you will build in the given project duration. Sizing and effort estimation are important project management skills. You can build a system with lots of modules but less in features or lost of features concentrated in a few modules. If you must impress the lecturers, try employing short release cycles (spiral model or iterative development).
Again remember, the FYP carries marks and affects your degree. You can learn whatever you want (less stressfully) outside of this. Therefore, define a scope that you can deliver and deliver it on time.
More tips coming up next ...
P.S. Need to makan already.
No comments:
Post a Comment