Sunday, April 27, 2014

The case for in-house projects

In order to graduate, every ICT student has to go through either an internship or an in-house project. This semester, for the first time, I am supervising two in-house (IHP) project students; I have only supervised internship students before.

Historically, most students prefer to go for an internship, for a variety of reasons:

  • "Internship at IBM" sounds so much cooler on your resume than "Did a project in school."
  • You get to experience an actual working environment and find out if you have what it takes to make it in the real world.
  • Job offers at the end of successful internships are not unheard of. Having a job lined up before you have even graduated is a big deal. Of course, you have to perform really well for that to happen, but still.
Consequently, most students choose to apply for internships and will only do an IHP if they don't get accepted (naturally, the best students usually get accepted). This means that the majority of students who do IHP's are either the demoralized internship rejects or those who have failed some modules and have to stay in school to complete their coursework requirement.

For these and other reasons, IHP's have a bad reputation as a consolation prize for losers who couldn't make it to internships. Many IHP students lack confidence in their own abilities and constantly ask their supervisors what to do, treating their project like yet another module assignment. Others cruise through the entire 3 months watching Youtube videos, playing computer games and taking 4-hour lunches. Is it any wonder that internship students tend to outscore IHP students by three or four grades, on average?

Screenshot of actual submitted draft Project Charter. Apparently, IHP's are not the only ones with a bad reputation.

Guess what? IHP's are no worse than internships. They are worth the same number of credit units, and you can learn as much in an IHP as an internship (if not more). In fact, I would argue that they are better than internships in many ways, but only if you make the most of it. Here's how.

1. Pick or propose a project that interests you

When considering whether to bid for an IHP, really think about whether the project interests you. Lots of proposed projects are all kinds of cool, like creating a system to help patients with their physiotherapy, or doing data analytics to identify at-risk students - these are projects with real applications, not just something mundane that helps a company eke out a bit more profit. Alternatively, most supervisors will allow you to propose an appropriate project, so you get to define what you're going to do. Therefore, you can pick or propose something that really interests you, and you really, really should.

To me, this is the main advantage of an IHP over an internship. If you go to an internship and you're told to do boring data entry every day, you're stuck with it. In IHP, you can do what you want to do, not what the company requires you to do.

Well, within reason. Listen to your supervisor's advice on the feasibility of your proposed project. It's your supervisor's job to make sure you don't bite off more than you can chew; you're not going to be able to make an MMORPG in 3 months, for instance. But don't immediately reject a project idea that you don't immediately know how to do, because you should also:

2. Challenge yourself

Unless you really want to sell T-shirts online or something, don't touch that e-Commerce website project with a 10-foot pole. In ICT, you have modules like Databases, Developing Web Applications and e-Commerce Application Development that teach you a lot about how to make an e-Commerce website, so why on earth would you want to make one for your IHP? You've already made several in your module assignments.

When evaluating IHP's, we lecturers do take degree of difficulty into account. If what you end up with is essentially the same as your module assignments with a new coat of paint, then you're not going to score. The only e-Commerce website projects that get an A have to be spectacular, with lots of features that weren't explicitly taught in class.

Here's an open secret: what you learn in ICT will probably become obsolete pretty quickly, because technology moves so rapidly that the factual knowledge you acquire may be replaced by something else entirely in a few years. In fact, the most valuable skill you will get from a polytechnic education should be the ability to learn new stuff quickly, and this is one of the things that we're evaluating in an IHP.

File:Challenge Accepted Rage Comic.png

So go ahead and learn a new programming language. Create that networked real-time mobile game app that puts Flappy Bird to shame. You've got 3 months to find out what you need to know. If other people can do it, why can't you? 

3. Do something you'll be proud to show off

Here's another advantage of IHP over internships: they generally don't have any issues with non-disclosure agreements. While "Internship at IBM" sounds good on the resume, it's hard to distinguish yourself from all the other IBM interns. On the other hand, if you design and implement a cool new system, that's something you can show off to prospective employers.

Let me put it this way. Would you rather be the guy who says "I interned at IBM. I did a lot! I can't show you anything due to the NDA, but you can trust me, right?", or the candidate who says "I developed a mobile app to help colour blind people identify colours to help them in their daily lives - and here it is!"

"...and here is a Straits Times newspaper article with my picture on it. Any questions?"

On the flip side, don't be the one who says "I spent 3 months working full-time and all I made was a cookie-cutter e-Commerce website." Do something you can be proud of, and employers will be glad to hire someone who can achieve something remarkable on their own with limited supervision. 

4. Treat it like an internship

One of the reasons that internships tend to score better then IHP's is the fact that internship students are forced to follow the corporate culture. They have strict working hours, a dress code, deadlines and real-world constraints (like dealing with customers, which can be a special kind of hell). IHP's, on the other hand, are a lot less closely monitored. There is not much to keep you from playing games for half the day and take 3-hour lunches.

My advice is don't, just don't. Treat it like an internship. Come to school by, say, 9am, leave no earlier than 5pm, and put in a full day's work every day. Make schedules and give yourself short-term targets to aim for. Break your project down into features, map out how long each will take, add a buffer for contingencies, and stick to the schedule. If you need the database up and running by the end of the week, make sure it's up and running even if you have to work overtime. After all, that's how deadlines work in companies - you finish your work no matter what. If you expect to get grades similar to internships, then you have to hold yourself to similar standards (okay, maybe not the dress code part).

In many ways, sticking to a schedule is much more challenging in an IHP than in an internship. At a company, everyone there is acting professionally and doing work because if they don't, they get canned. During an IHP, you may be surrounded by friends playing 2048, showing you the latest trending Youtube video and inviting you to extended tea-breaks every day. The next thing you know, it's 4pm on Friday and all you've written is public static void main(String[] args){ }. Don't let that happen to you.

BTW, if you manage to finish the job that you planned to complete by Friday on Thursday, go ahead and goof off with a couple of hours of DOTA. Just be honest with yourself and don't give yourself an easy schedule.



An IHP is an uninterrupted 3 months where you get to work on a project full-time. If you're about to take on an IHP, think about the amount of work you produced last semester over all your modules. Even if you take into account the time you need to acquire new knowledge by yourself, your IHP should still have a scope that is about two or three modules' worth of final assignments combined. If your project could conceivably be done by a Year 2 student in a couple of weeks under supervision, you're not doing enough.

Like I said, this semester I have two IHP students. One of them is helping to create a GUI for an ICT common test timetabling system, which will help produce better timetables for all students in ICT. The other has the opportunity to create his own game, including gameplay logic, graphics and AI. Even though neither of them are top students in terms of GPA, I sincerely believe that as long as they take the above advice to heart, they have every chance of getting an A+ for their IHP. Not only that, they'd have completed projects that they would be proud to call their own.


Image sources:
http://en.wikipedia.org/wiki/File:Challenge_Accepted_Rage_Comic.png
http://www.np.edu.sg/home/news/archives/2013/oct_dec/Pages/20131202_3_ictapp.aspx

No comments:

Post a Comment