Lately, I've been doing a fair amount of interviewing (as an interviewer, not a candidate) and have a few thoughts on passing my interview. Yes, that's right, I'm going to give you some advice that just might get you hired by my company.* Here's the best piece of advice I can give you. When asked a question, compose yourself and think clearly about the question before answering. The number one reason I ding people in interviews is because I perceive them to be muddled thinkers.
Muddled thinkers confuse customers when they give unclear answers to tech support questions. Muddled thinkers write muddled code, with comments that are equally incomprehensible. And muddled thinkers have a hard time learning new things, because they don't have a structure or system for applying that new knowledge. This leads to something my friend Duncan calls "programming by accident". Keep randomly permuting the code until it seems to work and then stop. This approach creates bugs and unmaintainable code. If it's your strategy for solving problems, I don't want you on my team.
A specific muddled thinking antipattern we see a lot involves the naming of temporary variables. If I ask you to write code and you need a temporary variable to solve the problem, stop and think clearly about the purpose of that variable. If you name the variable t in an attempt to finish as quickly as possible, you are well on the way to failing your interview. I won't fail you just because you chose a poor variable name, but I will fail you because your failure to choose a good variable name confused you to the point that your solution was incomplete, didn't solve the problem, or you begin randomly permuting your code in hopes that "if I just change this to that, it should work." That smells too much like programming by accident.
Think you have what it takes? Want to work at a growing (yup, even in these economic circumstances) startup? Want to work on a product that makes a difference in other programmers' lives? Smart Bear is hiring software developers and senior QA engineers. Send us a resumé. jobs@smartbear.com.
* Remember when you're in an interview, the interviewer wants you to succeed just as much as you do. We don't do interviews for fun; we do interviews so we can get more people to help with our real work. Ironically, the backlog of real work gets longer the more interviews we do.
Monday, July 13, 2009
Tuesday, May 26, 2009
Learning Scala
Taking a page from the Pragmatic Programmer, I'm going to try to learn Scala this year in my spare time. Yes, it's a large undertaking, especially since I don't have a lot of spare time these days, but I think it will be worth the effort. Maybe some day I'll get to use it in my day job, but even if not, it will force me to learn new things, to think new ways, and to grow as a programmer. As an added bonus, it will give me something to blog about.
Why Scala? I was actually heading down the Clojure route and was really enjoying the way it was tickling memories of Scheme. So, today I instant messaged my friend Rob who is a programming language geek of the first order and a fan of Scheme. I asked him if he had taken a look at Clojure and he had not. He pointed me in the direction of Scala. Not being married to Clojure, I decided to switch my focus. With Scala, I have two extra resources to help me learn: a published book (sorry Clojure, missed me by a couple of days) and Rob. Maybe I'll spare some cycles to play with Clojure too — or maybe I'll save it until next year.
Why Scala? I was actually heading down the Clojure route and was really enjoying the way it was tickling memories of Scheme. So, today I instant messaged my friend Rob who is a programming language geek of the first order and a fan of Scheme. I asked him if he had taken a look at Clojure and he had not. He pointed me in the direction of Scala. Not being married to Clojure, I decided to switch my focus. With Scala, I have two extra resources to help me learn: a published book (sorry Clojure, missed me by a couple of days) and Rob. Maybe I'll spare some cycles to play with Clojure too — or maybe I'll save it until next year.
Tuesday, May 5, 2009
void main*
My boss, Jason Cohen, recently blogged about how it is imperative to join the social media "revolution" — even if it's not clear what that means. I see his point, and while I do blog occasionally at the Smart Bear Company Blog†, I think it's important for me to build up my personal social media juice. After all, I won't be at Smart Bear forever, and whatever I do next, a little Google karma won't hurt.
I will try to keep this blog on the topics of software development, technology, and startups. That said, I know that blogs can sometimes take on a life of their own. Hopefully, it won't wither away to nothing.
* The title of this blog entry is me resisting the temptation to title it "Hello World". As for "Noop in a Loop", that came from a discussion of measuring CPU clock speeds.
† As long as I'm employed at Smart Bear, most of my posts will be crossposted to the Smart Bear blog. I apologize in advance to anyone who reads both blogs.
I will try to keep this blog on the topics of software development, technology, and startups. That said, I know that blogs can sometimes take on a life of their own. Hopefully, it won't wither away to nothing.
* The title of this blog entry is me resisting the temptation to title it "Hello World". As for "Noop in a Loop", that came from a discussion of measuring CPU clock speeds.
† As long as I'm employed at Smart Bear, most of my posts will be crossposted to the Smart Bear blog. I apologize in advance to anyone who reads both blogs.
Subscribe to:
Posts (Atom)