So ya wanna work for Google?: How to build a search engine

Last updated on: Fri Mar 2 17:30:48 GMT-8 2007

Disclaimer: I'm not affiliated with with Google, or any internet searching company. The title of the page is just meant to draw your attention. Guess I got it :-D

This page is meant to assist students in planning a course/career path in search engine development and research while at SoC. Following the highlights here would also help you to secure a research project with one of the PIs (including myself) who work in information retrieval (IR) related fields. I got the idea of writing this page after I heard that Google will set up a research office here in Singapore. I noticed that there are students who are interested in this opportunity but have not really planned out how they might go about it. Here's my informal advice (again, my personal views, not the ones reflected by my employers. Also, note that I teach and research in this field so I have a vested interest in promoting students to try these avenues. Consider it a slightly shameful self-plug). There are many different paths to such companies, but I'm only writing about the routes that I know. Caveat emptor.

Undergraduates: If you're serious about trying to get a job in the search engine development, you should consider taking our Hypermedia course as soon as possible. This teaches you the basic, underlying technologies for the web (which I think talented undergraduates may already be largely aware of anyways). Search Engine companies need talented engineers, so you should always consider doing multi-person software engineering projects. Being a good coder by yourself doesn't prove to any recruiter that you can play well with a group. To promote your coding skills, and show that you can produce efficient and performance-oriented code, you'll need to know C and UNIX/Linux development skills (like shell basics, file redirection, and standard unix utilities). You can participate in competitive programming as well to hone these skills, in the Competitive Programming course or as part of our local IOI/ACM programming team. Learn emacs/vi for editing, cvs/subversion for source code revision. Write your own home page, but don't use a CMS or other tool to create it, use a text editor and learn HTML/CSS yourself. It also certainly doesn't hurt to know more about how web servers work by running your own (apache/iis) and learning languages that support web development: perl, php, ruby, javascript.

If you are interested doing research (not just coding), you have to go farther than this. If you are just starting out in SoC, I would recommend taking up the special programme in Information Retrieval SIG. Later undergraduates who qualify can consider doing a UROP/HYP in a related area to information retrieval. For advanced undergraduates, I recommend the following coursework (I'm only listing the final courses, you'll have to trace through the prerequisite tree).

Students doing projects might also be interested in my advice on HYP/UROP grading.
Min-Yen Kan <kanmy@comp.nus.edu.sg>
Created on: Mon Apr 21 18:25:47 2003 | Version: 1.0 | Last modified: Fri Mar 2 18:09:38 2007