How To Find Bad Programmers
AmberShah writes "The job post is your potential programmer's first impression of your company, so make it count with these offputting features. There are plenty of articles about recruiting great developers, but what if you are only interested in the crappy ones?" I think much of the industry is already following these guidelines.
Go to India?
You want bad programmers? Start a MUD/MUX/MUSH and advertise for coders, you'll get the damned scum of the earth, a Mos Eisley cantina of crap coders
Step 1: Create an Ask Slashdot looking for (ironically) *good* programmers
Step 2: Identify all self-identified good programmers
Done!
Use a recruitment agency.
Most of them just do buzzword matching on CVs rather than actual filtering by skill, so you'll get some really rubbish dregs turn up with inflated CVs.
Also, try to get one going through a relationship break-up (especially an expensive divorce), or one with criminal/drug addict children / wife. These will increase their productivity as they will want to stay in work.
What'ya gona do with them?
Things Fall Apart
Just use Poi.
We offer free coffee for your 20-hour shift for a few days before the release.
BUT nobody mentions that you still get paid for the regular 8-hours.
Young programmers always say things like "proficiency with the technology is more important than years of experience" and "Old programmers probably can't make use of new technologies" and "I don't have much working experience but I guarantee I am a better choice that someone who does, just because I am that smart!"
Once they work for a while, get bitten a few times by their own crappy code, learn a few things, and realize just how worthless they actually were right after they graduated...they change their tune. It never fails.
You want a good coder? ... Have them write you something small for free.
Most of the good coders I know would walk right on out the door if the first thing you asked them to do was write something for free.
If libertarians are so opposed to effective government, why don't they all move to Somalia?
To find a bad programmer (or bad anything actually) hire anyone whose resume/CV features "certified" or "certification" by a corporation that sells the product covered by the certificate (e.g.: "microsoft certified"). The circular nature of such training guarantees a worker who's view is designed to be narrow.
You get what you pay for. You want a good coder? Look at their code. Make them take some written tests and an oral exam. Have them write you something small for free.
Hell yeah. That's why, when deciding whether a job is worth taking, I always ask the prospective employers to give me a month of salary without working for it.
There does seem to be an awful lot of shitty jobs out there, though.
No problem is insoluble in all conceivable circumstances.
A close acquaintance of mine hired an Indian web developer to build his site. Granted, it was a very simple site I could've done in a day, but the Indian guy did it way cheaper for the whole package - including domain name and hosting. A year later, the site spreads malware (blocked by FF) and the Indian guy is nowhere to be found. My acquaintance can't even get his password to login to the site and disable the malware.
You get what you paid for.
Microsoft full of bad programmers?
Linus Torvalds wouldn't say that.
Theo de Raadt wouldn't say that.
Larry Wall wouldn't say that.
RMS wouldn't say that.
Anybody on a major OSS project wouldn't say that.
The reason we will never win is because the OSS movement consists more of ignorant fanboys than competent programmers dedicated to the cause.
I can spend weeks posting, reviewing, interviewing, checking up on google, and my boss can still manage to pick the lamest of the group.
It all comes down to being cheap and expecting somebody to brown-nose for a job.
Makes me wonder why I work here
Wherever You Go, There You Are
The really classy HR and Recruiter turds put down requirements for years of experience greater than the time the technology has been in existence. For developers, 16 years J2EE required! 10 years .NET a must! 8+ years Red Hat Enterprise Linux deployment!
Bonus points for confounding distribution release numbers and internal software version numbers, or assuming only RedHat distributes GNU/Linux.
Knowledge of 6+ OSes and at least 15 programming languages, developer experience in everything from industrial controls to web apps, etc. Hire the applicant who looks like he's fresh out of college. There's your bad programmer.
Personally I love it when they ask for this. Nothing pleases me more than writing a resume whose formatting seems to change based on what version of Office you're using...
Well, it has never been successfully tested.
Have them write you something small for free.
I have seen exactly one instance of this happening. I walked right out. Four months later the company as charged with unethical buisness practices. They even got sued by a Church of all things.
Asking to look at existing samples (a portfolio) or testing is one thing. Asking for free work is bound to get only inferior employees, lawsuits and criminal charges.
Requiring resumes to be in the proprietary and platform-specific Word .doc format, instead of .pdf, .html, or .txt formats, is a nifty little test early on in the hiring process.
I can't remember when I last worried about .doc compatibility. It has been about five years since I had a real problem with converting basic .doc documents in OpenOffice, and when making them myself I can't recall a serious problem in even longer. I have never seen "must be in .docx format" (which can be a problem) and 99% of HR drones wouldn't be able to tell the difference anyway. HTML and (potentially) PDF* are just security risks.
This guy is either using a very dated joke or is a massive zealot.
* Not to mention you need a non-Adobe client to get a good experience with PDF.
========
CINC, 4th Penguin Legion
You have definitely come to the right place!
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
Read closer. He means anything that is "$COMPANY certified" e.g. MCSE, CNA, etc.
upon the advice of my lawyer, i have no sig at this time
Free useful work, sure. But write a short class? Esp during the interview process?
Of course, make sure it's totally outside the realm of being used.
Your ad here. Ask me how!
Interviewer: "Do you code exclusively in PHP?"
Answer: "Yup! Been using it ever since I gave up VB6."
Interviewer: "You're hired!"
The world's burning. Moped Jesus spotted on I50. Details at 11.
Similar to the acronyms, but not scaring away mediocre developers, is playing conceptual buzzword bingo. By this I mean buzzwords relating to ideas that can actually serve useful purpose in our work, but are more often warning flags of people with a fairly trendy and superficial understanding of software design. For instance, if I see a job listing that heavy in its enthusiasm for design patterns and extreme programming, that's a major warning flag to me. They may well be top-flight, but too often are essentially hipsters who haven't done their homework -- i.e., all the latest terms, but little of the math and algorithms the underpins everything we do.
Another red flag is rote memorization questions. If you're going to ask me what the signature is for a particular method in a particular API, I'm going to be looking at every other question you ask with a lot of scrutiny because odds are that you're terrible at hiring and have put together a crap team. One of my friends told me how he, a solid engineer and project manager, had to sit through an interview being asked the difference between String and StringBuffer. If you don't understand how degrading this is for an engineer with a grad school education and 20 years experience, please realize that you're embarrassing yourself in your current profession and humiliating the candidates you're meeting. You should have the capability of determining whether a candidate knows this kind of stuff without actually making them redo quizzes from first semester CS 101.
The best team I've worked on in any type of job was put together by a guy who asked me no direct questions about APIs, rote from the Gang of Four, or what a linked list was, but just a few things about projects I'd done. Of course, it takes talent and skill to be able to do that.
You saved me the trouble of posting this response. Throw some mods at this fella folks!
Opinion:=TMyOpinion.Create(Me);
Bill? Is that you?
Immediate need for programmer with 10 years experience developing Objective C 2.0 for the iPad. Experience with developing for Intel i9 based Mac Pros is a major plus!
Ummm... post a programming question in the Ask Slashdot section?
(Ducks)
"I don't have to think. I only have to do it. The results are always perfect, but that's old news." - Meat Puppets
There's a difference between example or interview code ("Write a function to reverse a string"), and asking them to do part of the work, up front, for free. Anyone worth their salt will correctly balk when asked to do the latter.
You only ever hear the fanboys. The real supporters are too busy doing things that matter.
For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
The problem isn't about whether it's hard or not for those that don't wish to use proprietary software to open Word docs. The problem is that Word docs are not platform neutral - the font that you used on your resume' might not line up with the fonts that I have installed on my system and vice-versa. Plus, the version you're using might not be the same as the version I'm using and might get rendered differently if you use any sort of fancy-ish formatting (tables, columns, sections, etc.). This would be an issue whether the person on the other end wanted a Word doc, an ODF file, or any other non-trivial word processing document. Realistically, if you want to submit your resume' and have it look as good as possible, you want to know that the person on the other end will be able to see the same thing that you see when you created it; if they're making that functionally impossible by requiring it in a non-print safe non-vendor neutral format, it shows they don't understand such issues, which hints strongly at how well they pay attention to such issues with the rest of their work.
Put another way, imagine working for an employer whose corporate culture can be summed up as "Works for me", then imagine how much fun it would be to fix the consequences of such an ethos when a major customer or the CEO finds something is broken.
So make sure it's pointless, and they know it's pointless. It's an exercise, not a product.
For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
haha. I won't take a test any more. I'll happily have a conversation about the technology, but I no longer take tests.
I certainly don't write code for free. It's insulting.
Fortunately I have an excellent reputation, so even in crappy times I will get the occasional out of the blue job offer. Yes, offer.
The Kruger Dunning explains most post on
Put out a government tender for software development.
*** Don't be dull.***
"The circular nature of such training guarantees a worker who's view is designed to be narrow."
Sure, because it's a well-known fact that once you pass a certification test you're not allowed to learn anything else.
Seriously, if you are looking for someone to be a Admin for your RedHat installations, you would prefer the candidate that doesn't have a RedHat certification?
A SURE sign is when you get calls from recruiters about jobs that are 500-plus miles away:
1) The job is so shitty that we have asked every recruiter on the planet to try to fill it.
2) Or else there are 50 openings on a project that is so utterly f-ed up that no competent person would want to work on it, and it will take 50 incompetents to just keep it from imploding under its own mass.
3) Or recruiter is geographically clueless. My resume clearly states that I will not accept any jobs outside of bicycle commuting distance, yet recruiters have still called me and asked me if Los Angeles or West Virginia were within daily commuting distance of the SF Bay Area. (Glad the job wasn't in EAST Virginia!)
Give a man a fish and you have fed him for today. Teach a man to fish, and he'll say "WHERE'S MY FISH, YOU IDIOT?"
Well, I don't know if he's a good VB developer (whatever that means), but I know a guy who has made a lot of money for himself and his company through his VB work, if that counts for anything.
If your recruiter asks for a Word doc and you are actually interested, just rename a *.txt file to *.doc.
I actually just have a hard link on my web site, my resume.txt is the same file as my resume.doc.
Give a man a fish and you have fed him for today. Teach a man to fish, and he'll say "WHERE'S MY FISH, YOU IDIOT?"
It is VERY rare, but I did run into one company that posted a sort of puzzle. It was a screen scrapping test with several layers. They did things like inserted hints in custom headers and if you didn't notice those, you would go on following the trail who knows how long to get to the end, which was a the email address to send your resume. So it only took about 30 min to do if you knew your stuff, it could take all day and more if not. It was FUN! btw I got the email address in about 2 hours, I did go down the wrong path for a bit and then went back and started looking at headers and cookies and found the clues.
You want a good coder? Look at their code. Make them take some written tests and an oral exam. Have them write you something small for free.
Maybe that is specific to rent-a-coder. I do a lot of interviewing for technical positions, and I don't give code challenges. Anything beyond CS101 fodder is too time-consuming, and asking CS101 questions doesn't really tell me anything.
I'm a big fan of "what's the difference?" questions. I'll take two similar technologies from their resume and ask what's the difference between them. It tests both the candidate's level of experience, as well as the candidate's ability to think and articulate an answer.
I have to say, I've gotten some pretty (ahem) creative responses, too. And for all you job hunters out there, if you put "C/C++" on your resume, I guarantee my first technical question is going to be, "What's the difference between C and C++?" All the while knowing that there is a >50% chance I'm about to get a "creative" answer.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
Some people here could fill that job!
And....
Okay, I have to write this to get past the lameness filter. But listing too many languages is likely to get you a very experienced engineer, not a bad programmer.
The society for a thought-free internet welcomes you.
If your friend has 20 years of experience they were probably just looking for a way to eliminate him. Hiring practices have never been objective, it's just that today the song-and-dance has better production values.
Why are you looking at me?
Who would win this election: Andrew Weiner vs Andrew Weiner's weiner.
Most of the good coders I know would walk right on out the door if the first thing you asked them to do was write something for free.
If it's something that is likely to have commercial value, then I'm with you on that. But if it's obviously some demo code with the express purpose of showing whether or not you have a clue what you're doing, then it's not a problem.
William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
Well, you'll certainly get bad programmers if you choose the ones with 'C+' on their resume.
It's better to vote for what you want and not get it than to vote for what you don't want and get it.
- E. Debs
Let HR write the job requirements, conduct the interviews and hire, all without the input of ANYONE that knows how to do more with a computer, than just turn it on.
"Be polite, be professional, but have a plan to kill everybody you meet." General James Mattis
You want a good coder? ... Have them write you something small for free.
Most of the good coders I know would walk right on out the door if the first thing you asked them to do was write something for free.
Even if what they are asked to write is a function that calculates the GCD of two numbers, or a pseudocode showing one understands a classic algorithm or data structure (which btw are very legit coding questions for an interview)?
But write a short class? Esp during the interview process?
I completely agree that this is both useful and acceptable. Actually this is probably what the OP meant but it didn't sound that way.
To find a bad programmer (or bad anything actually) hire anyone whose resume/CV features "certified" or "certification" by a corporation that sells the product covered by the certificate (e.g.: "microsoft certified"). The circular nature of such training guarantees a worker who's view is designed to be narrow.
Woa, woa, woa, wait there. Are you saying that you can get any microsoft certification just by paying, without any type of evaluation at all?
With this subject line, you are sure to get a bad developer. I have never seen a good VB developer.
I have. He was good at a lot of other languages and platforms, too. I can pick any tech stack or language (be it application or systems programming), and I can assure you, most of its programmers suck.
Anyone applying for a programming job at any level should welcome being asked any programming problem the equivalent of FizzBuzz. The simple fact is, 99% of applicants for an entry-level coding position cannot program at all (regardles of degree or claimed experience), and (in my experience) 2/3s of people with 20+ years of experience at well-known companies still cannot program at all. You would be amazed.
Seriously, you want to work for a company that asks applicants to write at least some trivial code during the interview, because the alternative is very scary indeed.
Socialism: a lie told by totalitarians and believed by fools.
For instance, requiring that prospective hires know how to use Linux, Unix, and Solaris. Or require knowledge of Visual Studio 2005 and Visual Studio 2008. An alternative is to require just one such thing with the implication that you'll throw out all the others, so your job posting says Visual Studio 2005, leaving the guys who used 2008 wondering if their resumes are going to be thrown out.
Another is to be overly specific. We don't just want SQL, we want this brand of SQL from this company and this year. Yeah, they're not all exactly the same, but still. You can do this for non-language requirements too. "Experience with data driven applications involving medium-sized distributed computer systems which process customer orders in Swiss French in the used wristwatch industry. Swiss German not acceptable."
Also, I could never figure out why companies who want C++ and not C always say "C/C++".
If you think it's insulting to prove that you can actually, you know, write code, then you've never been heavily involved in hiring programmers. It is simply not reasonable for a company to assume that, simply because you have N years of programming experience on your resume, you can actually write any code at all. Yes, I know it sounds like a reasonable assumption, because the years of software development on your resume involved actual software development, but believe me the opposite is common.
Never be insulted if you're asked to reverse a string, or a linked list, or some similar test. You'd be amazed at the last of correlation between resume text and the ability to perform such things.
Socialism: a lie told by totalitarians and believed by fools.
And as someone who codes, and has hired coders, I would reply "Please don't let the door hit you on the way out, and by the way, there are 199 other people waiting to interview for that position. Please try and stay out of their way as you go down the stairs."
And by the way, the fact that you didn't get that "write something for free" means, a small, noncommercial piece of sample code that demonstrates that you know how to create class foo with a member function that loops from 1 to 10, exits appropriately and returns a string that says "I'm finished." is indication number two that you are a f***ing lamebrain with neither perspective nor common sense.
In short, you just lost the job due to stupidity, an overblown sense of entitlement and childish arrogance. I have time for none of these.
Please do not read this sig. Thank you.
I've had excellent results finding poor coders by hiring ones that have MSCE listed on their resume.
That's one of those questions where I may get lost in the details. I've written a lot of 'pure' C code and plenty of C++ code over the years and am very familiar with the differences between C and C++. I could go into style differences (such as setting null pointers in C to 'NULL' rather than setting them to '0' in C++), or trivial, antiquated differences (such as C-style comments vs. C++ comments), syntax differences (such as the difference between a C-style struct and a C++-style struct), or the enormous number of additions to the C language by C++ (such as the various C++ cast operators, classes, templates, polymorphism, being able to declare variables at locations other than the beginning of a block, etc) which would nearly turn into a ad-hoc lecture of the C++ language (considering how C is such a small part of the C++ language spec). Or I could go into even more arcane differences such as the difference between C-style linking and C++-style linking and explain why 'extern "C" {}' must be used when including C headers (unless those headers already have it of course), or try to recall the differences between malloc() and new().
To keep it from spiraling into a ridiculously long answer, what would be the most appropriate response? Focus on details that may show that you are fully aware of the differences between C and C++ (like the difference between C and C++ structs)? Or try to give a high-level overview listing some of the major additions by C++ to C (such as classes and more type safety)? Or maybe explain why you would use C rather than C++ (or visa-versa)?
Early on in my career, I showed up for an interview. I drove 30 minutes to get there, was in my suit, and ready to rock. I got there, and the front desk person handed me a 10 page document, and told me to sit down and fill it in. I hadn't even met anybody else yet. It was a programming test. I filled in a page or two, decided I didn't want to work at a place like that, and walked out.
I later interviewed at a large corporation as a Perl programmer. I passed all the interviews, and then they wanted me to write a Perl programme to show them I actually did know what I was talking about. I took their specs, which they said should take maybe an hour to finish. It took me 7 hours. I handed it in, along with my notes on where their specs were vague and why I'd taken the route I had. I got the job and they rewrote the test after that.
Maybe I'm a good programmer or maybe I'm not, but I'm with you that programmers will be more likely to take a test when the risk/reward balance is topped to the correct side.
www.clarke.ca
Immediate need for programmer with 10 years experience developing Objective C 2.0 for the iPad. Experience with developing for Intel i9 based Mac Pros is a major plus!
I've seen that sh*t too. Back in 1995 I was applying for a VB 3.0 job and got rejected because I didn't have 7 years of experience (VB 3.0 was less than two years old, and the whole VB line wasn't 7 years old at all.)
Move the clock forwards to 1998, same deal, got rejected at two applications: one for not having 7 years of experience in Java and another one for not having 8 years of experience with C++ STL. 1998 people!!!. And then in 2001, same again, but this time it was 10 years of Java experience. How the hell can HR screw up like that is beyond me. I was very desperate to get a job on those years, leaving me very bitter against HR and recruiters. Now I laugh.
If someone tells me that they are looking someone with 7 years in JavaFX, I'll just laugh, looking at the whole thing as a sign of God to avoid working with retards.
When I was getting ready to leave, they brought in a "s/w engineer" from out IT department to take over my admin/maintenance duties. I was an engineer who spent about 10% of my time overseeing our (custom) document management and distribution system. So they figured a real IT guy with the proper languages (Perl, among others) on his resume should be simple to find. On his first day, I gave him our system documentation and opened up a terminal to show him an example of our CGI programs. After a few minutes of concentrated staring at the code, he turned to me and asked, "What language is this?" The first line said "#! /usr/bin/perl", which he was staring at.
But that wasn't the worst example. While I was still on that job, a guy from another group stopped by my desk and struck up a conversation about programming. Pretty soon, he showed me an example of a Fortran routine we was trying to get running. The code snippet he had was something another engineer had chicken-scratched on a piece of paper. In it, there was a call to a subroutine (something like "Plot(...)", but my memory is vague). The engineer had actually written the function as "Plot(...)", with the three dots and all. Of course, I understood this notation to mean "Some parameters go here. RTFM and figure it out". But when we logged onto the IT guy's account to look at the source, that's exactly what he had entered: "Plot(...)". On the positive side, he did actually have the same number of dots that the engineer had written on his notes.
This was one (of many) incidents that led to my leaving that circus.
Have gnu, will travel.
Listen, buddy, I don't know how you did it, but my company's lawyers will be contacting you shortly.
There is no way in hell you should have gotten a copy of our hiring procedure through any legitimate means, but if you did you had to have signed the NDA that came with it.
"This post contains words, known to the State of California to cause thought. Wash brain thoroughly after reading."
Microsoft full of bad programmers?
I'd say that judging by the Microsoft engineers i've met (who were nearly all from the Mac Business Unit), they really don't have a shortage of coding talent over there. What they have is a mind-boggling surplus of bad management, starting with Ballmer.
-jcr
The only title of honor that a tyrant can grant is "Enemy of the State."
Personally, I'm looking for 2 things in the answer. The basic, pass fail: "C++ is C with classes". The answer that demonstrates such a keen understanding of good programming that it outweighs almost everything else in the interview if you know it: "with C++ I can automate resource clean up, such as freeing memory and closing files, so that most code just can't have a resource leak and I don't waste time on such bugs".
Socialism: a lie told by totalitarians and believed by fools.
I know how to find one bad programmer at least. Hire the guy who wrote that article.
Yes he does have a point, but he goes overboard and on several point shows a complete lack of being able to work within the system. No job environment is perfect.
1. List a String of Acronyms for Technologies
This is indeed bad, but you also need to be clear about what you want and the clearest way to list what technologies are needed for the job is to make a list. The list ain't bad, a long unfocused list is bad. If a job doesn't have a short list of what is required then I know they don't have a fucking clue what they are looking for. Only apply if you wish to hold their hand on every decision making process, which will turn out to have a lot of similarity with a random number generator.
2. Put an Arbitrary Number Next to Each Skill
Yup can be pretty bad but how else do you attempt to make it clear you need someone with experience with HTML, not just someone who has seen the acronym once? Personally I would use the experience level you must have for the job rather then years. Because years don't mean anything. I have used databases for 20 years now, but am not a DBA'er (I once talked to a girl after all).
3. Say Nothing Positive About the Position
Yeah, I do notice that. The old "what we offer" seems to have gone missing in action. But on the other hand, am I the only one who hates the boiler-plate "fresh and young company with an informal attitude"? Only put things here if they are relevant and true.
4. Use Euphemisms for the Negative Aspects of the Job
Oh boy. Don't forget the "flexible" one. Means: We are going to screw you every which way but whine like a girl if you ask for a single thing back. Basically, jobs are like girls. Nobody who doesn't have a multiple personality could ever hope to succeed.
5. Require Resume to be in Word doc Format
I like this one, good way to avoid MS shops. ALWAYS look for the desktops being used. All MS? Then run. Fast.
I am actually working on a little site myself that will advise people on how to buy a website. How do you handle the process? How do you determine your true requirements so you don't get hussled? What can you do to avoid becoming the dreaded "scope creep" client and the huge costs that come with it?
What the article/site will mostly focus on is trying to educate customers about the product they are buying and a LOT of companies hiring programmers don't have a clue about programmers or the job they are supposed to do. And this is odd, because if you are going to buy a car, you bring that friend who knows everything about cars. But anything to do with IT and those Luddites from HR can surely handle it. Would you let the guy who doesn't drive handle purchasing the company cars?
So, here is my own list of how to find a GOOD programmer.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
"What's the difference between C and C++?"
C is just C. Whereas C++ increments C by 1. duh.
You're thinking small. Why miniaturize the laser, when we could instead enlarge the sharks? -John Searle
Angry much?
FWIW, I am not a professional coder (though I sometimes tinker in my moments of increasingly rare spare time) but I work shoulder-to-shoulder with plenty of them in the course of the work I do. So when I said "Most of the good coders I know would walk right on out the door" I literally meant the good coders I know; the guys I've had dinner with after a brutal day on the client site, or spent an hour and a half chatting at the airport while waiting for our flight. We talk about things, sometimes about ridiculous job opportunities they've been presented with, and what kinds of things send them walking out the door.
Another thing that tends to send quality individuals running for the exits are angry and irrational outbursts that include insults when confronted with a differing opinion.
If libertarians are so opposed to effective government, why don't they all move to Somalia?
OK, then explaining the difference between a C and C++ struct would do that. In the process I could also point out something that some very good C++ programmers I've known weren't aware of--the difference between a C++ struct and a C++ class (a C++ struct simply is a class with members default to public--that's the only difference).
To keep it from spiraling into a ridiculously long answer, what would be the most appropriate response?
That's the beauty of open-ended questions. I get to see how the candidate thinks.
There's no single right or "most appropriate" response, but there are plenty of wrong responses. My expected response is what you describe as:
Or try to give a high-level overview listing some of the major additions by C++ to C (such as classes and more type safety)?
But think about what some of your other answers would tell me.
If you gave me your first few answers and just left it at that, I'd understand that you had hands-on experience with both languages, but pointing out the differences in comment style would make me want to probe your soft skills a bit. So I'd ask for one or two high-level differences that might make me choose one solution over the other (just to be sure), and then I'd switch to soft-skill questions.
In other words, giving an answer other than what I expect isn't going to doom the interview, but it will definitely help determine its course. :)
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
I always insist on Word format. I'm filtering out programmers who will refuse to follow simple, clear shop standards just because they personally disagree with them. You know, sometimes I don't care what your arguments are about whether we should drive on the right side of the road or the left - the important thing is that we all use the same standard!
Also, you'd be amazed how many places still OCR resumes and send the text around. Word's Times font is what all the OCR software (in this domain) expects, so you look better if you use that exact body font.
Socialism: a lie told by totalitarians and believed by fools.
Usually adding the modifier "for free" means that you're asking them to do something they would normally charge for. I don't know any real consultant who would ask to get paid for something like you describe, so the qualifier "for free" isn't necessary and is, in fact, misleading.
So, you failed to get some possibly good programmers because you have an insufficient command of English. I hear overseas outsourcing works cheap, though, and those workers might speak your native tongue.
Brian "Psychochild" Green
MMO developer's blog
I've also known an excellent VB developer - he knew many languages, but that was the language of the libraries he needed in his engineering specialty (odd as it seems), so that's the right tool for the right job.
On the other hanm, he'd be unlikely to apply for a "Visual Basic Developer" job, as that's not his vauable skill, so maybe there's something to this.
Socialism: a lie told by totalitarians and believed by fools.
I have to say, I've gotten some pretty (ahem) creative responses, too. And for all you job hunters out there, if you put "C/C++" on your resume, I guarantee my first technical question is going to be, "What's the difference between C and C++?" All the while knowing that there is a >50% chance I'm about to get a "creative" answer.
It's two plusses or "one" better than regular old C. *witless smirk*
Kwisatz Haderach
Sell the spice to CHOAM
This Mahdi took Shaddam's Throne
Lets see... use the time after I'm done my FT employement to write a pointless code sample for an interview, or use that time to do consulting work for which I'll be paid.. hmm...
Bravo! Point finally made. Thank you Sir!
Opinion:=TMyOpinion.Create(Me);
That does sound fun, and probably EXACTLY the type of gimmick that would attract real talent.
Opinion:=TMyOpinion.Create(Me);
Fair enough - there's definitely value in having clear shop standards, so I can certainly understand wanting to weed out those that are too inflexible in their own ways to work properly with a team. Personally, I keep my resume' in a variety of formats so I can "play along" anyway, so it's not a huge deal; that said, I'll have to remember to create a Times New Roman vanilla formatting version one for companies like yours.
This being Slashdot and all, though, I will note that binary Word docs are neither simple, clear, nor standard, even among versions of Word, much less non-MS products. I'll also note that allowing Word docs as your only standard opens the door to a ton of undesirable and unintended flexibility, such as using complex sectioning, versioning, and incompatible fonts, which might freeze up your OCR systems. Given what you've stated thus far, a far more simple and clear test of shop standard adherence would be just requiring plain-text resumes, which I've seen many places do quite successfully.
All 10-15 minutes of said time?
For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
Personally, I'm looking for 2 things in the answer. The basic, pass fail: "C++ is C with classes". The answer that demonstrates such a keen understanding of good programming that it outweighs almost everything else in the interview if you know it: "with C++ I can automate resource clean up, such as freeing memory and closing files, so that most code just can't have a resource leak and I don't waste time on such bugs".
Eh..."C++ is object-oriented" is the most obvious "pass/fail answer." That said, C++ doesn't really automate resource cleanup that much better than C. Sure, auto_ptr and destructors are nice, but you can still screw yourself up and leak memory in thousands of other ways, so I'm not sure your second answer is really that good. It's not like you can't have a well-organized C code that minimizes your chances of forgetting to clean up resources, in the same way that C++ does it. If you really wanted to, you could write code that mimics object-oriented code very well in C, although you really don't need it. Just a set of best practices is usually enough, and C++ is no replacement for them.
All of that said, I do like C++ a lot. I just don't really agree with your best answer there :)
And as someone who codes, and has hired coders, I would reply "Please don't let the door hit you on the way out, and by the way, there are 199 other people waiting to interview for that position. Please try and stay out of their way as you go down the stairs."
Prepare to be very understaffed in a few years. People may put up with shit like that if they need ANY job, but once the market rebounds, they'll remember it and be out the door exteremly quickly.
And by the way, the fact that you didn't get that "write something for free" means, a small, noncommercial piece of sample code that demonstrates that you know how to create class foo with a member function that loops from 1 to 10, exits appropriately and returns a string that says "I'm finished." is indication number two that you are a f***ing lamebrain with neither perspective nor common sense.
If that's all you've asked for, I honestly don't know why you'd bother with it.
In short, you just lost the job due to stupidity, an overblown sense of entitlement and childish arrogance. I have time for none of these.
I guess if that matters depends on the person leaving. Not everyone looking for a job is unemployed or even underemployed.
The difference is that C++ complains less when I put functions in a struct. But, I prefer C anyways because I can name a variable "class." For some reason, C++ complains when I try and do simple stuff like that, so I guess it just isn't as complete of a language as C yet, since it has such weird restrictions on variable names.
What do I win?
I had a friend who was once asked to write a network protocol as an 'exercise'. He was hired based on his example code. The funny thing is, when he came to work, he noticed his code was actually being used in their software. Sometimes it's an exercise, sometimes it's free work, sometimes it's both.
I left out the other key thing: "C++ has string, vector, and map classes so I don't have to re-invent those, or constantly worry about buffer sizes." That's actually pretty important, though I ask about that more explicity in an interview instead of fishing for that answer with vague questions.
Socialism: a lie told by totalitarians and believed by fools.
5. Require Resume to be in Word doc Format Even worse is having to submit in a plaintext box. Almost as irritating is being allowed to submit a .pdf format resume only to find out it must be 150K in size.
If you have a full-time job you like and do consulting work on the side, why would you be applying for another job? If you hate your job, it's probably worth a code sample or two to get a better one.
I thought classes were on the heap and structs were on the stack . . .or is that just in c#?
Three days from now?? Thats tomorrow!! ~Peter Griffin
Of course, the gobblygook answer about overflowing the stack is a good starting point, it assumes more than you are actually guaranteed. For example, on an embedded system, the "password" text may wind up in ROM. When you try to scanf into a pointer than is pointing to an address in ROM, you can rest assured that you won't actually overflow the stack. (Especially if the password you input is adequately short.) Still, even with a short password, the results might not be quite what you had been hoping.
What do I win?
A malloc to the head.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
I have mod points but no idea how to mod this. It's part insightful, part flamebait.
Yes, Microsoft has tons of excellent programmers. Then again, good FOSS projects also have some really good programmers.
The real difference is: in FOSS projects, the programmers call the shots, instead of the managers. This can be both good and bad.
Actually seen in the wild from a "Senior Java Programmer (tm)":
if (myObject.equals(null)) {
throw new Exception("Object is null");
}
Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
There was actually a language called C+. No one has used it since the mid 80s though.
It was an early attempt at extending C. C plus more I think was what they were calling it.
I may be showing my age here, but I remember reading about it in Byte Magazine (OK I am defiantly showing my age) .
Try asking for C, C#, C$, C%, C^ and C(.
In short, you just lost the job due to stupidity, an overblown sense of entitlement and childish arrogance.
Maybe, but since I didn't want to work for a condescending dick, I'll still chalk that up as a win.
I have time for none of these.
The fact that you replied demonstrates otherwise.
I'm a certified MS developer (MCSD). I keep it around because it helps a company maintain a partnership with MS, which leads to discounts on licenses. Not that useless after all it turns out. I pay very little for MSDN licenses also. Personally I don't care if a interviewee is certified in anything or not. Other criteria is more important.
That's C#. In C++, "struct {" has exactly the same meaning as "class { public:", although many programming style guides use the keywords as strong hints about the object you're defining.
Socialism: a lie told by totalitarians and believed by fools.
That does sound like a good way to find bad programmers. Programmers have no need for word processors; we have a multitude of programming and markup languages designed to make document creation simple. Who wants to fumble around with Word?
But more to the point, good programmers will typically not have a word processor installed. It is simply not a tool that a programmer ever needs to use. A quick Froogle search reveals that it would cost almost $200* for a good programmer to legitimately send a resume in Word format.
What would motivate a good programmer to spend $200 just to talk to you when there are plenty of other companies who would jump at the chance to hire said person?
* It is possible one could use OpenOffice, or similar, for free. But there are no guarantees that the output will be readable in Word. Again, not really worth the effort when there are plenty of other people looking for good programmers.
A good programmer will have spent that time learning and perfecting their craft instead of using that time to take a test. It is not that they make a person worse by having one, but it is a poor allocation of resources for someone looking to be the best that they can be.
"What's the difference between C and C++?" All the while knowing that there is a >50% chance I'm about to get a "creative" answer.
"1". Afterwards of course.
This reminds me of the movie Mercury Rising.
:-p
If you were autistic, you'd have figured it out in 5 minutes.
If you're smart enough to recognize the problems inherent in Word, you're smart enough to preview your doc with WordPad and use only the two Microsoft ur-fonts (Arial headers over Times New Roman body). You can produce a very professional resume with just those two fonts (miserable as they may be), good use of white space, and moderate use of bullet lists. Man I'm tired of sans-serif resumes with tiny margins that are nothing but bullet points (usually for 8 pages, not that I ever read past page 2).
Socialism: a lie told by totalitarians and believed by fools.
What do I win?
A malloc to the head.
Not head.free()?
If a programmer doesn't have long unkept hair, they have shaved their heads like skin heads and had their scalps tattooed. Nothing says incompetent programmer like someone in a suit and a tie.
Get a clue, PHB.
putting the 'B' in LGBTQ+
All too true. I still remember seeing an ad for a programmer that asked for 5 years of Java experience... when Java was 3 and a bit years old. I suppose they might have been looking for some deep insider from Sun or something, but really...
"Must be neatly attired and with good personal hygiene".
Enough said...
putting the 'B' in LGBTQ+
This is the third post today where I've thought, "Damn I wish I could mod that up!" Why do I only get mod points when the page is full of Idle crap?
"Think about how stupid the average person is. Now, realise that half of them are dumber than that." - George Carlin
http://www.dilbert.com/2010-04-02/
If asked about how I would go about doing something, I would explain in enough detail that they would know that I know what I am talking about, but not enough so they can just tell someone else to do it.
Some do and will go to far. Usually in the written part or practical part, however I don't feel obligated to solve their problems until they hire me. The interview is just so they get an idea of who would be best to hire to solve their problems.
Typically your getting evaluated by managers anyway who won't have a clue, and perhaps one in-house expert, so going into too much detail isn't always critical.
If they want me to solve some trivial coding assignment to prove I actually know they stuff on my resume, I have no problem with that. If they give me an example of a problem they are currently having with their system, and give me real data structures to work with, I will tell them HOW I will do it, but I am not about to do unpaid work.
People have been posting how some of the job requirements get screwed up. In my mond I can see this conversation or email with HR happening in 1998:
Manager of software project: "We need someone with 10 years experience programming. Someone with Java experience".
HR writes up: "Must have 10 years Java programming experience".
HTH
putting the 'B' in LGBTQ+
Most of the good coders I know would walk right on out the door if the first thing you asked them to do was write something for free.
While I generally subscribe to that philosophy, if the company has a standard requirement to write a program as part of the interview, I write it.
And I've found that as a result of that requirement, when I get hired after the test I'm working with only good coders. Has happened twice in my career, including current job.
rd
If your current company doesn't provide Word to everyone, I'd be a bit nervous about what kind of niche your were in to begin with. One point of the interview process is to screen for candidates who take the whole thing seriously and make an effort to prepare, but somehow I doubt that you're really ranting about spending $200 as part of a job hunt (and, of course, you only need WordPad, not Word). If you seriously feel that you have no place at the 99% of companies who mostly use Word to do business and could only feel comfortable at a company that would care about the stuff you're ranting about, then by all means self-select (and best of luck to you; competition for "open source jobs" is very fierce).
It's worth noting that "being really good at coding" is the key job skill only for the first several years of a software development career. Beyond that you need to be less focused, and good at design, collaboration, and understanding your customer and his world view. Being so trapped in your own micro-culture that you can't understand how normal people think will be a real handicap there.
Socialism: a lie told by totalitarians and believed by fools.
I don't disagree on any particular point, except maybe your use of "young".
However, asking for a specific number of years of experience is pure bullshit, and you can usually tell when they ask for ten years of experience with a technology which has existed for five years. What's important is not age or years, but experience.
Don't thank God, thank a doctor!
Umm. I think that depends on which standard version of C++ you are using. ... ) and the public/private aspect was hacked on top. I haven't kept up with the latest C++ standards to know how much this has changed over time but I do believe that this is one of the areas where it is now very different from the old implementation and as a result inherently incompatible with C.
Classes in C++ were originally implemented as a C struct with function pointers for the methods. (Long Long ago in a
- Don't just use endless lists of acronyms; use them in a way that makes it obvious that you have no clue what they mean (5+ years of API experience!)
- "Web 2.0". I don't think I need to elaborate.
- Don't say anything about your company. In fact, don't even offer any hint as to the identity of the company.
- If you do talk about yourself, make sure you use the blurb that was intended for clients and investors. You know, the one where you brag about how little you pay your workers.
JCL is not a programming language as there are no looping controls. And *no one* writes JCL (or if they do they are a really sick puppy). Only one JCL control sequence was ever written, everything since then has been people hacking that original script. Who wrote it seems to have been lost in the mists of time.
And yes, the inverted logic is.... well... "special".
putting the 'B' in LGBTQ+
Because at least in my career the 2 worst coders I ever saw wouldn't listen to anybody else. (I mean I was giving them good advice but they just wouldn't listen.)
Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
I'm going off of the C++ Programming Language, third edition by Bjarne Stroustrup (page 234):
By definition, a struct is a class in which members are by default public; that is,
struct s { ...
is simply shorthand for
class s { public: ...
It's been this way for a very long time, at least since I started programming in C++ in the late 90s (the book I cited was published in '97).
I went for a fairly high level IT job interview about half a year ago or so. It seemed like a perfect position to me. A lot more money, doing many of the things that I do now, however with a bit more latitude, responsibility, and authority which is something I had been craving for some time. Anyway I did my due diligence on the group I would be working for, what they were all about, what sort of things they were looking for, what they do, their data and system needs, I even brushed up on some technology that I knew they would be interested in that I hadn't had all that much experience in (SQL Server, as most the stuff I do is in Oracle). Anyway long story short I actually prepared much more than I usually would have as I was actually really interested in the position itself (not just the money, which was a big bonus). Aside form the technical aspect there was also a large IM component.
The only thing that had me a bit worried was that I literally hadn't done an interview in like 10 years, so I would be rusty. When I got my current position I was doing interviews all the time, so you get kind of good at it, or at least comfortable.
Anyway I am being interviewed and you know what the first question was?
"What is a Database?"
Seriously.
I haven't answered that question in a definition type form since like CS101, like 15 years ago! I must have stared blankly at them for a 3 count.
Anyway I stammered out a response that was more or less adequate, but it threw the rest of my interview off. I was expecting to be asked technical questions on this sort of thing, how to solve problems, design questions, technology opinions and comparisons, etc.. not answer basic academic questions. If it was an entry level job maybe, but not for job this elevated!
I was also a bit unsure as to when to call it off, as my definitions started getting really long and involved. I mean I have taken a ton of different database courses in school, and read textbooks in the thousands of pages. I mean I started off with the components, of organized data, related tables, keys, etc... then I would remember stuff about well technically not all databases are relational, just the modern ones we usually use, etc... I also remembered halfway through the interview that I called it "cells" not "elements" which was probably technically incorrect. In all it totally made me second guess and go blank on a lot of other things, because I couldn't stop thinking about that stupid question and what I may or may not have forgot to say about it. I was pretty confidant when I went in about knowing my stuff, as I had been physically doing a job like it for 10 years or so. Best way I can describe is that one silly question threw me for a loop, from which I barely recovered.
In the end I didn't get it (lets say I wasn't surprised). They had hundreds of applications from across the country, and only interviewed 8, and I was told that any of the 8 were qualified to do the job, just that someone scored higher than me. As soon as they said that all I could think of was that stupid "What is a database?" question... Oh well. I guess it never hurts to brush up on the basics before any interview I suppose! :)
I'm a big fan of "what's the difference?" questions. I'll take two similar technologies from their resume and ask what's the difference between them. It tests both the candidate's level of experience, as well as the candidate's ability to think and articulate an answer.
What is the difference between a programmer and a coder?
Would that be a good question to start with? :)
This space unintentionally left blank.
Or a reboot to the head.
This space unintentionally left blank.
To keep it from spiraling into a ridiculously long answer, what would be the most appropriate response?
I'm not a C or C++ career programmer, but wouldn't the appropriate response be that C++ is object oriented, that if not writing with C++ classes then you're using the C subset of C++?
Seriously, you want to work for a company that asks applicants to write at least some trivial code during the interview, because the alternative is very scary indeed.
I learned early on that an offer made quickly after a very easy interview means you should probably run screaming.
The two major problems with that were:
1. If everyone goes through the same process, then there's a good chance most of your co-workers are not very good.
2. If the interview process isn't painful for the employer to conduct, it won't bother them too much to repeat it for your replacement.
I took a job offered way too quickly once. I had my doubts but it was a 40% salary increase so I went with it. Turns out my skillset was actually a poor fit for the job, which would probably have become obvious with a marginally longer interview.
Two months later I was unemployed, and three months after that when my savings dried up and my father covered a month's rent for me I ended up going back to an old employer hat in hand to take a salary less than what I had been making at the place I just left.
William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
Maybe I'm a good programmer or maybe I'm not, but I'm with you that programmers will be more likely to take a test when the risk/reward balance is topped to the correct side.
Well put. Excellent comparison. And it's clear you are a good programmer. A one hour estimate taking seven hours to do correctly is par for our industry.
rd
"What is a Database?"
That question has me scratching my head a bit. As to its purpose, I mean.
If I were in your shoes, I probably would have said something like, "A computer system that accepts data for later retrieval. Naturally, the topic of databases is broad. Would you like for me to discuss any specific aspect of databases with you?"
If it were me conducting the interview, and it was some type of DBA position, perhaps I would have asked something like, "What are some basic tuning considerations for OLTP vs. OLAP data stores?"
I'll come right out and say I have no clue what the answer to that question is. On the other hand, I've been working with computer systems for about 30 years, so if I get an answer that sounds like something other than "OLTP is optimized for inserts and quick retrievals of discrete amounts of data, whereas OLAP is tuned for querying data and things that look more like analysis and a constantly-growing dataset", I can look it up after the fact to see if my candidate is a crackpot or if I'm the crackpot. :)
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
I got there, and the front desk person handed me a 10 page document, and told me to sit down and fill it in.
These are often boilerplate forms that nobody cares about but feel as though they really must ask applicants for some odd reason. Often no one outside of HR realizes what's happening and by the time anyone new is comfortable enough to make critical suggestions they've completely forgotten what was a relatively minor part of their interview.
I'll fill in something with my name and address (once!) and some other general information and skip over everything else. If it seems like the interview might actually go somewhere then I'll provide much more info if they need it, but they typically don't. If they want you, any HR flak who complains "But he didn't fill out XYZ" will be told to call you up and get the relevant info.
William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
...judging by the Microsoft engineers i've met (who were nearly all from the Mac Business Unit), they really don't have a shortage of coding talent over there. What they have is a mind-boggling surplus of bad management, starting with Ballmer.
That's something that MS doesn't have a patent on.
One of my favorite examples, that gets knowing looks from lots of good programmers: Some years back, I was hired to implement a specific standard (which one isn't important here, but you'd recognize the name). When I started, I was bemused to see written orders that explicitly included not implementing a critical part of the standard, because "it isn't needed in our system". So I did the sensible thing: I implemented the entire standard, but included a switch that disabled the part they didn't want. I was also a bit annoyed by the fact that they explicitly denied me the use of a downloadable compliance test package (which was even free).
After a while, the project was working well enough that they delivered the first release to several customers. Among the bug reports, every customer included the fact that my part didn't pass their compliance test (which was the one I'd been denied access to), and they explicitly noted the one part that didn't work at all, which was of course the part I'd been ordered not to implement. Every customer said they wouldn't accept the product until that part was working. I got a "top priority" request asking how quickly I could implement the missing feature. I flipped the switch in my test setup, thoroughly tested it, and reported a few days later that it was ready for delivery. My managers were duly impressed by how quickly I'd done it, and the customers all accepted it.
A few months later, they were setting up for the product's "2.0" project. I noted that my standard was included, and that they again explicitly required that I not implement that one part that they "didn't need".
I sent my resume around, and a few weeks later, told them that I wouldn't be working on release 2.0.
It's interesting how many of the good programmers that I know have stories very similar to this. And most of them don't work for Microsoft.
Those who do study history are doomed to stand helplessly by while everyone else repeats it.
To keep it from spiraling into a ridiculously long answer, what would be the most appropriate response?
I can't speak to the specific OP above, but interviewing is almost always best served by a top-down approach. Like court, your goal is NOT to provide every detail; it's to leave the "jury" with a favorable impression. So, unless he says "list 5 differences," (and even if he does) then just start with a general description, and then present individual examples as requested. I.E., difference between C/C++: you might say that C++ is a near superset of C, then wait for him to ask what you mean. That also gives you time to think (although "what's the difference between" questions are pretty common, so you should probably have some examples ready.)
Also -- though not specific to this topic, per se -- one of the best things to do is ask lots of questions. Become the interviewer. What tools do they use? What conventions? What hardware? What development process? That shows you're familiar with the job (or implies it), and also puts you on more even footing, which makes them view you more as a colleague than a candidate. It also gives you a chance to build a rapport by complimenting their choices, or at least showing an interest.
One other note.. even if you can tell from the moment you set foot in the door that you'll hate the place, or that working there would be an insult to your abilities, don't let it show. You never know what an offer might be like, and you can always use one offer as leverage against another. (You can actually do this without an actual offer, but it helps to have the real thing).
https://www.eff.org/https-everywhere
I'm not a C or C++ career programmer, but wouldn't the appropriate response be that C++ is object oriented, that if not writing with C++ classes then you're using the C subset of C++?
If I were interviewing for a C++ position, I'd want to hear about memory management as well, at the very least. If constructors/destructors/new/delete didn't strike you as a huge improvement over malloc/free, then I'd be a little concerned. :)
But if it were for a position in an unrelated area of expertise, I wouldn't hold it against you.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
I have to say, I've gotten some pretty (ahem) creative responses, too. And for all you job hunters out there, if you put "C/C++" on your resume, I guarantee my first technical question is going to be, "What's the difference between C and C++?" All the while knowing that there is a >50% chance I'm about to get a "creative" answer.
As someone who is 90% Java, 10% C++, with a CS degree but somewhere between junior and mid level in my career, I would say:
C gives you structs, but C++ gives true objects and all the OO glory that they entail
I assume that I failed your test
And as someone who codes, and has hired coders, I would reply "Please don't let the door hit you on the way out, and by the way, there are 199 other people waiting to interview for that position. Please try and stay out of their way as you go down the stairs."
And by the way, the fact that you didn't get that "write something for free" means, a small, noncommercial piece of sample code that demonstrates that you know how to create class foo with a member function that loops from 1 to 10, exits appropriately and returns a string that says "I'm finished." is indication number two that you are a f***ing lamebrain with neither perspective nor common sense.
In short, you just lost the job due to stupidity, an overblown sense of entitlement and childish arrogance. I have time for none of these.
because professionals use language like this all the time.
Actually, they don't.
Unfortunately, most people who are hiring have an HR department that screens resumes, which isn't the most technically savvy. As a result, their IT department gives them MS Office because it's the most familiar to the HR staff, and will result in the least helpdesk calls. Hiring managers are usually bogged down with work (ergo they are hiring). This leads to a situation where hiring managers have to rely on the HR department to screen candidates based on some keyword criteria, which means candidates need to use Word. Ideally, they would accept a PDF, because there are open source PDF writers out there for various platforms, and I know that it will be rendered exactly the same on their screen. That is, if I don't use some crazy fonts, but then I can just embed those into the PDF.
I left out the other key thing: "C++ has string, vector, and map classes so I don't have to re-invent those, or constantly worry about buffer sizes." That's actually pretty important, though I ask about that more explicity in an interview instead of fishing for that answer with vague questions.
Yeah, I don't really care if the candidate brought up my favorite pet difference or not when I ask an open-ended question. You can learn a lot about a candidate based on what pops into his head first, nevermind if the answer is even correct.
For instance, if the candidate started going off on the C vs. C++ standard library, I'd start to think that this is going to be a heads-down coder, and not someone who is architecting systems. Not that there's anything wrong with that. I'm just trying to see where the person is.
And don't get me wrong, it's definitely a good answer. I don't want a junior programmer reimplementing standard library data structures.
But that answer is definitely trees, not forest.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
No, he's saying MS makes Windows, and MS sells Windows certifications, which is cyclical. You still need to study for the certification, but the point is who makes the technology, and who sells the certifications for the technology. He's saying independent certification source is preferred.
I had a friend who was once asked to write a network protocol as an 'exercise'. He was hired based on his example code. The funny thing is, when he came to work, he noticed his code was actually being used in their software. Sometimes it's an exercise, sometimes it's free work, sometimes it's both.
Did your friend tell you how long he worked on this 'exercise'?
I was once asked to write database engine in C++ after a two hour interview. They said I had two weeks to write it. Do I need to say I refused and told them that if I could write a DB engine in two weeks I wouldn't be applying to work for them, but instead I would've been applying to work for MS or Oracle? I guess not :)
You don't know what you don't know.
As someone who is 90% Java, 10% C++, with a CS degree but somewhere between junior and mid level in my career, I would say:
C gives you structs, but C++ gives true objects and all the OO glory that they entail
I assume that I failed your test
The beauty of an open-ended question like that is that there isn't really a right or wrong answer, and there is no test to pass or fail in any given question.
If you gave me that answer, I'd assume you had a passing familiarity with C and/or C++, as opposed to a deep knowledge and understanding. Not that there's anything wrong with that--you're not trying to pass yourself off as experienced in C++. Where we went from there would depend on the requirements of the position.
If it was a C++ position, we'd go right into the areas of C++ that are required and you'd either sink or swim.
If it was for a Java position, I'd probably segue into Java by seeing if you could tell me a few differences between Java and C++, before getting into the specific areas of Java that the position required.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
That was the best line in the whole article. I think it also aptly describes many workplaces.
Do you work in Utah or something? I'm afraid that in all areas where I worked (banks in San Francisco, software houses in Houston and New Mexico), a certain amount of profanity made its way into normal daytime conversation, particularly when the circumstances became unusually frustrating.
Look, I understand that my position threatens a lot of you, but I'm fairly typical of many people who've had management jobs and simply don't have a lot of tolerance for either gross incompetence or erratic prima donnas. I've fired both types before, and probably will again. I'd rather have a mediocre guy who comments his code in readable English, makes the code readable and maintainable, and comes to work regularly than a genius who writes brilliant but unmaintainable code, comments nothing and wants to work at home ALL the time.
So if you want, walk out the door. Please. You're doing me the favor of not having to bother to fire you later or try and untangle the "brilliant" code/hairball left for us lesser mortals.
Please do not read this sig. Thank you.
Post a project on a "find an outsourcing developer" web site. These places are filled to the brim with bad developers who think the best way to get ahead is to undercut every other bad developer on the site. And customers who think that cheapest is obviously the best. (E.g. this project with some really clearly clueless bidders trying to get a relatively complex job without any obvious experience by offering to do it for almost no money.)
It's easy to say Indians are a problem or any off-shore employee. I know I've had more than my fair share of grief from off-shore devs.
But one thing to keep in mind if your employer is tight then, despite wages being very cheap anyway in those countries, there is a very good chance they're paying Indians less than they should get in their home country as well.
I know for a fact the last off-shore devs I worked with were paid low wages for their country. The people that stayed in the office are often useless. Anyone that was good moved to a better company within their country or more often moved to the US, Canada, UK, etc. They're good and don't need to stay within their country making peanuts.
Companies also think they can sack a load of techies in their country and hire off-shore devs and some how non-techies will be able to communicate what needs to be done. Something they fail at with English speakers and something that is even worse with a language barrier.
India is no different from the US. Some devs are absolutely useless. Some are trying their best but dealing with some moron in another country who thinks he can do his job badly, leaving the Indian without enough info and support, and if the Indian fails it's because he's Indian and it's doesn't really matter if he fucks up because his wage is the equivalent of minimum-wage so it's cheap to re-do it.
No one hears about the good Indian devs because there is nothing to point and laugh at and any decent Indian probably won't work for some shitty off-shoring scheme.
The biggest reason I am against off-shoring isn't some Indian "stealing" my job but because it is so cheap that companies don't put in as much effort and the bar is lowered. Pay everyone the same exact wage and then let the best country win.
Sure, you can leak resources in C++ in all the same ways as in C. However, C++ does have two major advantages when it comes to resource management:
1) Via destructors, you can register a block of code to run automatically when something goes out of scope through any standard flow control construct, e.g. return, break, continue, etc. In C, when you may return from a block in more than one way, you must either duplicate the clean-up code at each exit point or distort the structure of your routine to always pass through the clean-up code on its way out.
As clean-up function, C++ destructors aren't anything particularly new; you can do the same in C by manually calling a clean-up routine. However, the fact that destructors for stack variables are invoked automatically at the end of the block is unique to C++, and (when used properly) helps to eliminate a significant source of leaks by grouping initialization and clean-up rules in a single declaration.
2) C++ has built-in, first-class exception handling which runs these destructors while unwinding the stack, so you don't leak resources as easily when recovering from errors. The closest C equivalent, setjmp/longjmp, does not release resources when longjmp is invoked. A common alternative, returning an error code and testing for it in the caller, tends to suffer from the multiple-exit issue described above.
"The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
I did a written "programming" test on Thursday (and passed! - now for the interview). I was ok with it, since I knew that thats what I was there for.
Except question 10, the correct answer was not one of the available answers. So two sheets of paper later, explaining how the pseudo-code works and why all the answers are wrong, and bingo interview! ("Call you by Wednesday! Huh!")
Also took the time to correct the spelling of "colour" throughout the test.
I may not be a good programmer (yet), but I'm an expert Grammar Nazi.
Wait! Whats a sig?
Last guy that I knew that took the stance that tests are beneath him was a contractor who worked along side me for £300 a day. He wasn't doing something I couldn't do. I purely didn't have enough time to cover someone's work who had left and cover my own.
I gave him some work for a script that generated files for the main project. There was very little he needed to know about the main project since the XSL to format the data was already complete.
He did a a half assed job and didn't complete it nor did he take on anything I told him. In fact, it wasn't coding (by the look of it) that was the problem. It was his shitty attitude. He felt he knew better and he did not. My guess is his refusal to do a simple little coding test also stems from him thinking he's hot shit. I don't want to work with a cock so next time I run into someone who thinks a test is beneath them, they're definitely going to be told "no thanks" and we'll keep looking.
The best guy I've ever worked with did the test and completed, at best, 40% of it. But he documented why he did what he did and why he didn't achieve 100% completion all completed before I came back to check on him.
Like with the test he just gets in and does it best to his knowledge. Where he's lacking he researches and asks questions rather than acting like an arrogant cock. His code is very good and I can't fault him at all. I believe this comes from his dedication in everything including the interview.
Seconded, and I just spent all mine on the(old) Java exploit thread :(
Wait! Whats a sig?
I think his wording is poor. I doubt he wants them to write software they'll use for free. Doing some sort of coding as part of the interview shouldn't be an issue. Like anything else some companies take an interview idea and implement it poorly and some do it right.
Wow, you think brilliant code is maintainable and mediocre code is readable? Too bad no one fired you from your job before you totally fucked up the developer staff there, I guess.
Brian Fundakowski Feldman
I have written sample code to test many applicants, when I have accidentally fucked up something I didn't mean to it is very hard to get the answer I am looking for. If an applicant pointed out that you were passing char ** to scanf instead of char *, you can hardly say that they are wrong, but even though they are right, they still accomplished something that could have been done quite well by their compiler (well, most do scanf format checking these days). Also, you can hardly say that code there has a buffer overflow issue since on most modern systems you will get a memory protection exception (segfault) as soon as you start writing over that constant string, your code will not run, but that is not the same as a security hole. If you want a potential buffer overflow identified, you need to write good code with that as its only problem.
Also, fair point about information hiding, luckily one can use C++ to implement SHA256 using template metaprogramming and have your sensitive password saved as a hash at compile time. C would require an external tool for that, although an external tool is probably the right way to do it in C++ too, but the option is still there.
When Argumentum ad Hominem falls short, try Argumentum ad Matrem
???
Make a ridiculous profit
brilliant but unmaintainable code
I've read most of your comments in this thread and largely agree with you. However, there is no such thing as brilliant but unmaintainable code. Brilliant code is typically something you would never have thought of doing, but what it does and how to change it is immediately obvious when you look at it.
I worked with a guy who was very smart and could solve problems that most of the rest of the staff would have trouble with... and I advocating firing him because it was less of a time drain for me to help the other guys figure out a good way to solve the tough problems they ran into than it was to help them figure out what the hell genius boy had done. Most of his code required total rewrites in order to make useful changes. I suspect you meant that kind of coder. Solving difficult problems does not necessarily amount to brilliant code, and sometimes simple problems can have brilliant solutions.
William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
Since I only broached this question in a roundabout way in my previous message, I will be more direct this time: What makes your place of employment worthy of a skilled developer jumping through all of those hoops you are imposing?
Yes, any developer worth his or her salt will have the skills and means to prepare a Word document. That is not the point. The point is that a good developer will already have several job offers coming their way and being courted by cool companies left and right. Why would someone with talent want to spend excessive amount of time to prepare their resume in a non-convinient way just to have a chance to talk with you?
I am going to assume that you work for Google or Apple. Developers most certainly will jump through any hoops necessary just for the chance to talk with those companies. They hold prestige for many developers and for them it would be an honour to work for such companies. Although, honestly, I cannot really see either company having your policy.
If you are Joe Sixpack Software, I am honestly curious about what you are doing that is so interesting that is attracting skilled developers despite your policy. I might be interested in investment opportunities, because you must be doing something really cool.
Bonus points if you write it as a regex expression.
You mean this? ABCL/C+
1. i used to recruit on craigslist, cuz that's where the smart and nerdy people were. now it's just weird poor people.
2. i would print all the resumes and cover letters, read them carefully, and throw out any that had even the slightest spelling or grammar mistake (and I'm a grammar nazi) - though I'm sure I'll make a mistake in this post...
3. in the interview, i would do my best to find out if the guy was a fucking idiot or not. "what percentage of ducks have below average IQ (for a duck)?", "how may fire hydrants are there in vancouver?", "write some code that does this". "tell me an example of when you went above the call of duty"
that's about it. we got some good hires.
This is also great for avoiding deadlocks in multi-threaded code. I love using scoped mutexes since they are guaranteed to become unlocked even if an exception is thrown (thanks to the nifty destructor).
Err, scoped locks that is (something like Qt's QMutexLocker: http://doc.trolltech.com/4.6/qmutexlocker.html).
There is, but there's not much call for it nowadays. The kind of stuff Steve Wozniak could do in 256 bytes of 6502 assembler (e.g. stuff which behaved differently -- and usefully differently -- if you jumped into the middle of an instruction).
That is your friend's fault for not ensuring that he had the passwords as part of the late stage of paying for the job. No password ; no second half of the payment. That's as dumb as buying a car but not getting the keys.
If you knew about this before your friend ran into trouble, then you're at fault for not telling him of the hazards that he's risking.
Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
Truly. In particular, if you ask for details or elements of the design of a project they have done in the past, they will likely be happy to talk about it and if they know the fundamentals it will be obvious. It will also be fairly clear if they either don't know them or if they only know them by rote.
Yeah, exactly. This is how it went:
Manager: "Put out a job description, but word it so that we won't get any applicants. We just want an excuse to import an H1B who'll work for peanuts."
HR: "Okay!"
---- later ---
Manager: "Oh shit, an actual American who expects some kind of quality of life applied! Quick, get rid of him somehow!"
Interviewer: "So what's the difference between a String and a StringBuilder?"
I'm not a coder or developer. But, whether on the business side or technical side (I've been both), I've found that companies that insist on something like resumes in Word format stick to many internal policies that impede getting work done. Often, this is a misguided attempt to comply with some perceived directive or regulation, but generally it could be implemented with a simple procedure and no impediment. In other words, companies like these tend to be full of managers who don't know how to do things in a clear, straightforward manner and actually get things done.
Yes, I learned to avoid even applying to such companies. People who insist on a single standard from an outsider tend to be closed minded and inflexible, especially when that standard typically results in documents whose formatting gets completely messed up just because you have a different printer (Word actually changes things like line breaks and page breaks depending on printer, and I've had it completely destroy a resume's formatting based on that difference alone). Looking bad to a potential employer because they use a different brand of printer is not cool. Judging a potential employee because Microsoft products do this does not say good things about a manager's intelligence or character.
People who want PDFs or plain text resumes (often depending on the type of position) tend to be good people to work for. People who at least accept PDFs or plain text without prejudice also tend to be decent.
And, by the way, working on your resume either during work hours or on an employer-owned machine just to use that expensive copy of Word (a program I have no personal use for) legally is also not a very slick move in my humble opinion.
You may be in the majority of large corporate culture, but I can assure you that mindset is not in any way normal.
Fine.
As long as you don't mind if I GPL it.
Or C++ or Java etc.... OO programming languages are the biggest problem facing computer science. C is still the best language for any actual task to be preformed and if you need a better extension to C you drop down to ASM and interface them.
Google did something similar too. Quizzes work for us coders, we like them, and are willing even to code a small thing for free as puzzle. Like handling in PHP atomic operations in parallel where you get 300req/s, so your timeframe to do your atomic operations is very small. In that case it was a locking mechanism for cache engine -> without which DB would be always overloaded when 30 processes are requesting the same thing, and then trying to write the same thing causing cache to be practically corrupted. It was a fun task :)
Pulsed Media Seedboxes
Hell no! At least in web development, finding even average web developer here is very hard. Finding truly excellent ones? Immensively hard.
And almost all developers seems to be completely ignorant about the most important factor of code: Simplicity. With simple code you get the most maintainability, highest speed of execution and best development speed.
Pulsed Media Seedboxes
Whether or not C++ is "object-oriented" is a holy war on par with VI vs EMACS or whether goto is harmful. It's only the most obvious answer if you've only ever seen the common commercial languages. Personally I think the rise of Java proves you don't need a "real OOL" for business coding, but still "C++ has classes" is the non-contentious way of putting it for anyone with a background in studying programming language design. But maybe that's only important for older devopers.
It's not like you can't have a well-organized C code that minimizes your chances of forgetting to clean up resources, in the same way that C++ does it. If you really wanted to, you could write code that mimics object-oriented code very well in C
Nope, sorry, that's simply incorrect: you've just never seen it done right in C++. There is a specific C++ programming style that removes ordinary human error from freeing memory, closing files, releasing resource locks, etc, etc. If done right, any given resource freeing function (delete, free(), delete[], CloseFile(), whatever) appears only once in your entire codebase - and that in a one-line templated typedef.
It works better than garbage collection, because you know exactly when resources will be free, and so don't have to worry about someone forgetting to use a "using" block (or the equivalent in Java). Of course, the new C++ standard also has opt-in garbage collection, but you really only need that to implement circular graphs.
Or, in other words, if a candidate mentions auto_ptr instead of shared_ptr, I know there will be a style learning curve.
Socialism: a lie told by totalitarians and believed by fools.
Google and Apple aren't particularly great places to work, assuming you still need money. Any "sexy" company knows it can pay less and get away with it. There's cool work to be done at a great many software companies, if you filter on the actual problem they're trying to solve instead of meaningless evangelism (of course, I personally exclude Google due to my meaningless evangelism about their C++ coding standards, so I'm one to talk). As far as my company, we just had a reasonably sucessful startup exit - which is pretty amazing given the current economy, even if it didn't make us all rich as it would have in the dot-com era.
And sure, you might have several offers worth X (in terms of pay + cool problems), but if you take preparation for your job hunt seriously you might find 1.5X. A few years ago I did, after sinking quite a bit into things like new clothes, a home scanner/fax (I was looking to leave my state), professional resume prep advice, etc.
Job hunting is a game with an arbitrary set of rules. A real engineer knows how to find an optimal solution in such situations, while a poor one bitches about the unfairness of the rules.
Socialism: a lie told by totalitarians and believed by fools.
Well, I would only be asking silly questions like that of junior programmers to begin with, and so a "heads-down coder" would be an ideal find, as opposed to all the candidates who think they will be architecting systems but can't actually write a single line of code.
Socialism: a lie told by totalitarians and believed by fools.
I do a lot of interviewing for technical positions, and I don't give code challenges. Anything beyond CS101 fodder is too time-consuming, and asking CS101 questions doesn't really tell me anything ... I'm a big fan of "what's the difference?" questions. I'll take two similar technologies from their resume and ask what's the difference between them.
This is how I do it, too, asking first for the difference then for examples of where you'd use each. I find it's much more time-efficient than programming exams.
My first reaction would be to say that the expression C/C++ is undefined in both C and C++.
Of course, the presumption here is that the HR departments would actually be reading the word documents themselves -- in many cases, it'll be someone from HR screening a version of the document that their recruiting management software had processed into its own database.