Wednesday, May 07, 2008

The Guerrilla Guide to Interviewing

Here are some highlights from The Guerrilla Guide to Interviewing (version 3.0) - Joel on Software:

"In principle, it’s simple. You’re looking for people who are

  1. Smart, and
  2. Get things done.
How do you detect smart in an interview? The first good sign is that you don’t have to explain things over and over again. The conversation just flows.

Here’s a typical plan for interviewing a programmer:
  1. Introduction
  2. Question about recent project candidate worked on
  3. Easy Programming Question
  4. Pointer/Recursion Question
  5. Are you satisfied?
  6. Do you have any questions?

The introduction phase of the interview is intended to put the candidate at ease. I ask them if they had a nice flight. I spend about 30 seconds telling the person who I am and how the interview will work. I always reassure candidates that we are interested in how they go about solving problems, not the actual answer.

Recent Project
Part two is a question about some recent project that the candidate worked on.... Again, ask open-ended questions and sit back and listen, with only the occasional “tell me more about that” if they seem to stall....

What should you look for during the open ended questions?

One:Look for passion. Smart people are passionate about the projects they work on.

Two: Good candidates are careful to explain things well, at whatever level. I have rejected candidates because when they talked about their previous project, they couldn’t explain it in terms that a normal person could understand.

Three: If the project was a team project, look for signs that they took a leadership role.

Most of the time in the interview, though, should be spent letting the candidate prove that they can write code.

Easy Programming Question
If the basic concepts aren’t so easy that you don’t even have to think about them, you’re not going to get the big concepts.

Pointer/Recursion Question

the best programmers all have an easy aptitude for dealing with multiple levels of abstraction simultaneously. In programming, that means specifically that they have no problem with recursion (which involves holding in your head multiple levels of the call stack at the same time) or complex pointer-based algorithms

Are you satisfied?
Even though the format of the interview is, superficially, just a candidate writing some code on the whiteboard, my real goal here is to have a conversation about it. “Why did you do it that way?” “What are the performance characteristics of your algorithm?” “What did you forget?” “Where’s your bug?”

Do you have any questions?
As the last step in an interview, ask the candidate if they have any questions. Remember, even though you’re interviewing them, the good candidates have lots of choices about where to work and they’re using this day to figure out if they want to work for you.

In the past, I’ve used “impossible questions,” also known as “back of the envelope questions.” Classic examples of this are “How many piano tuners are there in Seattle?” The candidate won’t know the answer, but smart candidates won’t give up and they’ll be happy to try and estimate a reasonable number for you.

Thursday, April 24, 2008

Search Me

searchme.com is a unique search engine. Their tagline is "You'll know it when you see it." After you search you get a list of results that reminds me of Apples new interface for looking at album covers. It lets you page through the snapshots of the results with the keywords marked on the pages. Thanks to Shaun for the link.

Friday, February 15, 2008

Project management

For some time I have been using basecamp for project management, but I think it's too simplistic for my needs and I plan to switch to The Trac Project. Trac has a more sophisticated priorities and categories and it also integrates with my source control subversion. It's also open source and we can host it ourselves. (I also thought about resorting back to bugzilla)

I'm also interested in some of the plug ins for Trac, like the time and estimation plugin.

Thursday, February 14, 2008

Maximizing Data Throughput for Network Applications (IIS 6.0)

Windows 2003 still has the default setting to maximize file and print sharing over network applications... rackspace recommended that i change it for my web server.

Maximizing Data Throughput for Network Applications (IIS 6.0)

Saturday, February 09, 2008

Pushing limits with web services

There are several considerations when you call or provide a web service that can send a lot of data or take a long time.

In .Net you can set the timeout period to be higher.


Also in .Net... "When the amount of data send or received by the Web service exceeds 4 MB, configure the Web server to handle the larger amount of data."
How to: Enable a Web Service to Send and Receive Large Amounts of Data

Thursday, February 07, 2008

Test Automation with FireFox Add On

I have been using iMacros Firefox Add On
to help automate my testing through the web.

The art of software testing

In the introduction to the book "The art of software testing" it poses a simple program and ask how many test cases you can think of...

"The program reads three integer values from an input dialog. The three values represent the lengths of the sides of a triangle. The program displays a message that states whether the triangle is scalene, isosceles, or equilateral."

If you write down all the test cases you can think of, you will most likely be surprised how many things you don't think of. (they provide a list of test cases in the link)

Tuesday, February 05, 2008

Testing a web site before you migrate the DNS

When you set up a web site on a new domain an easy way to test it out before migrating the dns is to add a record to the host file on your local machine, and override dns to get to the new ip address.

here is a command from windows system that will open host file on any windows os
notepad %systemroot%\system32\drivers\etc\hosts

or on unix
vi /etc/hosts

then add the record (be sure to put a tab between your ip and the domain
70.170.170.170 my.domain.com

Be sure to remove the entry when you migrate the DNS. Also before migrating DNS records be sure to lower the TTL to 5 minutes for at least 48 hours before you make the change.

Sunday, February 03, 2008

windows service problem

I have been having a problem for weeks with a windows service that sporadically quit working. Fortunately, it never happened in the production environments. It only happened on my dev box. Tonight I finally figured it out.

The first thing the service does is log a message to indicate it started. It is also in a try/catch that logs exceptions to the event viewer. Turns out the event viewer had reached it's maximum size, so it would quit working and there would be no indication of the problem in the event viewer, because it was the problem.

I ended up changing an option to "Overwrite events as needed" from "Overwrite events older than 7 days." The production server was already set to overwrite as needed, which explains why it worked in production, but sporadically failed in dev.


Tuesday, January 29, 2008

.Net Pop3 library

It's always seemed strange to me that .Net doesn't have pop3 capabilities built into the framework.


Here is an open source pop3 library for .Net. http://sourceforge.net/projects/hpop/