In which Wade takes the first steps towards finding a new career and
new life. Oh boy!
[Warning: Self-involved post - probably kinda boring.]
So, having spent the last 6 months procrastinating on the job front, the past few days have been quite fun. I've learned more than I ever wanted to about supposedly effective resume and cover-letter writing technqiues for the wonderful world of industry, and have a first resume and cover letter. Although I am relatively happy with the resume, I really don't feel happy with the cover letter, but I think that is mostly because I prefer to undersell rather than oversell (a trait that the cover-letter-writing guides all state must be inhibited).
Here are the first batch of jobs I will be applying to, tomorrow.
I do have something of a dilemma though. I'm not sure what the "best" way to apply for the jobs is. One possibility is to just use the google apply online page, which allows me to provide personal, educational and employment information, along with a resume and cover letter. I can than associate up to 5 job positions to this resume/cover-letter submission. However, this poses some problems:
I'd prefer to customize my cover letter for each of the positions, which suggests that I should submit separately for each position. But will this end up being a source of added bureacracy (and hence irritation) for the individuals responsible for processing the resumes? Do they prefer having multiple job listings associated with a single resume, or not, I wonder?
The cover-letter guides all emphasize that finding out exactly who is going to be reviewing the letter and resume, and using their name in the cover-letter salutation, is important. Personally, I don't really think it matters in this situation, but hey, what do I know about industry!? Maybe the resume processor is some weenie who gets offended if people don't call them by name. No use risking it, except I'm not sure how easy it is going to be to find out who is responsible for processing resumes. I'm going to do some phoning tomorrow and see what I find out.
Here is my resume (with personal info stripped to make stalking slightly more difficult). BTW, it looks much prettier in pdf than it does here :-)
SUMMARY OF QUALIFICATIONS
Research scientist and adjunct professor, with Ph.D. in Computing Science, specializing in software engineering and programming language implementation and optimization. Expert-level knowledge of C++ and Perl. Expert level knowledge of object-oriented design \& analysis. Significant practical experience with machine learning (AI, OCR, and data mining). Work best in a small team of passionate individuals working on truly challenging projects in which both personal initiative and significant collaboration are required.
AREAS OF EXPERTISE
- Programming Languages
- Language Research My research is focused on expressivity (how to say more with less), reliability (safety, maintainability, verifiability), and efficiency (compiler and runtime optimizations). Particular focus has been placed on meta-object protocols and reflection, language interoperability, multi-method dispatch, and aspect/component-oriented programming.
- Compilers and Virtual Machines: Have a strong background in compilers, and am an expert in virtual machine implementation and optimization. Have implemented the Java VM in C++, and taught an advanced graduate-level course on VM implementations for 6 years.
- Software Design
- Object-Oriented Design \& Analysis: I have 12 years of experience in program analysis, design, maintenance, and testing, including everything from many small-scale projects, and numerous medium and large-scale projects in multiple languages.
- Teaching: My undergraduate teaching duties over the past 6 years have been focused on object-oriented design and analysis, including the theoretical and practical aspects of design patterns, UML, and various design methodologies like RUP, CRC, XP, and OMT.
- Machine Learning
- AI: Have explored game theory and search space algorithm optimization in numerous contexts, including the implementation of AI for various games.
- OCR: I am the lead architect of an open-source project designed to provide a highly modular approach to optical character recognition. See http://www.corollarium.com/conjecture for details.
- Data Mining: Have substantial practical experience in the automated processing of web-pages and the extraction of heuristically identified information, including automated form instrumentation and web-page traversal.
- Additional Skills
- Mathematics: I have an interest in various areas of mathematics, especially those related to quantum mechanics (as it relates to quantum computing), complexity analysis (as it relates to algorithm complexity), and statistics (monte carlo simulations, empirical analysis of optimization impacts).
- Graphics: Have experience with OpenGL, VRML, VTK, and the Quake II rendering engine. Have also done GUI programming using Tk (for Perl) and Qt (for C++).
- Parallel \& Distributed Programming: Have experience in the use of distributed environments, especially in relation to reducing search space execution times.
- Linux: Have been a Unix/Linux user for 17 years, and have linux administration experience, including supporting of small LAN's of mixed platform computers.
- Professor (1999-2006), University of Western Ontario, London, ON. Research areas include programming language implementation and optimization, advanced object-oriented programming language features (reflection, aspects, components, multi-method dispatch, language interoperability), and virtual machine design, implementation and optimization. Teaching duties centered on object-oriented design, analysis and architecture (C++, UML, design patterns, design methodologies) and virtual machine implementation and optimization. Service duties included acting as the Outreach chair (liaison to undergraduate \& prospective students, organization of ACM programming contests, promoting computing science to the community, etc.), and the organization of an annual career fair for 3000 students and 100 companies.
- Sessional Lecturer (1993), University of Alberta, Edmonton, AB. Taught an introductory computing course to 400 students in both fall and winter terms.
- Parallel Programming, Myrias Computer Technologies, Edmonton, AB, Summer 1994 (during B.Sc.). GUI development to monitor parallel processes.
- Research Assistant (1989-1993) for Dr. Jonathan Schaeffer and Dr. David Laughton, University of Alberta, Edmonton, AB. Parallel programming, unix system administration and numerical methods programming in C to solve third-order PDE's.
- Quality Assurance, Myrias Research Corporation, Edmonton, AB, Canada, Summer 1990 (during B.Sc.). Performed quality assurance of software design for a massively parallel hardware architecture.
- Ph.D, Computing Science, 1999. University of Alberta, Edmonton AB, Canada. GPA: 3.9. \\ Notes: 4 peer-reviewed publications and book chapter during degree.
- B.Sc., Applied Mathematics, 1994. University of Alberta, Edmonton AB, Canada. GPA: 3.7. \\ Notes: Sessional Lecturer in Computing Science during this degree.
- M.Sc., Computing Science, 1993. University of Alberta, Edmonton AB, Canada. GPA: 3.7. \\ Notes: TA for various courses, and an RA for Dr. David Laughton during this degree.
- B.Sc. (Honors), Computing Science, 1991. University of Alberta, Edmonton AB. GPA: 3.5. Notes: Deans list, won local and regional ACM programming contests, placed 16/36 at the 1989 international ACM programming contest.
... snipped so stalkers have a little more work to do ...
And here is my cover letter.
Greetings. I am writing to apply for a Software Engineering position at Google. I have heard excellent things about Google from numerous colleagues who've interacted with Google in a research capacity, from interactions at OOPSLA conferences, and from various other respected sources. I am consistently impressed with the quality of the services Google provides, from its search engine to its world-wide maps to its excellent mail environment. I like the idea of working for a company whose products I sincerely respect.
My skills and personality are, all modesty aside, perfectly suited to what you are looking for. I have a Ph.D. in computing science, and 15 years of software development experience in C++ and numerous other object-oriented languages including Java and Perl.
I am a natural born problem solver, and the design and implementation of programs to solve complex problems is, quite literally, what I live for. I do not program because I have to, I program because I love to. The design and implementation of programs is a ubiquitous part of my life; I automate and optimize and generalize whereever possible because I am driven to do so, both because I am very good at it, and because it is deeply satisfying to create something that makes human lives more efficient and productive. And although the final product is important, the process of creating the solution is itself a source of real satisfication for me.
I am efficient, creative, intelligent, personable and work best under pressure in situations where I am truly challenged. I have worked in Unix/Linux and C++ my entire adult life, and have experience, to one extent or another, in distributed systems (worked at two companies specializing in hardware and software parallelism respectively), machine learning (search space algorithms, OCR), information retrieval (automated web-form instrumentation and web-page acquisition), network programming (standard client/server applications), and the development of software systems with hundreds of interacting classes.
I have provided a resume with relevant details, and would love the opportunity to discuss my qualifications, and the details of specific positions, in an interview. I sincerely appreciate you taking the time to consider my application, and look forward to further correspondence.
If anyone has any constructive criticm, especially about the cover letter, I would be most happy to hear about it. The cover letter just doesn't feel right somehow.
EDIT: Based on feedback from aneyah and iisz, I've made Cover Letter, Take 2.
Now, having provided some boring factual information, some introspection is in order. I have been toggling back and forth between optimism and pessimism wrt employment at Google.
On the optimism side, there are the following points:
- What I say in my cover letter is totally accurate - I really do think I am an absolutely perfect match for what google is looking for. In particular this page lists the core requirements of all the software engineering positions (the five positions I list above are specific specialized positions within software engineering). Here are the requirements they enumerate, and some commentary.
BS or MS in Computer Science or equivalent (PhD a plus). Well, my PhD is apparently a plus.
Several years of software development experience. I have 15 years of sofware development experience. Oh, and I happen to be really really good at it.
Extensive experience programming in C++ and/or Java. I've lived in C++ for 15 years. I've taught undergraduate course on it for 6 years. My research is all about programming languages (giving me a deep theoretical understanding to compliment my practical experience). Although I haven't done as much Java programming, I know the language from the inside out, having implemented a virtual machine for it and having taught an advanced graduate-level course in Java virtual machine implementation and optimization for 5 years.
Enthusiasm for solving interesting problems. As my cover letter says, I really do live to solve complex computational problems. I'm not just enthusiastic about it, I'm passionate about it.
Experience with Unix/Linux or Windows environments, C++ development, distributed systems, machine learning, information retrieval, network programming and/or developing large software systems a plus. Again, as my cover letter and resume state, I have experience in all of these except Windows (I detest Windows with a burning passion).
I first looked at google positions about a year ago. And every single one of the positions I'm interested in (and, as far as I can tell, all of the 82 engineering positions listed) have remained open. Although this could be interpreted to mean that Google is being hyper selective about filling these positions, I suspect that it implies something else instead. In particular,
I know a colleague who started at McGill at the same time I started at Western. A few years ago he decided to leave academia, and instead went to Google. We have very similar research areas, and although I know he is a brilliant person, I don't think he shares my passion for design and programming in general. It would seem that if he was hired, chances are good that I will be too.
However, competing against this optimism are the following reasons for pessism:
Google apparently gets 1300 resumes per day. Although this sounds like a very large number, there are also an amazing number of positions being offered by Google across the world. I estimate that there are more than a 1300 jobs supposedly currently open. There are 306 engineering positions available in Mountain View alone, never mind the numerous other non-engineering positions there and across the US and the world. One resume per job per day isn't nearly as pessimism-inducing :-)
Everyone and their cat wants to work at Google. The counter argument to this, however, is that I'm pretty sure I'm better qualified than everyone. And I'm definitely better qualified than any cat!
99% of all resumes are rejected without even contacting the applicant. I suspect most of those are due to people sending out hail-mary resumes in the blind hope of acceptance. I will be totally amazed if I don't at least get an interview. Frankly, I'll be amazed if I don't get my choice of jobs. But maybe that's just my innate arrogance talking. We'll see how things proceed.
Mom phoned me last night to give me some encouragement (aka do some passive-aggressive chastisement). Not too surprising, she has been much more stressed about my slackassedness wrt looking for a career than I have. Then again, she doesn't have a Big Five personality test Anxiety score of 0.
Anyways, she had recently seen on Oprah that google was the number one best place on earth to work. She had also heard about the 1300+ resumes per day. Since I was already feeling somewhat depressed last night, this information wasn't designed to help lighten my mood.
However, during my resume writing today, I'm been quite optimistic about things - I really am perfect for so many of the jobs. And yet, recent events in my personal life have demonstated that I am just as prone to self-delusion as anyone, so maybe I'm totally out to lunch about my chances. I'll know more in a week or so, I suspect. There are many other possibilities for careers (I'll be posting additional jobs as I apply to them over the next few days and weeks), but Google really does have a lot going for it. I've realized over the past 5 years that where I work is just as important as what I do, and the San Francisco area seems like a wonderfully positive, poly-friendly environment. Other than Vancouver, there aren't too many other places that have both the career and personal benefits that Google provides.
Edit: Just making a link to a related thread.