How To Show Code Samples?
Todd writes "I've been looking around at 'help wanted' advertisements for programming jobs, and almost all of them demand that you not only have professional experience, but also that you show samples of your work. This got me wondering; with the work product, trade secret, and non-disclosure laws/agreements, how exactly can you show work that you've done in a professional capacity to a prospective employer without violating the privacy of the company for which the code was written? For instance, I can't say I've written many BASH scripts (at least, not large ones) for myself personally, but the assortment of such scripts written for my current job is wide and varied indeed. I can't very well just deliver these scripts, or even small portions thereof, to third parties to help demonstrate my scripting prowess. With that in mind, what am I supposed to show them?"
what am I supposed to show them?
Someone else's code
Thank God for evolution.
Like the other day, i was interviewing for a job and i said, "Well you know i did all the coding for Amazon.com right? but you see i can't show any of it to you because of the non-disclosure agreement"
For some reason i still haven't gotten a call back...
Just translate everything to brainfuck, and send that sourcecode. Problem solved.
(Some people claim that this brilliant---nay, genius---solution will just make things harder for you, but you can never tell until you try, right?)
I usually explain that various NDAs prevent me from disclosing code I've written of significance, and suggest that I be asked to complete a programming exercise.
Most employers have a set at the ready these days, and I usually respond with the 1 hour answer and the 1 day answer, the later showing an evolution of the former, with polish and usually a more generic solution.
In Liberty, Rene
Work on an open-source project, and use that code.
Table-ized A.I.
Lacking <sarcasm> tags,
I think sample code is a ploy to get rid of candidates. I have a complete site of sample code, and what happens is it just ends up being something to shoot holes at. Also, you can't give internal code that belongs to a company.
i.e. for bash scripting:
give yourself some common tasks:
create scripts for them...
i.e. create a script to fetch updates and notify you via mail(or some other means) when they are downloaded and ready for installation.
create a script that analyzes log files(yes these things have all been done by many others and you can download them in tool-kits...but that's not the point)
create a script that updates other scripts dynamically based on what they find out...
"Just Smile and Nod." --Huck
Seriously... Writing an open source project was my foot in the door for doing web development for a living.
/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
You should have side projects.
The big win with side projects that are entirely under your control is that the code is entirely your style. Almost all of the code that you write for work will have some legacy or shortcut warts, but your self-made utility code can be entirely of your own style and principles. This can be good or bad.
If you don't have any code that you can show, ask your prospective employer to concoct a reasonable example.
If you don't have any code of your own to show them, that tells them something. If they can't come up with a reasonable task for you to demonstrate your abilities, that tells you something.
Use uber obfuscated code: Example: #define w "Hk~HdA=Jk|Jk~LSyL[{M[wMcxNksNss:" http://www0.us.ioccc.org/years.html
Generally, when looking for software engineers or system administrators, I try to find the people who enjoy what they do enough that they don't mind doing it when they get off of work. If you haven't written anything interesting outside of work, and you're completely uninterested in doing so, then this automatically drops you down a notch among those that I would hire.
Beyond that, though, you can't show prospective employers things that you've done for other companies unless you own the source code. On the other hand, the company you wrote it for absolutely cannot bar you from producing derivative works from memory. That would result in devaluating your skill set, which is considered an unconscionable harm by our courts. Write something similar but less ambitious at home and present that instead.
Wake up - the future is arriving faster than you think.
Grab a couple computer science tests, some Knuth books, or ACM programming contest sheets.
Find a simple problem (one that'll take 10-30 minutes to code) and write it up nicely in a couple different languages. Use at least one OO language if you know one.
Discuss the projects you worked on, but tell them it was work for hire and stress that you respect the privacy of the other companies, but you brought other code samples for them to see.
I've been in that situation. My potential future employer asked to see some of my code. What I did was:
1) I directed them to some open-source code I'd written.
2) I told them that I could not show them the code I was working on at my current job, but I said they could ask my colleague about the quality of that code.
One good thing about 2) is that it also tells the future employer that you're not going to show *their* code around after you leave. Oh, and I got the job, although I chose to go to another company.
Find pieces of your code that show smart solutions to individual problems. Things that aren't a complete app, but illustrate your ability to find smart ways to deal with tricky situations. Provide a general context, just enough to understand the problem you were trying to solve. The way you manage to explain and document the situation and the methodology you used to solve it is almost as helpful as the code itself - they both go to illustrate your ability to confront, understand, and deal with development issues.
If you have been in the industry before and are looking to join a software company like M$ or others they will typically not ask for samples. If you get to the interview you will have to demonstrate in real time your skills.
It is a big red flag if a company asks for samples before hand. It usally indicates you are interviewing at non tech company or they have inferior managers whom can not weed out candidates well.
Really? You never wrote any code at home? In your spare time?
Never wondered how application X does Y...and could i make it better?
Open source or not, it doesn't matter. If you dont love what you're doing, (that is, being a programmer), then don't do it man.
You may say: but the money....
Well, what about the money?
There are here today, the money were here in '97, they won't be here tomorrow.
If you really don't love programming, you would be better off finding something else to do. You will never excel, you will never strive to be the best as a programmer.
You know, work is work. You do what they tell you.
but at home? At home i can go wild. I can invent 1 billion new things, i can test all my theories, i can fail and try again. And i don't care. I'm having fun. I'm relaxing.
> and almost all of them demand that you not only have professional experience, but also that you show samples of your work.
I've never heard of that. Keep looking - you'll find somewhere soon.
I used to ask applicants for 1000 lines of C++ they were proud of. Sometimes you get something really beautiful. Something that's at least decently designed and looks reliable is essential.
I've been known to send such samples back with "Your first buffer overflow is on line 42. Thank you for your interest." I couldn't afford to deal with sloppy coders in a hard real time environment.
Nobody, under ANY condition, should sign a non-compete. I've walked out of a job interview because the company required a pre-employment non-compete that extended a year after the employment period ended. So I worked for one of their competitors, and ended up negotiating a better salary. If your employer requires a non-compete, that is a giant red flag, and you should start looking for a better job immediately.
If your company requires a non-compete, there is probably a reason for it. Usually it is because they had employees leave the company to go work for their competitors. Skip the legal hassle, don't sign one, and work for one of their competitors.
Before signing a non-compete consider this:
- Do you want to be bound to your master for life?
- Do you really want to be stuck in your job because you can't afford to wait the non-compete out?
- Is the salary worth being legally unemployable? Remember, you can't get unemployment when you are bound to a non-compete.
- Do you have enough 'FU money' to fight your ex-employer in court?
The solution is, don't sign them... unless you can negotiate full severance pay during the period of unemployment into the deal... then consider it a ticket to a paid vacation.
10 PRINT "Sample Code" : 20 GOTO 10
If enithin kan gow rong it whil. (Murfey)
Make sure you contribute at least some of your time to open source projects. That you can show.
Don't you people do code outside of work? What kind of "for the love of coding" programmer are you?
Admittedly, my personal project code is a wee bit dated (it's older than my children), but it's more current than my resume...
would THEY like you to show work you did for them, later on, to OTHER employers?
Some company won't actually mind.
Not every single line of code a developper may write while working in a place is of utmost strategic importance and has to remain secret or otherwise the company will go bankrupt.
The developer should ask his/her supervisors for proper clearance to show some code that isn't a vital part for the company's survival on the market place. i.e.: Maybe you can't show the source code of the product the company is selling, but you can show the source code to tools you have developed to simplify your work.
In fact some places even authorize you to release such non-critical side project under open-source licenses.
Of course this is much easier when you work in a small company. If there are 10'000 developers in you company it's hard to check everyone's code for clearances.
...
Of course as other /.ers have said, the home projects are much better candidates to be shown in an interview.
Unless you work for a paranoid "sell your soul" companies which insist everything developer while under contract belongs, even home projects.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
unless your in upper management i don't see a non-compete being useful for a software programmer. i signed one once as a contractor when i was working on a highly specialised bit of software, it contained lots of business logic and proccess knowledge that the company didn't want me running away with (and rightly so). It didn't affect me in the slightest though i'd never choose to work in that industry ever again.
If you mod me down, I will become more powerful than you can imagine....
Remember, you are interviewing the company just as much as the are interviewing you. So, I'd ask them to see a sample of their code base you'd be working on. If they stammer and say it is proprietary, well, maybe the code you've worked on in the past is too... If they apologize for the code, then maybe you know what you might be getting into.
You can't show them even a *part* of your code? I seriously doubt the code you've written is so utterly transparent and obvious and *applicable* to your prospective employer that you absolutely cannot show them any part of it. What total BS.
Show them a clever loop invariant you came up with, or a neat subclass you created so solve a problem, or a unique but helpful GUI feature. There are lots of ways to do this.
If you told me, in an interview, that you couldn't show me *any* of you code, or describe it or write a sample in suitably generic way, I (a) wouldn't believe you, and (b) wouldn't hire you.
If they interview four times as many people as usual under these terms, they will get enough cool trick code samples for their existing staff to pay for all of the advertising and interviewer costs WITHOUT hiring anyone at all.
If they hit the lottery they might find someone with real skills with a market value of 50% of what s/he is worth to them
More anonymous than coward and my password is guest.
[csagan]
free sofWare project used by billiuns and billiuns.
[/csagan]
I'd go on a Vegan diet but the delivery time from Vega is too long. --brownkitty
I have NEVER asked for a code sample in an ad. Anyone I would consider hiring won't be able to show me code they wrote at a previous company. If the candidate has worked on an open source project, that is great. They can show me that. Otherwise we get by with what they can show us while being interviewed. We have the time, the average interview takes 6 or 7 hours (including lunch) with multiple people talking to the candidate. Plus at least one or two phone screens to make sure it is worth the time (and expense if we have to pay for travel) to bring them in.
If someone offered to show me code they had written for another company, or even worse a competitor, I would carefully show them out the door. And then contact our legal department so they know why. I hate HR related lawsuits and this can result in one.
- Dan (after a zillion years I still haven't made an account here...)
PS. I work at a large silicon company. The startups I've worked at had similar approaches to interviewing programmers.
kind of the same boat for me. Some of the things I am the most proud of are so dated that no one would care about them anymore. The little hacks you do at home can't compete with anything you'll ever do at work.
I always enjoyed doing things that on the onset seemed impossible, particularly if I was TOLD they were impossible, even if there wasn't a practical value to it. It's all about the challenge isn't it?
I work for the Department of Redundancy Department.
That's half the point. People only ask for code samples for 2 reasons. To measure knowledge, and to measure experience. They could really care less what it actually does, and what it actually does doesn't need to be that impressive. Good code structure, proper use of comments, intelligently named variables, is the code messy or organized, etc. It's just a litmus test designed to weed out the "wannabes" from those that actually do know what the hell they are doing. As an experienced programmer with several languages under my belt, I can look at a snippet of code and tell within a few seconds if the mind behind it really knew what they were doing or not. You'd be surprised the number of degree holders that apply for software engineering jobs, yet don't understand programming logic beyond 'cout "Welcome to my ATM";'.
The utility of code samples is still questionable, as anyone that asks for them may or may not understand what they are looking at. Even if they did, how do they really know you didn't just clip out a few lines of code from some random open source project?
The best thing I can suggest for things like this is to provide code you wrote for an open source project. Go find something small and simple that kind of bugs you, and write something to fix it. Post it on SF.net, and call it a day. If anyone asks you for code samples, you can provide them out of that, and even provide a link to the full source, and it's all your original work.
This is where working on open source projects really pays off.
Well, for the purpose of protecting proprietary software, copyright law requires only certain portions of physical code. Anything stored in the Library of Congress as a matter of Preserving Copyright is technically Public Record. Exploit the portions of code within the sections to have been sent in for the purpose of demonstrations, and merely explain you worked on those projects, in a manner that doesn't quite violate the letter of your NDA. http://www.copyright.gov/help/faq/
Never disregard the raw power inherent to stupidity... they call it "dumb luck" for a reason...
There are a few things wrong with your post.
For starters, you're barking up the wrong tree. A non-compete doesn't stop you from showing code samples of work you did for someone else. An NDA does, and frankly, an NDA is not an unreasonable thing to have to sign before working on someone's proprietary code base. It simply provides a legal remedy to the code owner if you fail to honor your moral and legal obligations to keep confidential that which is confidential. I see nothing wrong with that.
Next, here in California (and some other places; ask your lawyer about your place), non-competes are pretty unenforceable. When I left my previous position, I had a two-year non-compete and was considered a key employee but I went straight to work for a direct competitor anyway. Now, I didn't tell them where I was going (unenforceable or not, I saw no sense in potentially provoking anyone; I gave my new employer a copy of the non-compete as required in the non-compete; they didn't care, and that was all that mattered to me). It was about a year before anyone there who would tell or might care found out where I was working. I don't know if they told, but no one cared. I'm now a few months short of the end of the non-compete. If anyone at my former employer were to now object, my current employer would most likely flip them the legal bird (they have deep enough pockets for that).
Next, in many places - even California - most employers will ask you to sign a non-compete, even though their legal departments know (or should know, if they are at all competent) that California courts have held NCs to be generally unenforceable. Employers lobbied hard for California to be a right-to-work state, then later found out that's a sword that cuts both ways. Because so many employers (at least in tech industries) will ask you to sign an NC, it's not signing the NC that makes you bound to a master for life, unemployable, stuck in your job, etc. It's refusal to sign one that will do those thing;, if you won't sign one, you will probably find yourself remaining in your current job for a *long* time while you look for an employer that won't ask you to sign an NC.
I am not a lawyer and this is not legal advice. If you are thinking of breaking a non-compete, you might want to talk to a lawyer first, even in California. If you live in a place were non-competes are enforceable, you might want to consider having your lawyer read it before you sign it.
This is sound advice. Non-compete agreements can cause a lot of damage to your livelihood. Can you afford to be legally forbidden to work in your area of expertise?
Non-competes WILL interfere with your right to work, and unless you have money to burn on lawyers, it is a good idea to stay far away from such agreements.
I spent a year unemployed because of a non-compete, and regret working for that employer. The non-compete has inspired me to be very aggressive against my old company, and I am proud to say I took a lot of business from them. In the long run, non-competes are not worth it for either party.
Save yourself the headache, don't sign them under any condition, period.
Oh yes, let me rush to burn up 4-8 hours of my time doing some contrived, over-specified programming exercise for each job application. I have a medium-sized stack of bug fixes and improvements to open-source projects I can point to, but that's not good enough for some companies: I have to do their extra-special lame example program, because I might not be uber enough to work at their uber-elite programming company.
Once upon a time I thought code samples might be a good idea, but now I'm starting to think that it makes a good lameness filter for my next job search. IMHO they just use up everybody's time for very little benefit; you'd almost be better off just hiring them at a low probationary pay rate and see how they actually perform in your work environment.
[b.belong('us') for b in bases if b.owner() == 'you']
is to write programs under an open source license that do the same thing as the programs I was paid to write under a closed source license. Just a different way to solve a problem, and done a much better way than management wanted it done anyway.
Then show the open source version of software, and say that the originals are closed source but solve the same problems but in a different way so it does not harm the IP of the employer, and can be licensed to be released into a closed source version for a future employer. Also I give them a NDS to read and sign before they can view the open source version. I write the open source version on my own time, at home, and not on the employer's time. But in my case the employers don't have me under contract since 2001/2002, so more than five years of the no compete for five years employment contract is up with them, and I am free to write my own code that may or may not compete with their products.
Sure it is reinventing the wheel, but it is 100% legal and does not infringe on anyone's IP.
Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
Show some confidence - don't wear a suit to the interview.
A good-quality shirt if you're a PC, a turtleneck if you're a mac, a T-shirt if you're linux, or a leather jacket if you're *bsd.
Slacks if you're a PC, black jeans if you're a mac or *bsd, blue jeans if you're linux.
Dress shoes if you're a PC, loafers if you're a mac, runners if you're linux, boots or sandals if you're *bsd.
No hat if you're a PC, a kepi if you're a mac, a ballcap if you're linux (a red one if you're Fedora/RHEL), and a shaved head if you're *bsd.
A briefcase if you're a PC, a leather portfolio if you're a mac, a softsider if you're linux, and a pull-behind carrying a 4u server if you're *bsd.
A crackberry if you're a PC, an iPhone if you're a mac, any flip-phone if you're linux, Chuck Norris if you're *bsd.
Your resume in Word if you're a PC, as a video clip if you're a mac, in openoffice if you're linux, and 7-bit clean ASCII if you're *bsd.
Hide your Zune if you're a PC, subtly show off your iPod if you're a mac, wow them with streamripper if you're linux, and run a script to make the sound of the drive heads seeking play "Take this job and shove it!" if you're *bsd.
A business card if you're a PC, a mini-dvd if you're a mac, a bootable distro dvd with customized splash screen, borwser, etc., if you're linux, your phone number and email address on the back of a beer coaster if you're *bsd.
Coca-cola if you're a PC, bottled water if you're a mac, real beer (not that 5% piss) if you're linux, shots if you're *bsd.
I did some smaller contract work on the cheap with the stipulation that I could use the code I wrote however I wanted. That's where most of my code samples come from. Smaller shops are often willing to compromise in ways bigger corps aren't, especially when it's possible for them to save money.
You could also just whip up a reasonably professional sample app and explain that your "real" code is locked up with your old employers. Companies worth working for, and recruiters worth talking to, will understand your situation. They probably have clauses in their standard employment contracts that restrict their employees in the same way, after all.
By the way, this is another good reason to contribute to Free Software.
Game... blouses.
StoneCypher is Full of BS
not necessarily. If you can, be professional and treat the documents as (at least somewhat) confidential. Maybe you are willing to discuss a program listing with them, but that the copy you bring leaves with you.
If you cannot show them work from your previous jobs, show them projects from college or ask for a test.
Anyway, I suspect that you're dwelling on this issue. Work around it as much as needed.
Demand that the bulk of your time interviewing is with the people with whom you will work. If you suspect that it isn't the case, then you could be facing a fucked company and you should stay away.
A previous poster raised an excellent point about seeing some of *their* code. It's far more relevant to the issue at hand - your working there. That's what my company does when they interview. They hired me, but after a while they didn't think I was so hot at the job. To be fair, they might be right. Interviews are always sketchy. But that brings me to my next point.
Don't be afraid to sell whatever skills you possess beside programming. If you're good with spoken language, systems administration, or a soldering iron, sell it... if it's at all relevant. My company hired me partly because I offered them some ancillary skills. As it turned out, they and I are relying on them to maintain our relationship.
Find a way to be interested in the job in ways that don't involve programming. Skateboard makers have programmers. If you happen to love skateboarding and you see an ad for some job that's connected to that industry, consider pursuing it aggressively. Jobs don't always turn out the way you expect, but if you *fit in* to a company you have a good chance of finding some happiness.
Oh, and here's a nice thing to do under certain circumstances. If you *really* think want the job, tell them that you would like to work for them for one week for no salary. You realize that it's too short a time to offer them much real value, but that it's worth the investment in your time and that it's the best way to show them what you have to offer.
I generally won't even interview someone unless they can provide me reasonable code samples. This could be as simple as "here's my perl script that sorts my mp3 collection" or "here's my code to navigate a 3d space/time model of the current locations of sattelites".
I would never expect someone to provide me samples from a previous job. That seems tasteless to ask for or provide.
I think most people are just looking for stuff you can do on the whiteboard - reverse a linked list, intersect X with Y, blah blah blah.
I believe the best candidates think of the whiteboard stuff as boring and mundane, and have more interesting personal/side projects they can show you which give you a great idea of their skill and interests. Nothing makes me happier than hearing "I modularized the TCP stack in the 2.4 kernel, just for the hell of it".
You sir, fail.
...that you have contributed to. Specify what work is yours, what is not. Be very clear on this point.
Do not give directions on how to download the code. Just the URL. It doesn't have to be some big open source project - it could even be hosted on your personal box.
If someone there actually sees your work without asking for directions, only then would you want to consider working there (or even taking the time to interview.)
I am very small, utmostly microscopic.
Where I currently work they do not require non-competes, and it gives me the freedom to be able to leave my job at will. Just remember, if you sign a non-compete, you will have a difficult time switching jobs. If opportunity knocks, and you have a non-compete, you are pretty much screwed.
Before signing a non-compete, make sure that your company compensates you extra for the added risk of you being unemployable after you stop working there, otherwise, keep looking. Non-competes almost always have severance pay (hush money) in the agreement, be sure that this amount is enough to live off of.
This is in itself a test: If you provide them code from your previous job, you fail because you are not to be trusted. If you fail to provide them code from your previous job then they can't steal your former employer's secrets, thus you fail. Good luck solving the puzzle.
-- Anyone who has never made a mistake has never tried anything new. -- Albert Einstein
Most hiring is done by managers who haven't give too much thought to YOU. An alarm pops up on their Outlook/Crackberry, they print/grab your resume' and head to the conference room (if you're lucky).
My strategy has been to bring a binder of code snippets in (courier-new) font organized by language. This is excellent for two reasons, 1) You have something to talk about when they ask you the "Tell me about yourself and what you've been doing." question as they quickly scan your resume' and 2) You will look prepared and competent and be able to talk about the projects and programs you have worked on.
Additionally, you may also wish to bring some screen shots, business process/data flow diagrams, and a database table relationship diagram to show that you can visualize a complete solution and start with a business process and drill down to database layouts and code. The nice thing about having all this in a book is that you can do a show and tell without leaving your current company's proprietary code lying about. Resist the urge to give out copies, CDs, or organize this into a website since this will keep you out of potential hot water. Remember, you are showing small code snippets, not 10,000 lines of code. The goal is to show off a bit without giving away any secrets.
this was the essence of the non-compete i signed, that i wouldn't run off and start my own business in competeition with my current employer, using their own business methods against them.
an NDA just doesn't cut it for this, because i'm not technically disclosing anything to anyone. NDA's are only to stop you telling the world someone elses secrets.
The bottom line is most contracts aren't worth the paper they are written on, and that we ALL sign stinker contracts (check out your mobile phone contract....), but those contracts which aren't fair will lose ultimately. IANAL , but i did get legal advice before i signed the above contract and my lawyer said it was fine. i think getting legal advice is also important if you think something isn't right or your making a big commitment.
If you mod me down, I will become more powerful than you can imagine....
Periodically when you are working (long, long before you are looking for a new job) ask your supervisor if you can use a particular chunk of code as a code sample in your portfolio. Don't pick a mission-critical routine or something business-centric (those won't translate much into most job interviews anyway).
I've been doing that since my first programming dig and only been denied once.
Make sure you attribute the copyright and permission accordingly and keep the permission in a safe place (CYA).
interview.
A good-quality shirt if you're a PC, a turtleneck if you're a mac, a T-shirt if you're linux, or a leather jacket if you're *bsd.
You left out a hemp safari shirt.
Slacks if you're a PC, black jeans if you're a mac or *bsd, blue jeans if you're linux.
Cargo shorts.
No hat if you're a PC, a kepi if you're a mac, a ballcap if you're linux (a red one if you're Fedora/RHEL), and a shaved head if you're *bsd.
Beret.
A briefcase if you're a PC, a leather portfolio if you're a mac, a softsider if you're linux, and a pull-behind carrying a 4u server if you're *bsd.
A backpack.
Coca-cola if you're a PC, bottled water if you're a mac, real beer (not that 5% piss) if you're linux, shots if you're *bsd.
Camelback of fruit juice and bottle of homebrew.
Falcon
Should there be a Law?
A question that I always ask interview candidates is whether they do any programming outside of work. It's a great question to learn whether a person is a Real Geek...folks that program because it's fun for them almost always get involved with some outside project. While I understand that a passionate civil engineer might not have the time/money to build bridges in their free time ;-), software is cheap to do as a hobby. 'Fun' stuff would be great to show your potential employer. Assuming, of course, that you do some ;-).
The Right Reverend K. Reid Wightman,
My manager once went down to a local university to tell the students something about the real world with regards to the job market (and to plant some recruitment seeds while he was at it). This same question came up: what do you show?
Some people have mentioned that contributions to open source are a great solution, but interview time is not the time to start joining projects. Fortunately, there's an obvious answer...
The important thing is to demonstrate ability, so the only thing that matters is that the code works and shows you know what you're doing. My manager said the best piece of sample code ever submitted was by a guy who wrote some code specifically for the purpose of interviewing. You'll know what they want to see if you're interviewing and you have plenty of experience with that proprietary stuff you can't show off. Make it work.
The code doesn't have to simple, but let's not make the code request any more complicated than it has to be.
IANAL but i can't see how anyone thinks blanket clauses like "you won't work for anyone for 12 months" could cut the mustard in court without them paying you the whole time.
If you mod me down, I will become more powerful than you can imagine....
Recently, when interviewing, we asked a similar thing, but with two differences: we asked people to compare and contrast it to some ugly code, and we didn't require that it be their own code.
What I want to see is that you know the difference between good and bad code, because that's a slowly-acquired judgment skill that I can't teach. If you can't even see that there is a difference, obviously you can't do it. The level at which the comparison was taking place was a big thing. "Meaningful variable names" is trivial; a good applicant will point out well-factored code and clean interfaces.
And I have to say, it really separated a lot of chaff. We had fun passing around and laughing at some of the applications. There was one memorable one where I liked his "bad code" more than his "good code"; the latter was broken into such small micro-functions with such overly verbose block comments that it was unreadable.
This is bash for crying out loud. Just show em' the man page and tell them that is what you do.
Spite goes a long way, and suing an ex-employee because they chose to work for a competitor can instigate a retaliation.
Go to OSCON this year, attend the sessions with Larry Wall, Guido van Rossum, Damien Conway, etc. Write down the code samples and then take those to the interview.
-- "In order to have power, I must be taken seriously." -Mojo Jojo
I missed this if someone already said it. I'm not one to go around pushing open source, but contributing to more community projects would be the solution to this.
That or some personal projects. They could be looking for the people that live and breathe code. They type of people that would write code at home in their own time.
Just a thought.
Im a gamer, not a grammer major. This post is full of spelling and grammer mistakes.
1) Write yourself a fancy proprietary encryption algorithm
2) Encrypt your source code files
3) Send them to yourself via outside proxy
4) ???
5) Get a job and PROFIT!
Give them your PAUSE ID, and let them look your work up on the CPAN. HTH.HAND.
Cut that out, or I will ship you to Norilsk in a box.
do not ever put anything other than water in a camelback. It WILL get nasty.
I've had Camelbacks for more than 10 years and I've always put juice and soda in it and never had a problem. I run hot soapy water through it and use a brush I have for cleaning the bottles I use for homebrewing. The only problem I've had with Camelbacks is once in a while I have to replace the bladder because of a hole, new bladders used to cost as much as a new Camelback.
Falcon
Should there be a Law?
I would think that a prospective employer would rather speak with your previous employer than look at your work.
Wanna fight ? Bend over, stick your head up your ass, and fight for air.
Ya know, I went out to a bar once and saw this beautiful blue-eyed brunette. Got her a few drinks and one thing led to another...she did not ask me to enumerate which chicks i've been with - she just expected me to make her a woman...
you get the picture
Being asked for code samples in an interview is bullshit. It has never happened to me.
Go find another employer, one who will discuss previous projects, pitfalls, solutions, science, the passion behind what you like to do and what you'd bring to the organization, stuff that demonstrates your ability and skill. No need to kiss and tell.
On behalf of the people that are the ones asking for code samples, your response answers 50% of what the employer is looking for.
We're not necesarily looking for someone with tons of open source experience, or who does lots of other work at home.
But for the sort of positions where you DO ask for sample code, you are intentionally looking for people who ARE programmers, not that just DO programming.
For high level positions, I generally ask for 5,000 lines.
The really top notch people are going to have SOMETHING they can provide. This could be work on an open source project, or some insane project they only do at home, or even some shareware tool they make some money off on the side.
But there's generally something.
If you don't have the code, then the question is no longer one about assesing your programming skills, it's now about assessing your personality and profressionalism. Will you make excuses? Will you write something just for the request? Will you offer to program something?
I've even had one guy who came to us from a bank that responded, "I can't show you the code, but I could give you the header files and documentation?" (he was hired)
Since you obviously don't have the code, bear this mind.
In India (at least until recently) it's fairly easy to hire people cheaply that can't afford or doesn't use a computer at home, for whom programming is something they were only trained for an just do at Their Job.
If someone is asking for code samples, at that point they DON'T want people of that calibre. They want GOOD people that they can give responsibility to and trust the decisions of safely.
Your job is to demonstrate that.
For the last 4 or 5 years that I was programming for a living I maintained a portfolio. I wrote a small application (about 2000 lines of code). I followed my own personal process for implementing it. I kept the planning, specification and design artifacts (fairly lightweight since I prefer to do something similar to XP).
Then I chose a couple of interesting areas in the code and annotated them. I explained what I was doing, why I chose a particular design approach, some aspects of my personal coding style, etc, etc.
The whole thing took me a month or two of working on my own. Then a little bit of time to keep it up to date (based on what I continued to learn over the years). While it was a toy problem, I found the exercise extremely useful for my own personal development. And when I applied for jobs I gave a link to my portfolio on my resume. This gave people a really good idea of what they were getting if they were to hire me.
I highly recommend any programmer to do the same. It *is* a fair amount of work in the short term, but the benefits far outweigh the costs. It's not just about getting a job. It's also about really understanding your own personal style.
http://www.storeingame.com/ http://www.storeingame.com/aoc-gold.htm http://www.znyj.cn/ http://www.feiyun8.cn/ http://www.pastemark.com/index.asp http://www.feiyun8.cn/post/wzwebsite.html http://www.feiyun8.cn/post/wzwebtuig.html http://www.feiyun8.cn/catalog.asp?cate=4 http://www.ymcmotor.com.cn/index.asp http://www.ymcmotor.com.cn/product.asp http://www.65853721.com/post/wenzhouwangzhanjianshe.html http://www.65853721.com/post/wenzhouwangzhanjianshe.html http://www.65853721.com/post/wenzhouwangzhanjianshe.html
When I read the headline my first thought was "Pastebin, of course!".
I interview quite a lot. I used to ask people if they'd worked on open source projects so I could see examples of their code. Not one person I interviewed had contributed to an open source project. So I came up with my own code samples. I picked some code from Sun, an example from one of the O'Reilly books, and one more from the web. I ask candidates to read the code, tell me what it does, and what would they do to make it better. These are short code samples, all three print out on a single sheet of letter-size paper. This simple test takes about half an hour to talk through, and is surprisingly revealing about the skill level and knowledge of the language.
A lot of people are really smug and say "Sorry my NDA won't let me". This is a clever way to get people to admit they never code anything for fun, and as far as I'm concerned, that is a *very* damning statement about an engineer.
Furthermore, even if you didn't have an NDA, a 200 line snippet of commercial code is rarely very interesting at all. The code for "confirm empty recycle bin" isn't getting you hired.
My advice:
* Solve an algorithmically difficult problem efficiently. Here's a site with a few examples: http://www.itasoftware.com/careers/jlisting.html?jid=20
* Include integrated test cases. Smart programmers know they make mistakes. Make it dreadfully obvious that your program is correct.
* Don't be too clever. Demonstrate that a 1% performance improvement must justify any incomprehensibility that it introduces. One thing that *really* pisses me off is when candidates write optimizations that any reasonable optimizing compiler would do.
* Have good comments.
* No compiler warnings if you want the job. Keep in mind they may compile it in a different environment.
* If you have the time, make it tangentially related to the company -- a small opengl demo for a game company, a graph algorithm for a search engine company, something tricky in c for an os company, etc.
* Don't write it in Java, even if it's a Java job. Monkeys can write Java.
* Be elegant with formatting. It doesn't really matter what spacing/indenting standard you follow, but be consistent.
* Don't pretty-print it on your website. Provide it in compiler-friendly format.
Also, as far as stealing open source code and claiming you wrote it ... if they suspect you're full of shit, they'll do a google search for it, and almost all open source code gets pretty-printed onto websites these days, and that sort of thing is an instant rejection.
Instead, show them an executable version (or video of one running) and give narration on how you managed to resolve certain issues, letting them see the results of your work. It's probably vague enough to prevent disclosing any major trade secrets and still gives some idea of your overall capabilities.
For added protection though, you might want to have your employer agree to let you have an executable version of any software you write (or at least, some form of pre-recorded clippings of the software in action using dummy information) for your portfolio beforehand.
Showing off actual code is definitely a bad idea for a number of reasons. First off, it's a huge breach of security as it could expose potential exploit point in the software. Next, it's obviously going to be a legal nightmare should that code show up somewhere you've been with it. Finally, code by itself just isn't that interesting to look at unless you can see it in action. It's unlikely the one's hiring you will be able to read and understand any code you show them, but they can probably recognize the benefits of your code through comparisons of it against something else that performs a similar function. If they see that the code is somehow faster or does a better job than the item it's compared with, it'd probably be good reason for anyone to consider hiring you on as a developer.
8==8 Bones 8==8
Get a lawyer to draft an imposing looking boilerplate legal release indemnifying you and shifting legal responsibility for showing another company's IP to the intervier's company. Tell the interviewer that you understand their request and that you'll be happy to oblige them after we take care of some "straightforward legal procedures". Ask them to sign your release document and a 3-way non-disclosure agreement on behalf of you, your former employer, and the company you're interviewing with.
If done in a light, non-insulting manner this should help them understand they are asking for something they probably shouldn't be.
I'm not normally one for "me too" posts, but yes, I agree wholeheartedly with the parent's sentiment. If I demanded that each company I went to an interview with have someone spend several hours completing my custom coding challenge so I could judge the quality of my potential coworkers, would that be considered reasonable? I doubt it; it would cost them a lot of money with no guarantee of any return on their investment. Likewise, I am a professional, and I expect to be paid for my time. If it would be excessive for them, it is also excessive for me.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Start a blog, start showing example scripts and things you know. Host code. Don't write it -all- for the man, because the man isn't going to give you everything. You have to always leave something in the tank for yourself.
This is my sig.
I had an interview and recognized that much of what I have done would not be sharable due to IP issues. However, some code that I worked on at Atari for the 1030 modem was now in the Atari museum. I got that code from the museum, because I didn't even have it myself, and shared that.
Yes, that makes me a fossil, but at least one of the interviewers had written 6502 assembly code professionally.
So, is a code sample that is now a museum piece a positive or a negative?
Oh, please. A decent interviewer can tell in about 30 minutes of decent conversation in the subject area that the candidate knows what the fuck they're talking about and can probably do the job. A good interviewee is convincing in at most 15. Beyond that, the only question is fitting in well with the rest of the team and org.
You could offer them an NDA.
Seems reasonable in this day and age.
Good judgement comes from experience, and experience comes from bad judgement.
- W. Wriston, former Citibank CEO
I can tell you a couple of things:
1. Do not show anything that will violate your current or prior agreements. If you are asked to do so then walk away.
2. Do prepare some reasonably substantial work of your own even if it's only purpose is to be part of your resume. Make it your best quality work and be prepared to go through it and explain your design choices. That is how I will know it's your code, that you have a clue, and how you will fit into our team.
Think of it this way: You've got time to prepare your resume. So you've got time to write some code. It's part of the project.
If you are not prepared to go through this exercise then you are at best just another applicant. There are plenty of folks out there touting degree this and cert that and I worked on thus-n-such, but can't show you... Most of those folks are disasters looking for a place to happen.
On the other hand, if you are prepared then you've shown me what you can do and that you "get it". I'm not asking for much -- this is what you do right? You are proud of your work? You do care about it right? You are still developing your skills and expanding your craft right? So - show me!
The kind of developers I want are the ones who code not just as a job, but because it's what they do and part of who they are -- folks like that generally have lots of little tid-bits floating around that belong only to them, or they can come up with something on short notice with almost no effort. The best are those that wrote something kewl last weekend to try out something new and can't wait to show it off! Those are the guys with a shot at ending the interview with a new position! (instead of a call-back, maybe...)
Zombie coders with crushed souls looking to punch a clock need not apply.
The more "fire" you can show me about "your craft" the better. I want creativity, competence, and heart. -- no clock punching monkeys and especially not the arrogant guys that are too good to be bothered showing some work. Too busy to do it? Then you'll either burn out (if you're not already), or you don't have chops, or you're so damaged and abrasive that you'll hurt team dynamics, or some other ugly thing I don't want.
Hint: Contributions to open source projects can be great examples... but don't make me hunt for them. Bring them in and show them off!
You're a developer -- you claim you've got game, so show me!
Maybe its different positions, but so far in my current interviews, I have not had to provide samples of existing code, though I have had to code up a problem on my laptop and for others do whiteboard coding. I do have one interview coming up that wants me to to do a 45 minute powerpoint presentation.
Just anonymize it a bit. Translating into lolcode would be a good start.
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
jeeze...ever hear of actually writing something at home? cmon....
One method I have seen used in similar situation is to offer to being in a printed copy of the code that will not be left behind.
They can peruse it during the interview but they can't keep it.
If you have sample code you _can_ show then bring your laptop. I think it is important not only to show you can code but how you go about solving problems. If an interviewer expected me to "code" on a whiteboard I don't think I would want to continue the interview. Whiteboards can't compile or execute code. Also they can't show how well you know vim or emacs or how well you've configured your environment. These are all important and can tell you a lot about a developer.
Chaff is the husk around a grass seed. Wheat is what's separated from chaff, not weed. The chaff is the bad part.
In my recent job search, I had two companies ask me to do 4-6 hour coding exercises.
In the first case, I went to town creating fully-commented, production-quality code complete with automated tests. It was more than they asked for. In that case, it didn't matter, I was turned down for the job. The solution was so damn good that I think they thought I copied it from the web, even though I had not.
In the second case, I produced code that looked more like a proof-of-concept. It worked and matched what they were asking for. But, it wasn't properly documented, wasn't production-quality, and didn't include the automated tests. It was clearly my own creation, but I again was turned down for the job. They said my code wasn't good enough.
So, apparently there isn't a happy medium. If you solve the problem to their required level, then they think your code is shit. Actually go all out and give them more than what they ask for and they think you've copied it.
Either way, I put in over 10 hours and got absolutely nothing from it. I agree that if a company asks you to do a programming exercise on your own time, then add them to your 'lame' filter and walk away.
A compromise is possible.
I compile (pardon the word) a collection of pieces of code I have written... but with anything proprietary or identifying redacted. And I am very liberal with the redaction. (I should add that while the chunks may be large at times, I also do not give them "complete" methods or routines... nothing that will actually run as-is.) So they get good samples of code that are identifiable as REAL code, but I am giving them nothing that violates my NDA agreements: not only will it not run because of incompleteness and redactions, but they get no proprietary information either.
This shows them not only that you are capable of producing professional code (give them enough to see that), but also that you are a person who is careful to honor the provisions of your contracts.
It works.
Show them someone elses scripts and write your own full and comprehensive description of what they do - Ask for challenges from potential employers explaining you can't produce any code but are willing to explain how you feel a script they present for you is working. That way your current employer can't scream foul unless he also has written in other nasty clauses in your employment contract... Always ensure rights to own work and always ensure your right to produce work in your free time - Slavery was abolished by the Vikings in Northern Europe a loooooong time ago, but apparently slavery in a more modern form keeps cropping up it's ugly head now and then in the form of contracts that tie you down hand and foot. Remember people - They need you more than you need them!
Say you are sorry but do to past agreements you can not offer up examples from past jobs. However, you free to show past homework code or you are welcome to write an example code for them showing the basic understand of various useful concepts. Ideally not solving a companies coding problem during the interview process.
I use the project I had to do for the SCJD exam process. Even though it's Java I can show that I fully understand OOD, low-level IO, concurrency, GUIs, networking, documentation, common coding standards, etc... Even if the job is using C# or C++ the example works very well and generally people are surprised at the difficulty and comprehensive nature of the project. It also shows that you can follow detailed, specific instructions that are full of loose ends. My advice is do the SCJD exam and you'll have a free and clear showpiece of code that includes many advanced development practices. For Java gigs, the cert can open doors as well.
I told all the potential employers that I had extensive programming experience, but most of it was under NDA agreements. Most of them were understanding. I suggested to all of them that they allow me to preform some sort of exercise to show my skill, or start me on a one week trial with no contract. Luckily I also had a couple of OS projects, which I had very painstakingly made beautiful because I knew others would be reading and working on the code in the future. Personally, I think that any employer who can't deal with the NDA issue, isn't worth working for.
In my most recent interview, instead of asking me to show code I had already written (which I had referenced via an open source project on my resume, anyway), they ask me to actually write some code on the whiteboard and explain why I would do things the way I was doing it. The interviewer asked for a specific algorithm example. But he was less interested in whether it would actually work (any good programmer can make code work), and more interested in my thought processes in figuring it out.
I ended up doing much the same thing there when I had the task of interviewing more programmers.
now we need to go OSS in diesel cars
I'm on the other side of that fence. I've had to spend a fair amount of time reviewing code submitted by candidates. Trust me, it is burning up the company's time as well (well, at least in my case...), and it does provide a lot of additional insight into potential candidates, if done well.
I've never had anyone point me towards open-source contributions, but that would probably be a very big plus and potentially waive the "take-home problem". I'm sure we've lost a fair amount of good candidates who share your sentiment—but we've also weeded out enough poor candidates that it's worthwhile overall.
what am I supposed to show them?
show them your tits... works every time.
Wut, you thought you wouldn't ever have to work for free? LOL LOL LOL LOL
Some genuine clients ask for sample code, most though are looking for FREE CODEBASES and you haven't even met them yet and signed an NDA or anything have you?
If you do any programming as a hobby, write about the little projects you do in a blog, including full source. Not only could it be useful for showing to a potential employer, but it is a nice way to keep a record of your hobby projects to look back on. All your code is saved, backed up (via the Torvalds backup method), and documented.
People reading your blog can benefit from your own learning experience, and in a hands-on way too. (I do all this myself, which is where that "Homepage" link above points to.)
The company I interviewed with (& got hired) gave me a three page long set of questions (about 10 total), only 1 of these questions involved writing ANY code (any language, fill in the method/function), another asked about terminology about a particular language (HTML for a web dev company) and many of the other questions focused on employee & client interaction, also a question on methodology & another on creative approaches.
This questionnaire was given with no one else in the room (conference room) with no time limit -- once complete, the real interview began. (they didn't use my answers in the interview or look at them at this point, but I'm assuming that it played a large part in my call back).
The rest of the interview consisted of various Q/A by upto 5 staff (although for the majority of the interview there was only two staff doing the bulk of the questions.
There was a candidate at a small company we interviewed who provided some code samples from his previous employer without being asked. The President ruled the candidate is ineligible from ever being employed by the company because the candidate violated the IP rights of his employer.
You didn't? We actually had one contractor here who singlehandedly wrote Google's search engine, according to himself and to the PHB from the company selling him. (Apparently he wrote it for some small startup, that got bought by another dot-com, who got bought by Google after Google had their IPO. That's not the story of Google's search engine how I knew it, but it just shows I was wrong;)
Meaning at least one corporation paid for that kind of expertise, possibly the contractor peddler too.
We were all excited to see such a guru in action, especially since we did need a good search for the portal. Mind you, we would have settled for using Lucene, but something Google-class would of course be even better. He left for some other project after a couple of weeks, though.
Hmm, only now it dawns upon me that I had worked before with someone from the same contractor company, who had coded AOL's search engine. I guess they must have a really strong competence on that domain ;)
A polar bear is a cartesian bear after a coordinate transform.
In Denmark the first 3 months of your employment both the employer and employee can terminate it with a days notice. After the 3 months "test period" and until the first 6 months of employment both parties have to give 1 months notice. After 6 months the employer has to give 3 months notice, the employee has to give 1 month. This goes on at regular intervals (for the employer), employee stays at 1 month notice.
The good thing about this is both parties can try each other out with very limited damage if things doesn't work out. However, if the employer does like what you do, he is stuck with you and you can start making plans for your life. This way we don't really need to see your code, we can just terminate your employment if you can't do what you said you can.
You speculate that they turned down your application because it was too good?
So you didn't actually ask why they turned you down? You just sit there with a grudge, making most likely false assumptions. Smart move.
Ever crossed your mind that they might have found someone just as good, but with, perhaps more experience? Or asking less pay?
Yeah, I suck at interviewing people. I have no idea what to ask, I don't know Java, C, C++ etc.
So the sort of thing I ask coders is "what have you done, that's not work/uni related, that you find notable or you're proud of, and why?".
I'd ask the same thing to artists (I don't know the technical details of using oils, photoshop etc).
If the "artist"/"programmer" has been out of work for 6 months and has not drawn/coded a single thing for fun, I don't think I'd want to hire him/her.
Whereas if the Artist is idly doodling something cool/cute/nifty/artistic on the sheet of paper on the interview table, then I'd want to hire him/her - the art is just "overflowing" from that person.
But what do I know, I don't work in HR, and often it seems companies just want cheap bodies, because I guess "good enough" is good enough.
How long before this and other ridiculous interview and hiring techniques fall to the wayside with HR and management?
There are thousands of useful coding projnects over at Sourceforge: pick one or two that relate to tools you use, and help update or debug them. Post patches, and you'll have it online there as a matter of public record. If you management doesn't want you to publish such tools, gently steer them to the details of GPL licenses: GPL code is particularly good for this. Perl modules are particularly good for this, published over at CPAN.
At my last job interview, I was able to point to 3 products that they used that I'd contributed to at least 5 years previously, and one product they were contemplating using that I pointed them to bug fixes I'd published.
Todd is asking a obvious and wrong question. He wants to make a job interview and figure out what the Guy can. The questions he should ask (read: my way) are:
* what programming language can solve what problen ? set a fix language or problem
* did you participate in an open source project ? what did he actualy do ???
most people here already said that even when sone shows a code sample is says nothing.
talking to people to figure out what they can do is one of the hardest jobs at all. and always remember that throwing more programmer to a late project makes it ever worse.
It was an experiment, but it worked extremely well. At first the candidate is nervous, especially since (s)he is not likely to have experience in pair programming. But soon (s)he settles down and starts to get into it.
The one I ended up hiring was the one that I had to force to stop after one hour. He still wanted to make a little adjustment here, add some functionality there. Easy to tell he was very passionate about his work.
There is no way you can fake the thought process when you have to develop software it in real time. I can recommend this approach to anyone.
So, to anwser the question: you could offer to pair program with one of their developers.
Something beyond handling text input and sorting lists... Like you C++ SSE2-optimized Navier Stokes water simulation.
If some one ask you to bring your code to an interview answer this: Would you ask a farmer to bring their fertilizer to the bank when asking for a loan so the loan officer may take a whiff? Of course not. You would ask him about his farm. About his tools and machinery, about their property value and then method of irrigation, crop rotation, tilling or non-tilling, credit history that sort of thing. And btw, organic farms use standard c.
- these are not the droids you are looking for -
As a hiring manager I find preconceived code samples worthless. There is only one way to know if someone can code during an interview, and that is to pair program with him/her.
I use a technique I learned from Rob Mee at Pivotal Labs. I spend roughly an hour test driving a simple project with the interviewee that Rob specifically crafted to determine the capabilities of the candidate, from the basic level of competency up to that Rockstar ability to spot the elegant solution intuitively.
During an hour of pairing with someone you get a good idea of what they can do, much better than you can from reading pre-fabricated code samples or merely asking quiz questions (whether about stuff someone can memorize from a book or silly brain teasers).
I am currently undergoing this same predicament for last 6 odd months. I am asked to a sample project especially if the size becomes much larger and whatever the project. The enthusiasm is much lesser, the amount of collaboration is much lesser, and the prize for doing this is even lesser. I end up not doing it getting bored. Though feeling guilty of not being able to do assignments dog me. But, unpaid assignment irritate me much more.
I for myself cannot find an answer for this though.
A lot of companies won't tell you why you were rejected. In a lot of places, you can reject candidates for no reason without issues but if you give a reason then you are leaving yourself potentially open to discrimination suits.
I am TheRaven on Soylent News
Try working in the world of Top Secret government training. "Sure I can develop realistic, engaging Flash simulations of your software if you hire me. A sample? Errm, I know this is gonna sound flaky, but I can't actually show you any of my work..."
I absolutely concur. I'll usually be blunt and indicate that I'm interested in the solution methodology and not the specific answer, and I'll probably send the candidate down a dead-end road to see how he reacts.
... I probably can't teach you how to be less of an asshat. A bad attitude is destructive, no matter what degree of "leet skills" you think you have. Unless you're being harassed or threatened, walking out of an interview is a mistake.
During an interview a couple of years ago, the candidate was stunned when I said that I didn't have an answer to the problem, and that we'd solve it together. So I explained, "Son, life doesn't come with a User Manual, Reference Guide, or more importantly, an Answer Key in the back." I think he completely missed the point, and unsurprisingly, had little in the way of problem solving skills. Reminds me of a line in Men in Black - "Gentlemen, congratulations. You're everything we've come to expect from years of government training."
When I came out of college, I went on a particularly brutal interview. One section involved critical timing paths (I'm an EE,) and the interviewer tossed a simple schematic on the whiteboard. I looked at it for about 5 seconds, and told him what it did. He paused and asked, "Are you sure?" His tone clearly indicated that I was incorrect. I looked again, and stood my ground. I further pointed out that he had a potential setup/hold timing violation depending on what parts he was using. I spent over an hour with this guy, and he asked some seriously challenging questions. I found out after the fact that he was notorious for chewing-up and spitting-out candidates, and that his interviews rarely lasted more than 20 minutes (he was effectively the CTO, so time mattered.)
The lesson here is that a proper interview is geared toward making sure you have both technical chops and people skills that are compatible with the company. I can teach you new tech stuff
Solve an interesting problem. Here's one I worked on a few years back. http://www.frank-buss.de/challenge/index.html. You can do it in one Saturday afternoon, and it should be fun. Polish it up, be prepared to explain your solution, and you're set.
One of the outfits I interviewed with was having problems, so they asked me to "look over our guy's shoulder" and tell her what she's doing wrong. That made me nervous. I'm an autodidact, she was trained in C.S., so we don't speak the same language although we were both using Visual Studio C++ and MFC. But we dove in, and pretty soon it was obvious what the matter was: She'd declared a huge object in stack space, instead of using a pointer, and was overwriting her own return address with some sloppy bounds checking, but there was no way I could explain that. Like almost every pro I've worked with, she was trained in "Microsoft's way" of thinking abstractly and had an awe of the tools which bordered on reverence. She had, in other words, never done any serious assembler work in her life and had no idea what the MACHINE was doing on the stack. I floundered, trying to explain. My mouth doesn't program, my hands do. But the guy who sat next to her "got it." She was in good hands. So I left. Didn't get hired. Didn't pursue it. That was the first job interview I ever seriously considered billing for my time.
``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
whose employment agreement precludes them from working on open source projects?
I work for a fairly large company, and my employer at least allows me to work on OS projects, *with their approval*. The approval process is rather cumbersome, which keeps everyone except the most die-hard supporters from doing it.
For people like me, I'd have to show them code I created back in school, or when I worked for an employer which didn't have such a restrictive employment agreement.
The society for a thought-free internet welcomes you.
Well my bad, around here people are sane and don't sue left and right.
In the interview, they criticised some code of mine saying that all variables needing to be zero at the start of the program must be explicitly initialised ("= 0").
I said standard C/C++ - *any* standard - guarantees that uninitialised integer globals are zero at the start of the program, and furthermore, explicit initialisation takes more space in most executable formats.
Turns out they work with embedded systems where they turn off zero-initialisation, for a slight improvement to boot time, so they aren't using standard C/C++. They didn't know that.
I understand why they do that, but it does seem counterproductive nowadays. It means you can't use any 3rd party library code, without changing it first. It will compile but break. And if you need the boot time speedup, there are other ways to get it, such as marking variables which don't need to be zero-initialised with an annotation.
In other words, C89 is *not* guaranteed to work everywhere even nowadays. (These were TV set top boxes, btw).
Btw, I didn't get the job. Something tells me I would have been too argumentative :-) Overall I found them to be good interviewers, even though we disagreed on quite a few best practice issues.
recently when applying for a job i showed all of my answers ive done for projecteuler.net they were rather impressed :) 87 done so far
ive done a mix of perl and python, all nicely documented, with a small library of common functions.
too bad the job was just boring oracle database stuff, id love to get the chance to apply for a job where detailed knowledge of mathematics and optimisation are essential..
anyone hiring?
For my current job, they wanted a demonstration of a recent project that I've worked on. I also had to show code during it. My work on an open source project saved me from having to toss together a demo app in a few days.
Yes, because obviously they don't discriminate where you are from...
Well the advice I was given was by a dentist whose son had burn out from his software analyst job. He just didn't have any outside hobbies and had enough
I think not having outside interests is a big reason people burnout from their jobs. It's easy to burnout when you only do one thing.
I don't know the research data on it (if there is any) but I am sure that computer science / engineering jobs have an over-representation of one or another personality trait
I don't know that either but the last tyme I saw data the average person changed their careers 3 tymes in their work life. Maybe that's an indication of burnout, though it could be just a want of change.
Anyway thanks for your considered response.
No prob, actually I'd like to see data on the happiness of those who have little if any outside hobbies and those who have at least one hobby they spend at least a few hours a week doing.
Falcon
Should there be a Law?
When implementing a solution for an employer. The first is the actual script that you turn over to them. The other is the myriad of scripts that help you get the job done.
These are what we call our "toolbox" and it no more belongs to the employer than a hammer or wrench. For example, if I'm asked to port a database or write a daemon I often include a set of headers or functions that I carry around with me from job to job. I don't consider anything written as a means to accomplish my assigned goal as belonging to my employer either.
I usually license these as BSD or GPL, but will relicense them if necessary for inclusion in the project. This is the code I show at interviews. It is every bit as representative of my abilities as the code locked up with the company. Nor is it even remotely unethical, there's not a craftsman around that doesn't have their own set of custom "utilities" and tools that they carry around in their personal tool box.
from the other side of the table, the truth is that there is rarely a situation where you have an opening, and a genuinely qualified candidate for the position, and you are actually looking for reasons to disqualify one of them. Use this knowledge to your benefit.
-fb Everything not expressly forbidden is now mandatory.
Make an open source project or open source one of your current side projects. Or contribute to an existing project.
Direct them to the projects' websites and/or online source code browser.
If someone wanted to see my code, I'd just send them to my git repo with many of my open source side projects.
If you're a coder and you don't have side projects ... you're not a coder :P
I'll usually be blunt and indicate that I'm interested in the solution methodology and not the specific answer...A bad attitude is destructive, no matter what degree of "leet skills" you think you have.
Since I've already blown away my mod points by posting earlier in this thread (so who cares anyway?) I'll just say "well said".
It is very wearisome to behold the spoonfed drones who are incapable of backtracking, looking at the big picture and acknowledging when they are barking up the wrong tree. It takes a degree of maturity to know when to stand one's ground or to admit error or misapprehensions and start afresh.
Show them obfuscated code :D
For extra points get a couple of executables with you, and fire up the disassembler.
Show them Carmack's inverse square root function, in order to check if they are worthy to be your new masters
If the job is server-side Java, there is no point to asking the candidate to manually reorder Strings, implement a linked-list, or twiddle bits. If the candidate actually did any of that on the job or any of their previous jobs, they would or should have been fired.
I do a lot of interviewing, and some of my favorite questions to ask are "tell me the difference between X and Y." It shows a much deeper understanding of the important facts than "tell me some weird corner of the API" type questions ever will.
For instance, if your resume says you know J2EE, Spring, and Hibernate, you better be able to tell me what's the difference between Entity EJBs and Hibernate. You'd also better be able to tell me how Spring and EJBs differ and how they collaborate.
If you can't, then your resume has a date with my shredder.
They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
I assume the job requirements or something gave them the context to know you were familiar with the CPU in question?
And I assume the CPU in question was not x86?
And it was impossible to get the code they put out to pass meaningful tests.
I got to the point that, when one company who had just hired me showed me that that kind of code was what they wanted, I bailed. I don't like that roller-coaster.
You should have been donating code and you wouldn't have the problem.