There are concepts that seem to be obvious when you read them in a book. But when you try to practically perform them in the real world, you see the many details that you did not notice before. Software engineering is one area in which this happens a lot. Most of the topics look very basic and you think by yourself that these are what we do naturally. But if an institute is not really careful, they will soon find out that routines have gone out of control. Divisions start to short-cut the procedures to get faster results. So the necessary details needed for the intended perfection of final product or service are not achieved. And if an assessment is performed, everyone is sure they ‘almost’ did all the procedures precisely.
CMMI, from my point of view, is the key to solving this problem. If this model is used it focuses on identifying processes, refining them and then keeps tuning them and revising them over time. This way you can expect to reach your standards after a time, instead of wildly applying different software engineering methods.
During my Software Project Management course with Dr. Mili, me and my two other teammates Jason and Shiva did a presentation on the CMMI topic. This was one of the many topics covered in the course, some of them by students in the form of presentations. I had already taken this course during my undergrad, but my short work experience showed me how important it is to know these things. From my point of view, this course is one of the things that distinguishes a manager from a developer. Also knowing topics covered in this course enables you to talk to higher management fluently.
Anyways, we used a Subversion repository for revision control. It was not very efficient in terms of conflict resolution because of the fact that we could not use diff on powerpoint files. But using subversion was definitely advantageous since we could update each other without sending messy emails with huge attachments.