raganwald
(This is a snapshot of my old weblog. New posts and selected republished essays can be found at raganwald.com.)

Monday, September 27, 2004
  Hiring a Senior Programmer / Software Developer in Toronto


Here's my standard response to recruiters offering me senior programmers and software developers:
I'm currently looking for aggressive, smart programmers. The very first questions I always ask are, "what's the best work you've ever done? And why are you proud of it?" There's no secret to the correct answer. Candidates who love what they do are always ready to share their passion with me.

Candidates who show up for the first meeting carrying portfolios of previous work (screen shots, source code, &tc.) receive major preferential treatment. I'm amazed at the number of candidates who are carrying a résumé and expect me to conjure up in my head visions of how wonderful their work is.

Our interviewing style is thorough. Candidates will be asked to write code and solve Microsoft-style puzzles right up front. Those who show an aptitude for problem solving and excellent communication skills will be invited to meet with four to six future colleagues.

Did I mention excellent communication skills? This is a team environment where we turn ideas into software products. Being able to brainstorm with colleagues, discuss ideas, and contribute to code/design reviews is part of the job. And that means fluent use of the English language in a technical setting.

Although this can be gruelling, I can promise you that candidates who are smart and capable will get an opportunity to shine. Unlike many other firms, I'm prepared to look at candidates with a variety of backgrounds. Do you have "hacker" types that contribute to open source in your database? I'm interested! Do you have creative types who have developed software for Macintosh? I'm interested!

I know this isn't the standard "5 years of C++" type job requisition: If you absolutely must have some keywords for your database, please try:
  • "Python," "Smalltalk," "Lisp," "Squeak," "Scheme," "Haskell," "J," or "Ruby;"
  • "Scrum," "Extreme Programming (XP)," "Agile," "Spiral," "Continuous Integration," "Daily Build;"
  • "Spring," "Hibernate," "Aspect#," "WebObjects," or "JBoss-AOP;"
  • "NextStep", "AUX," "MacOS X," or "Linux."
Please call or email to discuss. I'd love to work with you on staffing my team with the best and the brightest.

Warm regards,


Reginald Braithwaite-Lee

During the years we worked on Viaweb I read a lot of job descriptions. A new competitor seemed to emerge out of the woodwork every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavour the job descriptions had, the less dangerous the company was. —Paul Graham

p.s. For your web surfing pleasure:

http://www.paulgraham.com/gh.html
http://www.joelonsoftware.com/articles/fog0000000073.html
http://www.stickyminds.com/s.asp?F=S7875_COL_2
http://www.paulgraham.com/pypar.html

Labels:

 

Comments on “Hiring a Senior Programmer / Software Developer in Toronto:
Reg,

Pretty cool job description and very interesting.
I love to read PG's essays and Joel's as well.

I would like to answer it if I'd interviewed for the job.

I am pround of an article I wrote Learn how to write DB2 JDBC tools in Jython. The reason is pretty simple: It shows my passion for software developement and make tools to improve things better. Although I work mostly in a corporate environment, at my heart i am very open sourced:-), seeking the truth and better ways. For instance, Python is definitely much more productive than Java for loz of tasks.




Victor
 
Nice. I hope you're working on somethinmg fulfilling!
 
a del.icio.us ad :)

sounds like the kind of environment that breeds good ideas. if i had more experience/better portfolio i would apply. next time...
 




<< Home
Reg Braithwaite


Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

Books
What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

Share
rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

Beauty
IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

Work
The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Management
Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

Notation
The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Opinion
Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

Whimsey
The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

History
06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /