Recently I was asked to make a guest post on the Canadian students MSDN blog about my Imagine Cup experience. The tone is a bit off as I was initially preparing the post for my blog and had to tone it down. In retrospect, I also totally failed to make the intro not awkward. You can find the original post here: http://blogs.msdn.com/b/cdnstudents/archive/2014/06/02/how-the-imagine-cup-changed-my-life-and-touched-others.aspx.
“You’re not declaring it as a global variable, which is why you can’t access it from your main class.” I said to a pretty girl. She switched to another tab on her IDE and started typing up some short methods. “Ah I see, so if I make a public method to return foo, I can use it in my main constructor?” “That’s right.” We spent about another half-hour going through her code before I had to leave for class. “Say, are you free tonight? You know… to help me with some code?” I thought about it for a moment. “Yeah, sure.”
How the Imagine Cup Changed my Life and Touched Others
No one I knew, certainly not myself, believed that I’d actually end up winning. I’m quite honestly surprised that I was able to complete the project at all. Despite the positive outcome, the brunt of the Imagine Cup’s magic had its effects on me during the course of the competition. Not only did it give me a huge boost in terms of technical skills and employability, but it even convinced me to change my field of study.
The project I submitted was titled Mass Assaying Relaying Inquiring Survey Apparatus, or MARISA. It’s essentially a framework that permits various sensors (such as cameras, microphones, Kinects, etc.) to collect data from a disaster zone (i.e. tsunami or earthquake) and relay it to the cloud, where algorithms comb through the data and delegate optimized tasks to rescue authorities. It’s an ambitious project no doubt, but right now it’s still just a Kinect doing cool tricks with some algorithms.
I entered this in the World Citizenship category. While the project had some crossover with the Innovation category, after scrutinizing the judging criteria, I ultimately felt that it would have more success under World Citizenship. For those of you not familiar with the Imagine Cup, World Citizenship is one of the three major categories. The goal is to make the world a better place by tackling a social or environmental issue of your choosing; mine being casualties from natural disasters.
The idea for the project really came out of the blue. I was taking a walk at night when I suddenly starting thinking about the scouters from Dragon Ball Z. Basically, they’re nifty eyewear type devices that permit you to sense details about people around you. Incidentally, a few months back I had attended a Windows Phone Design workshop and one piece of advice I was given was that good UI/UX designers often base their concepts off of Hollywood movies such as Iron Man. I steeped these ideas together and ended up deciding that I wanted to create a futuristic system that scans you to save you.
The whole journey started 2 years ago, when I first entered CEGEP (for any non Quebeckers/Habs fans, CEGEP is Quebec’s equivalent to the last year of High School + first year of university in other parts of Canada). I wanted to compete in something, anything, but there was nothing that was really clicking for me. I tried Model UN conferences and rowing regattas, but they were too rigid in terms of structure and formalities. Browsing through online for competitions, I finally stumbled on one that in between offering large sums of cash, travel opportunities and being available in Quebec (many competitions don’t permit us to participate due to stringent local laws. From what I’ve been told, Microsoft takes extra steps to provide this opportunity in Quebec), allowed me to be ultra-creative and flexible in how I chose to compete (e.g. time and skill commitments).
Seeing as no one at my school had heard of the Imagine Cup, I set out to get the administration’s support in setting up a few teams and a club to orchestrate our endeavours. An alumnus and Microsoft Student Partner at Waterloo who was still subscribed to our school’s computer science club’s mailing list, heard about us and referred me to the MSP program. I applied and was accepted, which was pretty awesome. Several months passed by and some individuals had made cool projects.By the end of the yearthough, many Imagine Cup competitors at my school and I were feeling discouraged. How could we possibly compete? All the entries that we read about sounded truly phenomenal. I probably couldn’t code myself out of a paper bag either. The deadline flew by and many of us hadn’t so much as an idea of what we wanted to do.
Being an MSP started changing things however. Considering that the position requires teaching people how to make apps, I inadvertently ended up internalizing a few more C# snippets than I had anticipated. Within a couple of weeks, I was as fluent in C# as I was in French. I released a few relatively simple apps in order to learn, but I entered them all for Developer Movement and within weeks, there was a brand new Nokia Lumia 820 waiting on my doorstep.
Next year I vowed to submit something to the Imagine Cup regardless of my skill level, or whether or not I got to find a good teammate. I still wasn’t much of a coder, but I was going to learn on my way. Initially I couldn’t even figure out how add the Kinect and OpenCV .dlls to my project and compile it under x64, but I kept at it, asking questions onlinewhen I couldn’t figure something (MSDN being quite useful and to an extent, StackOverflow) and inching forward one semicolon at a time.
When I won, everyone was both surprised and ecstatic. After last year, no one really expected anyone to have made headway in any Imagine Cup projects. My victory had reinvigorated many students and programming suddenly became trendy. People I had never talked to started coming to me asking how they could learn to code, students in commerce or arts and even teachers! It seems like this was a secret desire that many had but could not manifest.
The biggest complaint seemed to be that no one understood how any of the code they were learning translated into real programs. The lucky few who were privy to a programming course only knew how to make console apps in Java (and couldn’t export them from the IDE either). Using my brilliant MSP skills, I showed to how to make a simple Windows Phone app. There was still a challenge left for the Imagine Cup, the Windows Phone challenge, so I organized a hackathon where 30+ students got together for 24 hours to make and submit apps. Needless to say, everyone had an amazing experience.
All in all, the Imagine Cup has given me the confidence I needed to go out and write my own programs from scratch. I never had a formal computer science education, but I’m coding everyday now and churning out more lines and less compilation errors than my counterparts studying software engineering in university. I was also planning on going into medicine, but I’ve now decided to study computer science with a bio minor instead.
I’ve also become a lot more employable and local companies have been seeking my services. Recently, an eyewear shop in Belgium contracted me to develop a solution that would allow clients to use a Kinect for Windows device to try on different glasses virtually. Of course they had many others to choose from, but they favored me when I told them I was an Imagine Cup winner for Canada!
What’s next for me? I’m still working on MARISA. I’m going to bring it to life one day, even if I don’t end up going to the finals. I started leveraging the skills I accrued developing MARISA to work on autonomous drone avionics. The club I founded at my school to compete in the Imagine Cup has long expanded its horizons and has now taught nearly a hundred students how to code. Finally, I’m starting to think of cool ideas for next year’s Imagine Cup!
My suggestions and advice for anyone interested in competing next year:
- Compete in the Imagine Cup. Compete in the Imagine Cup. Compete in the Imagine Cup, I can’t say this enough. If you go through and actually submit a project (or maybe more than one), you’ll come out with so much just for trying. You’ll have a project for your portfolio, which most young programmers DON’T have. You’ll learn how to collaboratively design software with TFS or Git(hub), which a surprising number of students lack as a skill. You’ll learn how to beget a creation completely by yourself, without instructions from a professor. Imagine yourself in the shoes of a recruiter or a company. Who would you rather pick? A student with the aforementioned experience or one of the many others who are sitting and twiddling their thumbs? Furthermore, you underestimate your chances of winning. By signing up, you’re already ahead of countless individuals who are still thinking about it. By writing your first line of code, you’re already ahead of the countless individuals who have only signed up. By completing your first prototype, you’re already amongst the top competitors in your country. If you’re Canadian, there’s no doubt you’ve heard this Gretzky quote already, but it couldn’t be truer for a competition such as the Imagine Cup: “You miss 100% of the shots you don’t take.”
- Get teammates. Perhaps you’re thinking about doing the project alone, either because you envision winning a bigger share of the prize (granted you make it that far) and/or because you want to do everything your way. Chances are, that unless you have rock solid determination and a very diverse skillset, you won’t make it to the top. Much of the project will involve things that are not necessarily code and there is probably at least one thing you won’t excel at. Trying to complete different parts of the project alone will bring your progress down to a crawl. Maybe you have a friend you’d like to work with, but she or he doesn’t know how to code. That’s great, teach them how. Anyway, it’s a lot more fun. (Note: there are some people that may indeed excel on their own, if that’s the case with you, then it may in fact be more suitable for you to work alone. If the issue is that you can’t find anyone to work with, try searching online. The rules actually permit you to work with people outside of your school and even your country!)
- Don’t be deterred by the competition put up by your fellow Imagine Cup contestants. Some competitors are doing research for their PhD thesis. Others are in med school. Certain individuals will have been coding since they were 12 or 13 and have a decade of experience. A few teams have even founded their own start-ups. Yet many of the Imagine Cup finalists and winners are high school students (I’d technically be included in this category). Every participant is unique and has their own set of skills in which they are proficient at, which they can leverage to create the ultimate project. Age and experience is no substitute for initiative and motivation, just as genes are no substitute for hard work and determination. To quote Gretzky again:“When I was 5 and playing against 11-year-olds, who were bigger, stronger, faster, I just had to figure out a way to play with them.” Out of all the guidance I can offer, this has absolutely got to be the most important.(I’d really like to see more pre-university/early university students next year.)
- Don’t heed the naysayers. If it doesn’t exist, be the first.
- Compete in the Challenges, in addition to the actually competition. This year, there was the Pitch Video, Blueprint & UI/UX design Challenges. When I was completing my proposal and video presentation for the final submission, I was able to recycle a lot of the stuff I wrote for the Blueprint Challenge (which I received an Honorable Mention for, but didn’t win). This was no coincidence. The Blueprint Challenge is more or less the precursor to the project proposal and the Pitch Video Challenge is the same for the video presentation. The initial blueprint I made guided my design for the entirety of the contest and I still refer to it when I discuss my project with interested parties. And who knows, you might just win a nice chunk of pocket change in the process.
- Get support. You’d be surprised by how much your professors, parents and peers know. Even if their expertise isn’t computer science or software engineering, they may have the chops in maths, sciences, business or arts to address certain aspects of your project. You can also bounce ideas off them and get insights on your project that you wouldn’t had you not vocalized. Although the technical component is obviously stressed, the Imagine Cup is actually a holistic competition. At least 50% of the judging criteria is based is on things that are not necessarily related to code, e.g. artistic design, impact, business and marketing strategy, user experience and the innovativeness of your concept. My own mentor didn’t know how to code (and she’s actually younger than me), but she was a great help with other things such as logistics and showing me how to sell myself and the project.
- Follow the criteria and guidelines for your category to the pixel. You can make the best ukulele simulator (Kinect instruments anyone?) but if it doesn’t specifically address any of the points stipulated in the regulations, you’ll lose out to a lesser project (tsk… banjo simulator). This reflects the real world, where you’ll have to sell your ideas and projects to co-founders, parents, investors, consumers, etc. I was fortunate to come across this advice before submitting my entry and no doubt, it contributed to its success.
- Finally, don’t expect to win. Don’t get disappointed if you don’t win. But do your project to win. Put your all into it. Simply put, the person or people who are going to get the prize are those who want to win the most. Even if you’re not looking to win, do your project to win so that you achieve the best result.
All the best and hope to see you compete next year!