Finally got that damned capstone project done and bound. It was hard, let me tell you, but it could have been easier if I had known things would turn out the way it did, especially after acknowledging the huge fault I played during development. So for those of you who're just waiting a couple of months to start your capstone project development, let me share to you a few lessons I've learned along the way.
1) Get to know your team (if you have one) and get along
I don't think I need to explain the importance of getting along with your team, if you have one, during any project you're working together on. This dynamic either makes or brakes your output and as you're clamoring against time, fulfilling requirements and chasing teachers, you'll need all hands on deck. And maybe a few feet in the mix, too, while you're at it.
2) Have a good working relationship with your technical adviser
They may not be the best apple in the basket but a superior is a superior and ultimately, you'll need them to, if not help you technically, sign all your documents, help defend your case against the panel and just generally being the person you're with for each major step in the project. They make mistakes, I mean we all do, but always remember that they're professionals and even though it seems you've got more to put on the table than them, respect the fact that they've seen other teams go through the same thing you're going through over and over again, and that accounts for something. Better listen up.
3) Don't get over your head
Need I repeat the whole rant from my previous blog post? Suck it up and ask for help. Or just admit you have no idea what you're doing. It's alright, we're students. It's what we're supposed to do. Make so many different mistakes that when the times comes the same situation happens, we'll know exactly what to do to avoid that mistake... and make a new one in place of it. All I'm saying that a lot of things can go wrong if you think you're all that. Listen to your adviser, team mates and even solicit suggestions from your parents. Trust me, it helps battle the self-pity.
4) Stick to what you know. Now is a horrible time to experiment.
For those that're familiar, this is not a Startup Weekend. Yes, it's a controlled environment, yes, it has mentors and yes, it has time constraints but now is not the time to experiment. I repeat, now is not the time to experiment.
Your team mates are just as clueless as you and often times each of you already have an overwhelming task as it is. Why jeopardize that especially when you already have a set of deliverables due the next week? If you've planned this "new development process" ways before the start of the thesis period or if you're some super genius that can work out technical knots overnight, then fine, go right ahead. But if you're like me who just barely develops without a lot of professional help, then stick to languages and process that are comfortable to you. Chances are, all the advisers and panelists will want to you change up a heck of a lot of things in your project and if you're like me who just learned how to develop in a new language overnight, doing stuff on the get-go is not going to be easy.
5) Always plan in advance
Easier said than done, naturally and I think this tip can speak for itself. Having a timeline of when you can ideally get things done in the project will definitely help you plan for whatever sh*t is happening as you get each module checked. You might not follow that schedule as strictly but it would help a ton if whoever is in charge of the documentation takes note of all the important dates and what each person in the team is doing as the week progresses. I can't stress enough how following and having a schedule is so important, which leads us to the next tip...
6) Always reach your deadlines
Move mountains and seas to get the task due done. Do not ever miss a deadline. Not only does it take a chunk of your grade for that semester but it sets your previously planned schedule and gets everyone anxious which will spell disaster for your team. Always keep a level head and the morale up because you're going to need all that during revisions. Just don't ever miss a deadline.
7) Assign. Assign. Assign.
A good dynamic in the team, as previously mentioned, is good and knowing the strengths and weaknesses of each member is being better. Divide the workload and have someone assigned to tasks exclusively so you'll know immediately who to ask when matters arise. Strictly define whoever is in charge of a task and don't pass responsibilities around. If you have more than one programmer on the team, immediately define the module they are responsible with and plan excessively before actual development starts.
8) Prepare for the worst
This is more of a mental and emotional thing if you've done everything in the list thus far. Know that no matter how well you plan things, there will always be that wolf in the cornfield ready to rip your throats out while in the middle of development. An unexpected error, a undocumented change and even a loss of a team member. Don't let it rise your paranoia but let that fact be your best friend, keeping you on your toes and ready to adapt when the situation arises.
9) Document EVERYTHING
GitHub or BitBucket is godsend for developers. Commit any and all major changes into your repository, save all your layouts, setups and documentation on your development specs. Record all errors, write down all the features that needs to be done, everything. Most especially for the documentation that comes along with the program, do not ever lose past corrections. All those papers with "x" marks from the advisers? Yeah, keep those and never lose them.
Make backups for your source code, documentation, corrections, even the surveys or interviews you do, get both a hardcopy and softcopy version of all of them and bring them with you every time you need a module checked. It saves time, effort and frankly gives you more credibility in the eyes of your adviser and the panel.
10) Having a Printer and Laptop on you 24/7 helps
I lug mine around every time the person in charge of the documentation tells me to. Sometimes even when she doesn't tell me to. Students will claw, kick and sacrifice their first born to get to use the school's provided printer especially during checking so save yourself and the life of your future child and save up with your team for a printer, some ink, and stacks and stacks of scratch papers and bond papers. Always have a laptop ready and a USB with all your backed up data. I can't tell you how many times this tip saved us especially when we're chasing a deadline. It's well worth the investment,
I can't guarantee that all these tips are applicable to everyone going through a capstone project development as each school has a different process but I have a gut feeling that at least one of the ten in this list will be a life saver once you've followed them as you go along the development process. One more tip though, before you go and travel with the cavalry to graduation, is to sort yourself out before the start of everything. This is a draining process and you'll need all the emotional and mental support you can get to finish this. Pray to your god(s), if you have them, make-up with your parents/guardian; basically fix all unnecessary strains you have outside of the project. You'll need that energy for more important things. Like finishing that project.