In my current job I get to interview and screen a fair amount of developers, and I am seeing a pattern. I will call this pattern the “YASD”.
“YASD” == Yet Another Struts Developer.
Pronounced “Yeahs-D”.
The YASD can be detected fairly easily:
- 2-n years experience with Struts / J2EE
- They rate themselves an 8 or higher on Struts
- “Extensive experience” in design/development of J2EE applications
- They usually know a few patterns (invariably the singleton and MVC patterns, sometimes Business Delegate) and have some sense of how to use them. Whenever you bring up issues with a pattern (such as threading w/ Singletons), it is quickly apparent that their knowledge is not very deep.
- They know the high level Struts flow very well. When asked how Struts does things under the covers, they do not know. They know about the config.xml file, but not the class loading and reflection that goes into using them. Not answers I would associate with an 8 level Struts developer.
- They have some knowledge of XML. The struts config.xml is mentioned in the answer.
- When asked to describe their model for developing applications, it is invariably Waterfall or RUP: The Waterfall Version.
- When asked which language they have most recently learned, the answer is either “Java” or “XML”.
- They rarely read blogs.
- They do not read technology books.
The people that fit this pattern are probably very solid developers, as long as you lead them well. Now, I’m not saying this is all a bad thing, though I would really like to have someone say “Yeah, I just taught myself Lisp (or Python or Ruby or C# or or) and this is what I think of it.” to the language question. It just seems that these people only do what they need to do for their jobs. Again, not necessarily a bad thing, but there are plenty of reasons why a software developer in this country should be thinking hard about what they know, and what they are going to need to know to survive in our economy.
Jeff | 22-Apr-06 at 5:02 am | Permalink
The most important thing in hiring someone is to assess the needs of the company and find someone with skills that match those requirements. Genius developers with adequate social skills who live and breath technology are few and far between.
The kind of developer you seem to be looking for will not, I suspect, be content to merely develop practical applications for a real-world business, but would rather spend company time exploring the ins and outs of the latest buzz word framework than delivering software on time and within budget.
Matt | 22-Apr-06 at 5:23 am | Permalink
Jeff - your partially correct. We are looking for above average developers. My main criteria for an above average developer is that they care enough about their career/profession to be improving themselves outside of their comfort zone. Initiative, drive. They do not have to be geniuses but they need to “get it” and have enough interest to look outside of their cubicle every once in a while.
thoughts.on.code :: Kick ass (ass kickin?) interview/screening questions | 12-Oct-06 at 9:02 pm | Permalink
[...] Found this brilliant post on programmer screenings tonight on Steve Yegge’s old blog. Even though they are a few years old, these questions pack a serious technical challenge for anyone who doesn’t know their stuff in a broad range of programming kung-fu. Steve covers all of the basics (OO, scripting, data structures, real code, and cs fundamentals, recursion). The questions are designed to balance out each other, so you don’t get a YASD, and you don’t get a Perl hacker (unless they are really good). [...]
technical interviewing woes « Jason Shepherd | 03-Nov-06 at 10:31 am | Permalink
[...] Matt Secoske has already blogged about the YASD phenomenon, and he is spot-on. But, let me say that I’m appalled at the number of programmers I interview that only know one programming language: Java. And, their knowledge of Java isn’t even that deep, very cursory at best, with “7+ years experience” in Java! How does this happen? When I graduated from college, I knew 15 different programming languages. Many of them I picked up casually; it’s not like I was collecting languages like trading cards (things like Perl, Awk, and Sed just became a necessity when I was a UNIX guy). I know that 15 languages isn’t the norm, but come on, just Java? Being exposed to different programming languages (and paradigms) makes one a better programmer by understanding how to solve problems in a variety of ways, some more efficient than others. When I have candidates “write” code over the phone, it is often the most wasteful and inefficient code I have ever seen. A simple perusal through the Essential Java Language Programming Guide would correct a lot of these problems, but these candidates avoid learning like the plague (unless of course their employer is paying for them to go to some expensive training class… then they’re game). [...]