There seem to be several different understandings of the job title "Architect". The company I work for sees this as a position that involves coding, research, management of developers, and setting of technical direction. Others apparently treat this as a pure management or management/analyst title. Okay, fine, to each their own.
However, if you are a non-coding architect, please don't tell your recruiter you're interested in senior developer positions. We require all our developers to pass a written coding test, and several times now I've seen people give answers like "I've been working as a system architect for several years now and am not really a hands-on developer anymore". "Senior Developer" is clearly a coding position, so what good is a non-coding analyst/manager for this job?
I wouldn't even mention it, but it's happened so many times, it seems like there's some real confusion on this issue. First of all, we aren't hiring architects, we've got one of those (me). Second, we do expect applicants to senior developer positions to be able to code. Third, even if we were hiring architects, we'd expect them to be able to code better than the developers, otherwise how would they mentor the developers?
Comments
The tests
What's your philosophy and thought process when you create these tests? It's a difficult task to create a test which is suited well for a position. Do you allow those who take it to bring a book for reference material? (To simulate the actual working environment.)
What makes a good test
This is a very difficult question. Our current test involves reading code and identifying problems with it, as well as writing some new code to implement a very common datastructure. The results have been good, but not great. People get weirded out by having to implement a classical datastructure. "Why should I do that? It's in the libraries already" and so on. We picked it as the simplest programming task we could think of, mainly to avoid taking too much of the candidate's time for the test, but many people seem to stumble on it for psychological reasons, so we're looking for ways to update the test so we can get a better feel for how people will actually write code.
As for the test environment, it's a PC set up with the IDE the candidates should all be familiar with, with all the help files for the standard libraries installed as normal. We don't allow a connection to the internet, on the theory that it would be too easy to Google a solution.
Insight
I am replying as a candidate who has recently taken your programming test. Here are some impressions I had: 1) The testing station was uncomfortable. The monitor, besides being placed too high for comfortable reading, was old and dim and had to be replaced before I could start the test. This made me wonder if I would be working with outdated equipment in an ergonomically deficient cubicle if I were hired. 2) All the test responses had to be typed into a wordpad document, including the code you wanted to see. This made me wonder if your coding standards include using notepad or wordpad instead of the IDE editor for production work.
3) The outline (or template) you provided for the coding example may be standard in your place of work, but was totally alien to me. A week-long learning curve allowance might have allowed me to blow you away with elegant code, but a half-hour allowance to write code from scratch without using the IDE editor is asking a lot.
As for the original theme in this thread, I take it you're looking for a senior developer who has been actively writing code the past four or five years. According to my recruiter, they're impossible to find. You'll have to settle for someone who, like me, was laid off during the dot-com depression, and instead of moving away from the area to find another job, took the education route to stay updated.
anon
Thanks
Thanks for the feedback, that's very helpful. It never occurred to me that a testing machine would be taken as an indication of the equipment and ergonomics of an actual work environment, but I can see how that could be. We actually have quite nice furniture and modern hardware, the testing system is just a hand-me-down from some time ago.
To clarify, there's nothing in the directions that specifies that the code sample should be typed into the notepad document, though people sometimes choose to do so. We should change the instructions to be more explicit, but we fully expect people to write the code in the Visual Studio project that is provided and running when you sit down at the test machine, and most folks do just that. Please also note that there is no time limit of any kind on the coding test, which the directions clearly state.
Finally, on the subject of talented senior developers looking for work, they are very scarce indeed, but we just hired two of them so they are out there. I wish you luck in your job search, and I'm sorry we didn't have a place for you. As you know we had very specific requirements for this position, and I have no doubt you'd be a great asset in a position that didn't require quite so much .Net experience or allowed more ramp-up time.
Feedback
Thanks for the response. I wanted to make it clear that I know you did not place a time limit on the test. The time limit was my own.
I have been trying to figure out what kind of coding test would be fair to the timid, challenging to the bold, and revealing to the tester. My preference would be to provide a tool class and ask the candidate to use the tool to perform a specified function (which is a more likely work situation than creating the tool, itself).
Alternately, you could ask to see a code project already done by the candidate. Reviewing the code would give you an opportunity to ask specific questions about the implementation which only the author could answer with ease. Someone who is apt to Google a project is probably also too lazy to study the code to understand how it works.
Have a happy Thanksgiving, and keep me in mind when you need someone who is still learning and yet has lots to contribute. I'm sorry I let you underestimate me.
Testing
I work at a company with a similar hiring process (and the perennial problem that many applicants for programming positions, even coming from development roles, don't seem to know the syntax of their primary language or how to solve anything that requires a loop). We have different ways to approach the interview but what I do is pick a problem that requires no knowledge of anything but the basics of the language (in my case Java primitives, Strings, and collections). Then I explain a problem that can be solved in a dozen lines of code or so and the algorithm required to do it.
Often they'll say "well, you just told me how to do it, all that's left is coding" as if they're done. And I smile and say "Exactly. Humor me." And very often, even those who say that turn around and can't do it. I'm not talking about little syntax or off-by-one errors, they just go off in bizarre directions or start writing in something that doesn't look anything like Java.
It's a good test of communications skills too because often they'll listen to the whole explanation and then try to solve the problem from scratch. Even if you missed something, you should be able to ask someone to repeat or clarify things. If they manage to come up with something that works anyway, it's a point of discussion.
Exactly
This is exactly the kind of thing I'm talking about. It's startlingly common.
Testing
I work at a company with a similar hiring process (and the perennial problem that many applicants for programming positions, even coming from development roles, don't seem to know the syntax of their primary language or how to solve anything that requires a loop). We have different ways to approach the interview but what I do is pick a problem that requires no knowledge of anything but the basics of the language (in my case Java primitives, Strings, and collections). Then I explain a problem that can be solved in a dozen lines of code or so and the algorithm required to do it.
Often they'll say "well, you just told me how to do it, all that's left is coding" as if they're done. And I smile and say "Exactly. Humor me." And very often, even those who say that turn around and can't do it. I'm not talking about little syntax or off-by-one errors, they just go off in bizarre directions or start writing in something that doesn't look anything like Java.
It's a good test of communications skills too because often they'll listen to the whole explanation and then try to solve the problem from scratch. Even if you missed something, you should be able to ask someone to repeat or clarify things. If they manage to come up with something that works anyway, it's a point of discussion.