Tuesday, September 24, 2013

2-Accessing Technical ability

In the technical world, accessing technical ability is essential when hiring new talent. The question is, how do we access technical ability?

1. Traditional Way

In the traditional way, we have four ways of accessing competency.

1.1. Accreditation
With accreditation, the candidate must have a minimum amount of training. This is usually in the form of a bachelor’s degree.

The strange thing is that the nature of the bachelor’s degree is not that important, only the fact that you have one.

Other types of accreditation is also useful. A list of certifications can be found here: 15 Top Paying Certifications for 2013.

With accreditation the hiring manager gains the assurance that the candidate has:

  1. Basic knowledge
  2. Understanding of the technologies needed to do the job

1.2. Past Performance
Past performance is a good indicator of present worth.

Hiring managers look at a person’s resume to see if a person’s abilities fit their needs. When there is a close fit, the hiring manager checks references and conducts interviews.

1.3. References
Reference checking is common among hiring managers. Unfortunately it is almost completely useless.

Because of the danger of litigation, many former managers will not divulge any information beyond the fact that the candidate worked there and what the official duties were.

1.4. Technical Interview
In a technical interview, the manager asks the candidate technical questions. The purpose of these interviews is to gage:

  1. Technical skill
  2. Problem solving ability
  3. Ability to ask questions and act on feedback.

Technical questions come in two forms: Knowledge questions and problem solving questions.

With knowledge questions, the interviewer is looking for basic knowledge, including:

  • Basic language skills
  • Object Oriented Programming principles
  • Design Pattern principles

With problem solving questions, the interviewer is looking to see how well the candidate can solve problems. These problems must be solvable on a black board in under an hour. As a result, they almost always revolve around data structures.

For general comments on technical interviews, see: Conducting Technical Interviews.
For some technical questions, see: Technical Interview Questions.

The Problem
The problem with answering questions on the black board is that the situation is contrived. Information workers never work solely on knowledge stored in their brains.

Instead, information workers work on their computers, using the tools available to them on their machines and the Internet. They also tap into their networks in order to close their knowledge deficit.

It is a fact of life that no information worker has all the information they need to do their job. The reason is because the field of information technology is rapidly evolving. New technology is being developed every day that no one thought of before.

In the same way, questions such as ‘What is a class?’ or ‘What is polymorphism?’ are irrelevant. It doesn’t matter if you can define what a class is. What matters is how the candidate uses these principles to solve real-world problems.

2. Better Way - Challenge Project

To access competency, I suggest you give the candidate a program to write. This program must have these elements:

  1. The candidate must use the same technologies required by the job on a day-to-day basis.
  2. The candidate must have access to a laptop and the internet.
  3. The candidate is given sufficient time to solve the problem.
  4. The candidate must be told to deliver three items: 1. Test and development documents. 2. Unit Tests. 3. Application source code
  5. The candidate must be advised that they will need to justify their design and explain the various design patterns used.

In order to access the candidate’s performance, the proctor must be someone who has already written the same type of program. This ensures that they have what it takes to access competency. This also tells you how much time you need to give the candidate to solve the problem.

2.1. Problem
The problem to solve will be a simple program using the relevant technologies.

For Example:

  • Create web page to host an application
  • Create a web service and use the service
  • Create an application

Possible programs:

  • Puzzles
    • Crossword
    • Jigsaw puzzle
    • Sudoku
  • Games
    • Space Invaders
    • Checkers
    • Game of Go
    • Card games (Ex. Solitaire)
  • Applications
    • Simple archiving tool
    • Paint program
    • Notepad program
    • Simple calculator
  • Web Services
    • Return today’s weather for a given area
    • Storage service for an application you are developing
    • Authenticate user for application

2.2. The Solution
The candidate must supply three things things for a successful solution.

2.2.1. Documentation
The candidate must create test and development documents for the application being developed. The proctor goes through the documentation with the candidate to access how well they can express their design considerations in writing.

2.2.2. Unit Tests
The candidate must write unit tests for the application.

Keep in mind, tests are design specifications given form. They define how your application is supposed to behave. Therefore it is essential that developers understand the basics of testing.

