Friday, March 31, 2006

I ain't your code monkey!


Warning: this is a somewhat self-pitying rant that will be of interest to no-one who isn't a software engineer, and few enough who are. Normally I try to keep this blog unprofessional, i.e. I try to keep it separate from my work life, but today I just have to vent.

I have over 15 years' experience as a software engineer, and have forgotten more programming languages than most people will ever learn. Recently I was laid off, and this morning I had my first phone interview. It did not go well.

First, the interviewer had a very thick Indian accent and I could barely understand him (and I've worked closely for many years with people from every part of the subcontinent). But the worst part was that he exclusively asked "code monkey" questions that depend on rote memorization of arcane language features. The sort of stuff that you would never use in your day-to-day work, or if you did, you would reach for a reference book. Or you would write clean code to avoid the problem in the first place.

Far too many software industry hiring managers rely on canned lists of code monkey questions to drill candidates. It's lazy and it's counterproductive. There is far more to programming than memorizing lists of rules about operator precedence and what not. It's much more important for a candidate to have an innate sense of how to produce clean, well-architected code that is easy to understand, maintain, enhance and test. This is doubly true when you are interviewing senior, experienced software engineers who are going to spend most of their time analyzing a problem and designing a system, rather than coding - that's what the new grads and interns are for.:-)

From my experience sitting on the other side of the interview table, there are precious few programmers who have this innate sense of good software architecture. Too many of them are obsessed with language tricks and producing terse, unreadable code because they think it's their job to optimize the code, and the shorter it is, the better. No, it's the compiler's job, and all you achieve with your "k3wl" code is to confuse the compiler and prevent it from applying some optimizations.

These are of course the people who ace the code monkey questions, get hired, and go on to produce reams of uncommented spaghetti code that doesn't work and can't be fixed. I should know, I've spent far too much of my career doing software archeology on other people's code. In almost all cases it would be quicker to throw out the code and write it from scratch.

And while I'm at it, I might as will list some of my other interview peeves:
  • Companies where you send in your resume and it disappears into a black hole. Couldn't they at least send a canned automated response acknowledging receipt?
  • Companies that use HR people to screen resumes, and the HR people see their job as weeding out as many resumes as possible, but they have no technical knowledge so the weeding-out process is arbitrary.
  • Companies whose very first question is, "What are your salary requirements?" Look, I shouldn't have to play twenty questions! I want a job that is suitable for my level of skills and experience, and I expect to be compensated accordingly, based on market rates. If you don't have such a job on offer, there is no point in going any further.
  • Companies who regard their tech employees as interchangeable coolies, and the managers and executives as the real stars. Let's face it, the managers and execs are overhead. The techies are the ones who are actually creating value. Your job as a manager is to hire good people, make sure they're on the same page, give them the resources they need, and then get out of the way.
  • Companies who want to know my social security number at the very first stage of the interview process. Fuhgeddaboutit!
It seems to me that many companies simply don't value technical competence, and don't see the difference between a new grad and someone with several years of experience. Or perhaps they think that an engineer with nine years' experience can be interchanged with three coders with three years' experience each. Or they simply don't understand that software engineering isn't manufacturing - it's design. Software simply can't be mass-produced, let alone offshored to countries twelve time-zones away that are rife with language and cultural issues - not if you care about quality.

Anyway, enough ranting about the software industry - I'll get back to ranting about the lunatic extreme right later today.


Trackbacks

This article is now closed to trackback pings.

Comments

RSS iconRSS feed for comments

Gravatar
Karen wrote 7/30 4:44pm in reply to Original article:

AAAGGGHHH! Yes. At my first engineering job (in Silicon Valley), the place was overrun with expat Brits who had wicked senses of humor, and they taught me to joke about promotion to management as "rising to one's level of incompetence." I had NO IDEA how lucky I was; in 12 years at that first company, I had only one bad manager. (No, you can't work there. They were destroyed by the defense budget downturn in the late '80s.) At subsequent jobs, I learned just how much truth there was in my British colleagues' joke. On the manager side of the table, I tried hard to hire people who were committed to good software architecture and good system engineering. It was damned hard. Candidates felt they needed to impress me with their coding skills, when I wanted a well-integrated, easily maintained and improved system; the product was meant to evolve, after all. In some jobs I found HR people who were willing to listen to me and try to find the kind of people I wanted. In other jobs, HR was an impediment and I basically had to do my own recruiting via the job boards. With those people, I had to argue to get them to schedule an interview; they'd object that the candidate didn't have Buzzword Of The Day on his/her resume. But... but I don't count. After two decades, I finally gave up on engineering. I was tired of being laid off every couple of years as company after company went bankrupt or shut down the operation I worked for. I was very tired of working on projects that never saw market because some idiot in marketing had missed the one trendy feature that nobody used but everyone required. Even more painful was working for a company that had a good product on the market, but lost momentum because of funding problems and saw competitors consume their market share. I'm amazingly fortunate in my choice of husband, and he's financing a change of career. I'll never make as much money as I did doing/managing software development, but I'll be happier.  (Reply)
 
Gertrude the Geek wrote 7/30 4:51pm in reply to Original article:

My pet peeve is when a company has a policy that if they get the same candidate submitted by two or more agencies the candidate is disqualified... BUT... then they place the job req with twenty different agencies... and the recruiter won't tell you the name of the company or more than the vaguest details, and they usually don't understand what the job is about anyway... so it's inevitable that you get submitted twice.  (Reply)

This article is now closed to comments due to heavy spamming of this site.

You can email me the comment and I will add it manually. My email address is on the links page.