Saturday, January 29, 2011

Hiring programmers in the age of search engines

From my observations in interviews, speaking with fellow programmers, and questions on LinkedIn, I've seen that most programmer interviews focus on technical skills.  For instance, an interview for a mid- to senior-level C# developer often consists of questions on technical issues such using delegates, architecture concepts such as object-oriented programming or placing logic in the business layer, simple SQL questions, and so forth.  These are all tools that are important to have.

But are they the tools that programmers need to succeed?

Here is my list of top six skills I'd want out of a senior-level programmer, in order of importance:
  1. Ability to understand the implications (business and technical) of making certain changes
  2. Ability to understand the business need behind a certain feature and be able to suggest technical alternatives to meet that need
  3. Good grasp of general programming best practices
  4. Ability to find appropriate solutions when a difficult problem arises
  5. Ability to pick up new technologies and ideas quickly (since technology changes quickly)
  6. Specific knowledge of the language/tool-set being used at that time
It's true that if you have no knowledge of programming best practices or of the specific quirks of a particular programming environment, being able to do any of the items on the list would be difficult.  But with so many blogs available (and easily searchable using your favorite search engine), it's difficult to justify hiring programmers solely based on their knowledge of the technology.  If a programmer has a good knowledge foundation, they can easily fill knowledge gaps by running a search query.  So specific in-depth knowledge no longer becomes the most important skill needed for a great number of programming jobs.

Yet this is exactly the approach that most hiring managers seem to take.  They try to gauge a candidate's technical skills, focusing on what I'd argue is the least important skill a programmer needs.  What's the alternative?  Start by listing the most important tasks that the programmer will perform.  Don't focus on just the technical skills.  Ask questions to gauge the candidate's abilities in this area.

For further details, you can read one of my previous blog posts about the subject.

Sunday, January 23, 2011

When hiring for a "hot" technology

I ran across this article, which outlined a manager's thought process when deciding whether to overpay some entry-level developers due to skills in a particular technology:

When going over the pros and cons of hiring these developers, the author failed to look at the fact that these entry-level developers with skills in mobile technologies are still just entry-level developers.  Many of the skills learned in the course of programming are easily transferable from one medium (web, desktop, mobile, etc.) to another, and these skills are usually best learned through experience.  So what else could the manager have done?

I think this is a perfect opportunity for the company to hire temporary workers.  These workers could be paid relatively large amounts of money without needing to worry about having over-paid employees on the payroll when the supply for mobile developers catches up with demand.  This has the added bonus of making the salaries more justifiable to existing employees, since it is reasonable to pay your current employees less salary in exchange for more stability.

What other options do you see available?

Saturday, January 15, 2011

Background for a CIO

Recently we had a discussion in one of my classes that focused on a young business manager (named Claire) who was offered a high-level executive position of managing a company's entire R & D efforts.  Claire did not have an engineering background, so was at best only qualified to serve as a director for the efforts, and at worst was completely over her head.  The assignment was to determine whether or not Claire should take the position.  There was little discussion over whether or not she could do her job adequately, instead discussion focused on what Claire needed to do in order to be successful.

Since most companies (and most MBA students) would have conniptions at the thought of CFOs with little to no knowledge of finance or COOs with little to no knowledge of operations, why do we find it acceptable to have CIOs with little to no knowledge of information technology?

I think at least part of it has to do with the fact that people in technology seem to value knowledge of technology over everything else.  There are plenty of technologists, at least in the software development realm, who spend a lot of time and energy studying patterns, practices, languages, etc.  Yet being an effective technologist goes beyond his or her skill in writing software, configuring servers, setting up networks, etc.  Technologists must also work at communicating technical needs with non-technical people and focus on solving problems with technology, rather than choosing technologies that solve problems.

This is not a small change to make.  If technologists were to truly make this shift, conversations about technology (such as user group meetings) would start with business contexts, job interviews would focus on problem-solving skills more than specific technology implementations, and technologists would spend as much free time learning about finance and operations management as they do new technologies.  Moving in this direction would almost certainly help align IT and business objectives.