2.2.3. Application
The candidate must submit a fully functioning solution by the end of the time period, or explain why they couldn’t perform the task.

In this step, the candidate is encouraged to ask questions.

However, you must not penalize a candidate for not asking questions. If they don’t ask questions, assume they know what they are doing. At the end of the day, the only thing that matters is results. That is what you must judge them on.

When the assignment is complete, we go to the next step…

2.2.4. Walk-Through
The candidate must walk the proctors through the application and answer all questions pertaining to design.

The candidate must also identify all the design patterns used in their application and be able to explain why they were used. More importantly, they must explain why certain design patterns were not used.

2.2.5. Correction
The candidate will get feedback on their program and then must use that feedback to make corrections. In addition, the proctors should give additional design requirements to work on.

This allows the proctors to see how well the candidate deals with code reviews and changing requirements.

When giving code reviews, the proctors should also give bad suggestions. This will access how the candidate reacts to code reviews. The good candidate will question bad or confusing code reviews and require clarification.

2.2.6. Takeaway
Only by placing the candidate in a real-world situation can a proctor access the abilities of a candidate as to how well they will fare in the job they are applying for. This allows the candidate to be accessed from the beginning to the end of a development cycle.

3. Better Way – Published Works

Professional developers have several ways to advance their careers. When looking for talent, here are some things to keep in mind.

3.1 Accreditation
Professionals take training sessions and formal tests to show their level of knowledge.

3.2 Professional Organizations
Professionals also participate in professional groups dedicated to the advancement of software engineering.

Here are some of the organizations I participate in:

3.3 Collaborate Projects
Another way to advance their careers is by participating in open source projects. It is here that their skills can be showcased in a project where multiple people collaborate in.

An example of one such site is Code Project. Here is my profile.

3.4 Code Sharing
There are many sites dedicated to code sharing. Here people can post questions and answers, thereby improving their reputation.

One such example is Code Project. Here is my profile.

3.5 Blogs and personal web sites

Don’t forget blogs. Blogs and personal web sites allow us to showcase our knowledge by publishing articles on various topics.

Speaking of publishing, an important thing to look at is any books developers have published. Here is a book I’m working on: Nuts And Bolts (beta version)

4. Hierarchy of Knowledge

All knowledge and experience is hierarchical in nature. The more advanced branches of knowledge builds on the basics. Only when the basics are mastered can someone advance.

Many hiring managers narrow down the candidates by asking all candidates entry-level questions in some sort of phone screen. They then ask more advanced questions to the remaining candidates until only few candidate remains. They then use other methods to choose the winner.

As you may have guessed, I don’t believe that’s the smartest way of choosing the best candidate.

For example, would you ask a journalist if they know how to spell? Keep in mind that some of the greatest journalists are lousy spellers.

In the world of martial arts, there is a saying. The student swordsperson is obsessed with techniques. The master has forgotten the techniques and has mastered the art of the sword.

What’s important isn’t definitions of classes, polymorphism or whether you have used Visual Studios. At the end of the day, the only thing that matters is how well you can satisfy the IT needs of your customers.

Comment: Ask a question even a fool can answer and all you’ll get will be fools. Ask a question only an expert can and you’ll only get experts.

Aim for what you need and be ware the pitfalls of shortsightedness.


5. Contract to Hire

In my opinion, the best way to hire an employee is to hire them as a contractor. You can then access their ability over the course of several months. If you like them, then you can hire them.

The advantage is that you can let them go without obligation should you realize you made a mistake. This is something you can’t do easily with an employee.

Remember: Understanding is more important than knowledge. In this changing world of ours, those who pursue understanding over just the acquisition of skills will serve your company more than anyone else.


6. Leave it to the Professionals

The evaluation of professional skills requires years of experience. It is not something just anyone is qualified to do after just one or two classes. Where possible, this should be outsourced to a third-party company.

You give the consultant company the list of technologies your job requires and the level of competence you require and they supply the candidate. You then give the candidate a one-year, no obligation contract. If the person works out, you offer them a full-time job.

Successful hires increase the contracting company’s reputation, putting pressure on them to advance the science of human resource management.

7. Suggested readings

IceRocket Tags: