I just thought id ask you for your opinion ... If you are looking to hire a CF developer, or any developer for that matter, what do you look for? Do you look for years experience, quality, skill set, job hopping, certifications?
I have helped make hiring decisions as both the Chief Technology Officer at my previous company and as the Lead Software Engineer at my current company (Epicenter Consulting). When I am talking to a potential employee I listen for one thing and one thing only: Passion. Is this person passionate about what they do? If hired, will they come in and enjoy the work, be ready to take on new challenges, and find joy in solving the tough problems? Or, will this person punch in, punch out, and do only what is necessary to get the job done?
To me, having passion about ones own work outweighs almost all other qualifications. In fact, I rarely even look at resumes. I find them to be very inaccurate representations of who the person is. Plus, I'm not interested in the person's past, I'm interested in the person's future and I find that the way they talk about their work is a much better indicator of the future than any resume or certification. Not only does passion go hand in hand with an eagerness to learn, I find that passionate people are simply more enjoyable to be around. And, at the end of the day, it is a necessity for me to like the people which whom I work.
In addition to hearing them talk, I like to look at some of their code. Generally, I only look - I never run the code. Anyone can make code that runs (especially when handed in as a sample), so its functionality doesn't concern me. When I look at code, I want to see that same passion show itself. When a person is truly passionate about their work, I can easily see it in their code - ever line, every comment, every tab becomes another chance for the developer to create a reflection of who they are and how they feel about the work.
Now, don't get me wrong - if someone has sloppy code (which let's be honest, even many talented developers do), it doesn't mean that I will immediately discard them as a potential employee; at the end of the day, its good to have smart people on board. What I am really trying to say is that if you want to stick out - if you want to set yourself apart from the herd - use your code as a platform for your passion. If you do that, people like me will notice and people like me will hire you.
Final tip: every interviewee should be able to answer the question, "What do you like most about this work?"
Looking For A New Job?
- Wanted: Full-Time ColdFusion Developer at Intoria Internet Architects
- Cold Fusion Senior Developer at Edge Information Management
- Back-End Web Developer-Information Technologist at Michigan State University
- ColdFusion Developer at Nonfat Media
- Mid-to-Senior Level Web Application Developer at SiteVision, Inc.
I think that a programmer is like an athlete. I would rather have an athlete on my team that is not as naturally talented, but is the first one at the gym and last to leave. That person wants it. The guy with the talent that doesn't work hard is going to get passed up. Now, if I can get a guy who has the passion, work ethic and talent, then we are good to go!
I remember having passion for CF. I still love it.. but definitely have lost my spark for it. *sniff* #burntout
I'd suggest a new tattoo, but I think you've got that front pretty much covered.
I think we all go through down periods; times when we are not excited about what we are doing. For me, this usually has two causes: either, its a reflection of my extracurricular life (ie. some girl ripped my heart out and repeatedly stomped on it before lighting it on fire) which causes me to lose interest in man things, work being one of them. Or, the work has started to stagnate.
If its the former, you just gotta muscle through it. Times get better and life will seem more cheery. If its the latter, then sometimes you gotta take action. Find a way to shake it up a bit, make things more challenging. I can usually do this by starting a new pet project like OOPhoto or DigDeepFitness.com; something that forces me to solve new problems or uses my work to build more exciting applications.
... And sometimes, you just need rest :) Every now and then you need a movie binge perhaps.
Two jobs ago, I got it because, as the hiring manager later told me, I said I'm "passionate about ColdFusion".
Word up, that's what I'm talking about.
I look for two things. The first is knowledge. I need someone to be able to hit the ground running. I don't care whether you know ColdFusion, PHP or something else. Mostly I need someone to have a reasonable grounding in CS principles and to, for lack of a better way of stating it, "get it". That's a pretty easy thing to discern most of the time.
The second, as everyone's mentioned, is passion, but less rigorously defined. I don't want a passion for ColdFusion or a passion for .NET or whatever. I want a passion for technology. I always ask candidates what they do when they go home? Do they have a home network? Are they hacking their TiVo? People whose vocation is also their avocation (to paraphrase Robert Frost) are more likely to produce - especially when I can give them something that piques their interest and challenges them. And it's a win-win. I get more work out of them and they barely consider it work because, to one degree or another, it's what they'd be doing anyway.
I disagree somewhat about a programmer/athlete comparison.
I've had many programmers that were very hard workers, showed up on time and left last, but still could not produce good clean working code.
At the end of the day, a server doesn't care how hard you work, it only cares what you tell it to do. Some of the best programmers I've met are the ultimate procrastinators, but they still deliver faster than anyone else.
In our industry, knowledge is an exponential productivity multiplier. While traditional values still apply, it is very rare to find them all in the same person.
Obviously, if one cannot make code work, then you have a whole other ball of problems regardless of their attitude. I am not saying this is a panacea for good hiring; but, I think it is a good indicator of how someone will work (which will not always be 100% accurate).
On the flip side, though, we have to make an effort to not be short-sighted. Just cause someone can crank out an app in record time, we have to think not just about the up-front cost, but about the long term cost if applicable. Is the application easy to maintain? Can other people jump in and know what is going on?
For these long-sighted reasons, functionality is always a non-issue; I assume (at least hope) that everyone can make code work. Again, if that doesn't get done, then we have other problems.
... but, we are getting off topic a bit. This post was not so much about the value of code or developers over the long period, but rather about what I look for during the interview process.
The replies have reminded me of something I was reading recently on Joel Spolsky's blog about different companies all claiming to hire the top 5% of programmers and how no matter how rigorous their hiring process is or how much they *think* they're hiring the top 5%, they're not. Simply because the top 5% are generally happily ensconced in jobs they thoroughly enjoy and are very well paid for already. So you're hiring the "top 5%" (as best you can tell) from those programmers who for a variety of reasons are currently on the job market *and* who applied for your job. Probably some very sharp people in that group, but not the "top 5% of programmers"... and that was even after making the point that, well gee, what exactly qualifies as the "top 5%"? How can you tell? Everyone has different sets of skills. (And so in other words, the idea of the "top 5%" is pretty meaningless in general.)
And a related blog entry I was reading about the same time from Jeff Atwood about a test that was created in 2006 and seemed to be able to accurately divide brand new CS students into groups who "got it" or didn't. And although that may sound somewhat elitist, I don't think it really is, because I hadn't realized before I read that article that instead of a bell-curve, CS classes tend to have a "camel-curve" where there are two peaks, as though there were two different student populations with fundamentally different abilities. Very interesting article anyway. http://www.codinghorror.com/blog/archives/000635.html
I was also reading about the "fizzbuzz" test about the same time... I'm not sure if that's where I found the other two articles... likely.
I was darned shocked to hear that most grads have trouble with the fizzbuzz question he described... In my case by the time I'd finished reading the question, I already had a mental picture of exactly what the code would look like in my head. Was done with it in about 20 seconds without errors, mostly because that's about as fast as I can type. (And I know he said on paper.) Though in my case jobs have historically been kind of a sore subject for me, which, long story short seems to boil down mostly to my being autistic. Those two things - the analytical ability and the lack of social grace seem to go hand in hand for people on the autism spectrum.
I've been told never to disclose that I'm autistic, but at this point I know that I can't really "pass for normal", I think it's important that people hear about autism and I've already outed myself publicly on more than one occasion.
That's a really interesting article. I am shocked that when that test was administered twice, they found almost no movement between the two groups. It's funny, I was a Teaching Assistant for my "Multimedia Programing on the Web" class and there were people who came to lab week after week and just never understood the homework. I always just assumed that these people were lazy and just didn't want to put in the effot ("I know, let's go to lab and I'll have the TA do my homework"). Maybe they really just didn't get it and were genuinely lost on every assignment. Hmm?
I know what you are saying about the FizzBuzz question. Here's a funny thought, though, going back to my idea about seeing passion in people. When I read the question, I immediately thought of the modulus operator, right? Well, if someone were to randomly ask me, "Hey, what do you think about the modulus operator?", I would definitely get emotional about it - "Oh man, the modulus operator really whips the llama's ass! It's fantastic".
As crazy as that sounds, I think (or rather hope), that when you are in the group that "get's it", as I am trying very hard to be, the tools in your toolbox have emotional attachment because they don't just represent tools, they represent solutions. I love MOD'ing. I love regular expressions. I love the ColdFusion query object. I get tingles when I perform recursion. Elegant solutions give me a high.
.... or maybe that's just me and I shouldn't share that with people ;)
@Ben Ha! I dunno, judging tone of voice, facial expressions and body language is a challenging thing for autistic people, so I'm not sure if I could tell you if the modulo operator makes you "too happy". :P
Although that's also something else that's maybe poignant in the context of looking for "passion" from the people you interview. Sean Corfield has described me in the past as being passionate about my work and ideally I'd like that to be obvious to anyone who's talked to me about it or read my articles or my blog... But then I gave a presentation on DataFaucet a few weeks ago and someone else emailed me afterward and made the comment that "it didn't seem like you cared - you seemed distracted and unprepared". Apparently presentation skills are challenging for people on the autism spectrum. But moreover often just as we have a difficult time reading other people, others have a difficult time reading us.
There's actually a relatively common misconception that autistic people don't experience emotions. One of the admins at the Aspergers Association of New England (AANE) related this story to me... sort of a parable I guess. :P A guy's wife cheats on him and he calls up his friend and says "my wife and I split up, 'cause she was cheating on me". Now normally the guy on the other end of the phone would say something like "man that's awful, I'll grab some beers and come over and we can watch the football game and put this behind us". And that's probably all the other guy really needed or wanted was somebody to have a few beers with him. If the friend he happened to call turned out to be autistic tho, then "I'll bring over some beers" isn't a very likely response. An autistic person might be more likely to say "man that's awful, I wish there were something I could do"... and then after the phone conversation might start thinking about and even working on some kind of system like a database of cheaters to help prevent the same thing from happening to others in the future. So it isn't that the autistic guy doesn't feel sympathy or empathy, but that he expresses it in different ways that aren't necessarily obvious.
And I don't think I'm likely to sound very impassioned about the modulo operator. :P But I'd at least hope that if you asked me about ORM or SOA or specifically if you asked me about my own projects that the response you'd get from me would sound passionate. :)
I can see why you might describe the sense of gratification from elegant solutions as a high. :)
And yeah, although there may have been some students who were lazy and did just want to try and get you to do their work, I suspect that more of them were just not really cut out to be programmers. I would probably wind up that same way if I tried to fit myself into a job that required an abundance of people skills like say public relations.
"Elegant solutions as a high" made me think of something. Have you ever noticed that as the (perceived) level of difficulty increases when trying to program a solution to a problem, that the excitement or "rush" one experiences after solving the problem also increases equally and proportionately? In fact, if the perceived level of difficulty may have started out low, but then frustration kicked in because the solution wasn't working (thereby increasing the actual level of difficulty), the "rush" or "high" can also be increased once the correct solution was "found." I guess it's kind of like a "Eureka!" moment.
Anyway, I guess that's why as we grow and develop as programmers, we're always looking for the next "challenge." Hence also why sometimes we also get "bored" with what some may perceive as mundane programming tasks. The challenging projects always get me excited because I feel like I can be more "creative in my approach, etc.
@Steve ... it's so true... they always tell you the first hit's free... :P
I have never felt that your answers or explanations lacked anything. You seem to be very thorough.
I don't know about getting passionate about MOD. Now CAST() - in SQL - that I can see getting passionate about. Or CASE.
If you wanna get really jazzed, let's talk about treating Dates as "numbers" and doing math with them... date-math - badass!
@Ben - Thank you! :) I take that as a complement.
I will say that it's been kind of a hard earned lesson for me that thoroughness is not always appreciated. That's not necessarily a bad thing, after all, when you're working on a deadline you need to be able to get things done quickly and while it may be nice to know all the intimate details of a solution it's not always necessary or even helpful. Most CF programmers probably know very little about the inner workings of DB optimization for example, and really, why should they need to? On a day to day basis it's usually not the most pressing issue.
But being overly thorough was one of the problems with the documentation for earlier versions of the onTap framework. Instead of doing something like the Quick Start it has now (inspired by Joe Rinehart - thanks Joe!) I had these sort of monolithic pages that explored a broad topic with a lot of minutiae. And I suppose some folks may enjoy that (other autistic people spring to mind) :) though ultimately it seems to be much easier for people to digest concepts in smaller bites.
For me at least, learning to categorize and divide up the content into smaller logical blocks is sort of an ongoing challenge. I write as kind of a "stream of consciousness" and things like knowing where to break paragraphs, knowing what asides to omit or even remembering to break paragraphs at all are often difficult. I like to think I'm getting better at these things. :)
Speaking of monolithic articles -- somebody described this one to me the other day as a "wall of text". :P