If we were to make this shift, companies would still need pure technologists, since technology changes so quickly we will need people who can keep up with these changes.  However, we need to do a better job developing the business skills of our technology professionals.  One way to do this would be to encourage more business training (like the MBA) for IT professionals, and make such training required for many management positions.  What else can IT professionals do to encourage business-context thinking in our day-to-day work?

Saturday, January 8, 2011

The value of technology certifications

The subject of technology certifications comes up quite frequently in many of the discussion boards that I've visited that are either job- or technology-related.  The responses are almost always varied, some arguing that certifications should be avoided because they won't get you a job or because they don't test useful knowledge, while others arguing certifications are desirable for the knowledge gained and increased opportunities made available.  There is a bit of truth in each argument.

Unfortunately, most people asking about certifications on these discussion boards are asking because they are looking for the certification(s) that are virtually guaranteed to get them a job.  These don't exist.  The certifications that I have encountered test for specialized knowledge in a particular area but don't test for skills that are needed to do a job.  I think the test writers believe that anyone with specialized knowledge is bound to have the more general day-to-day knowledge, but the result is that the job market is flooded with certified "professionals" with little more than book knowledge.  Because of this, most certifications are looked upon with suspicion by a significant number of people in the industry.

On the other hand, getting a certification can get your foot in the door into a company, especially if the company has an incentive to hire certified employees.  A certification can show that an employee was motivated to learn the details about a particular technology, which can only be a good thing in an ever-changing field.  An employee should take advantage of the closer look provided by the certification and expect to prove that the certification provided more value than memorizing a bunch of facts.

For the same reasons, employers should look upon employees with related certifications more favorably than those without, but it cannot be the sole, or even primary, determining factor in choosing the right person.  An employee with a small amount of knowledge who can apply that knowledge in solving a wide variety of problems is more valuable than one with a large amount of knowledge but who can't utilize it in a meaningful way.  Certifications usually merely only test for the amount of knowledge, not the ability to apply it.

So in the end, certifications hold some value for the industry, but they seem to have fallen short of their goals.  In a future post, I will suggest a way to design a certification exam that would be more useful to both the certified and the talent evaluators.

Saturday, January 1, 2011

Does MBA training encourage poor decision-making?

During my first year of my MBA studies, I felt pretty good about what I was learning.  I was reading about finance, economics, operations management, marketing, change management, and many other things that any good business leader ought to know.  Then I took a class in information technology, a subject with which I am somewhat familiar.  I thought that the class was actually pretty good - it gave students without a background in IT a good sense of the decisions an IT manager must make on a day-to-day basis.

However, getting a good sense of the types of decisions an IT manager must make and being able to make those decisions are two completely different things.  Yet many of our assignments involved us reading about a typical scenario and writing recommendations to solve the problems outlined in that scenario, and led the students to believe that IT management is something that any skilled manager can do well.

So I looked back on many of my other courses to see if this course was atypical; and it was not.  Reading cases and coming up with recommendations was a common practice in most of my MBA courses.  It scares me a bit to think of the recommendations I confidently made to solve real-world problems with only a modicum of knowledge in the subject of the class.  Unfortunately, I've frequently observed since then other students making recommendations without knowing the subject matter.  Ok, I'll admit, I continue to do so as well.  It's what MBA students do.

What's the alternative?  I still think that the subject matter taught in a typical MBA program is still worth teaching and that an MBA is still worth obtaining for anyone wishing to go into business management, so merely eliminating the MBA is not the answer.  But is there another approach that might work better?

One possible alternative I've come up with is to train MBA students to find and evaluate information rather than interpreting and applying information.  Managers are not always going to have reliable sources of information, so being able to gather useful information should be paramount in any training.

I would also suggest that more time is spent giving students a glimpse of the subject matter beyond what is covered in the class.  It is important to get a foundation in most business subjects, but I would argue that it's more important to know what you don't know, to get a better feel for what questions to ask when the inevitable knowledge gaps arise.

Does anyone else have any suggestions on how MBA students can avoid the "recommendation trap" (for lack of a better phrase) that I described above?