> OK I half agree...... > > I do want to test general ability.... Then ask for a university degree in CS and several years of experience in the field they'll work on. General ability isn't testable with simple tests you can formulate in a couple of lines.
I've spend over 12 years in something called 'the demoscene' (www.scene.org ), it's basicly nerd heaven for lowlevel programming. I can tell you, a lot of people there beat anyone in these simple algo tests, however they're unable to do a big class design, simply because they have no education in that area. > if someone can't reverse a string > in place or work out the longest run in a string then they probably wont > be able to thing of sensible ways to create invoices associated to a > supplier relating to a specific product.... I see 0.0 overlap between the two. Reversing a string is a low-level algo and if you don't know how to do in-place buffer copying or reversing or whatever you want them to do (in place reversing of ints without variables, that's also a nice one, but only for people who think fiddling bits is what it takes to be a software engineer), you will likely spend a lot of time on it, but is that bad? What if the person gets nervous because s/he vaguely remembers it's a stupid silly test but all s/he can think of is a rather big loop full of goo and that they now think they'll fail? Remember: interviewing for a job is often totally difficult compared to the real job. Also, if I was given the tests you proposed, I'd have left right there on the spot, simply because the tests would show that you don't know what to ask from me, as I don't expect to write atoi routines or string reversers. > if they can't think in a > coherent and organised algorithmic manner then they wont be able to > design a new auto pilot....who gives a 'hoot' if they know how to do the > specific task I'm going to ask them to do next week, and outperform > other more able candidates who aren't up to speed on the latest version > of ASP.net, if they are basically not as good as I can get over the > longer term. That's something you'll never know, but definitely won't get determined with tests which take a few lines of code. For example, most algorithms to use on a daily basis are already discovered and documented in full on the internet and in books. Like 'sort this DAG in the right order so all jobs represented by nodes are enlisted in the right order for execution'. Sounds tough? No, it doesn't. If someone tries to re-do that topology sort algo by re-doing years of graph math science in that interview, what does that tell you? Isn't it more wise to hire someone who will tell you "THe algorithm is on the internet and in Sedgewick, I don't have it with me but it will take 2 minutes to write it, tops". What would you answer then? "You're lazy" ? It's the correct answer! > BUT.....where I agree with you (and why I posted the question here) is > that these specific examples are a bit low level C like. > > If I give them something too real world, you may find they fail because > they know how to use Oracle, but not SQL 2005...or are familiar with > .net 2003 but not 2005......if they are contractors coming in to do a > specific job...then yes it bothers me, if it's someone I'm hoping to > employ for the next 5-10 years maybe...I'm primarily interested in > ability. An assignment to do might take an hour for example but has to be reflecting what they have to do on the day they're starting, right? Or something you want them to grow into perhaps. If you want them to pass a test which is suitable for them in 2-3 years time, you've invited the wrong people and have placed the wrong ad. :) FB > > > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Frans Bouma > Sent: 21 September 2007 13:41 > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] interview test..... > > > OK...I know this isn't really a problem with dotnet....but I couldn't > > think of a better place to ask... > > > > I've got to interview some people for the position of a junior > > programmer....'Joel' test for C programmers would be one of > > > > 1. Reverse a string in place > > 2. Reverse a linked list > > 3. Count all the bits that are on in a byte > > 4. Binary search > > 5. Find the longest run in a string > > 6. atoi > > 7. itoa > > All these tests are stupid. Ask yourself: if someone is able to > solve > these tests, is that person THE person to fit the job description? If > the > developer has to write ASP.NET pages in C# every day, who gives a hoot > if that > person is able to write atoi in C# or can bitshift the crap out of a > byte with > 1's ? > > What matters is that the person applying for the job is able to > do an > assignment in line of the work s/he's going to do! So if the person is > going > to work on low-level data-access code, s/he should do an assignment on > lowlevel data-access code, not bitshifts or string reverses (isn't that > a > routine in the BCL?) > > > does anyone have some reasonable ones in C#? > > 3 seems a bit irrelevant. > > 2,4,6 and 7 seem a bit pointless in something like C#....they're 1 > line > > methods. > > > > that leaves me with 1 and 5... > > > > Is there a simple way to short cut these tests in C#?...it would be > > pointless me setting a test only to find it was trivial...or required > a > > trick....rather than demonstrating ability. > > You should pick a feature the new employee will have to write > and ask > the new employee to write the proper design and parts of the code. S/he > is for > example given an hour for that. > > Otherwise, you end up with people who might answer your very low > level > routines, or did some algo puzzles at spoj but for example have no clue > whatsoever what the sequence of events are in an ASP.NET page life cycle > (and > the employee for example has to write killer webpages 8 hours a day!) > > FB > > =================================== > This list is hosted by DevelopMentor(r) http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentor. http://www.develop.com > > View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com