The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.
This summer, I'm looking to get an internship at a local game dev studio. I've got my resume and all that put together, but they also want a code sample (they say a minimum of 6 C++ files). To be honest, I have no idea what to send.
I don't really have any small bits of code lying around other than boring school assignments. I'm working on a game, but it's far from complete and also written in C#/XNA. The only thing I have completed that would fit the requirements is a program to use Rock Band and Guitar Hero instruments as MIDI devices. It's pretty darn cool, and fairly mature, but I'd be worried if they actually want to run the program, as it would take some effort on their part: it's OS X-only (I'm using someone else's CoreMIDI-specific code; I wonder if this might also be a negative to using this code?) and requires a GH or RB instrument, the OS X 360 controller driver, and a MIDI program to play back the data (although that's the smallest issue, since at the least they should have GarageBand).
To any of you with experience at this sort of thing, what kind of sample are they really looking for? Does it make sense to send my Rock Band thing? Since this is a project that I hope at one point to release on the web for other people to use, would I have to do anything to protect my IP from, say, somebody just swiping my code and claiming it as their own?
Seems they want to take a look at how you code. I doubt very much that they actually want to compile and run the thing, seeing as they only want a sample.
You can tell a lot about a programmer from reading a sample of code. I assume they'll be caring about things like:
Do you understand the language syntax?
Do you use good coding practices?
Do you handle exceptional conditions and corner cases?
Do you seem to understand basic security concerns?
Do you understand the language's "culture?" (It would be weird to see someone, for example, using underscore_based_identifiers in Java or mixedCaseIdentifiers in C).
Do you have some idea about how to design programs in the style of the language (e.g., object-oriented programs in C#)
Are you just writing Fortran in some other language?
Do you comment your code? Are the comments good? Are they overly verbose or obvious?
I imagine the judicious use of a third-party library would actually be a bonus in this case, you don't want somebody with not-invented-here syndrome.
Since this is a project that I hope at one point to release on the web for other people to use, would I have to do anything to protect my IP from, say, somebody just swiping my code and claiming it as their own?
Short answer: No. Long answer: In the US, your code is covered by copyright as soon as you write it. If you are completely paranoid about a company taking your code and "stealing it," you can register the copyright with the copyright office for something like $30. You have to register a copyright to sue someone for infringement, but you can register at any time. If you register after the infringement, it just means you will need more evidence that you wrote it first. If you register a copyright, you will have evidence that can be used in court that you wrote the code first, and you can sue them for infringement. Note that any real company will not steal your code, because it exposes them to liability and is obviously illegal. Practically, it is unlikely (especially at this stage of your career) that any code you have written is so valuable as to be worth stealing.
One exception would be if the company makes you sign some kind of license granting them permission to use your code. If they do this, I'd question their reputability in general.
Note that copyright protects your code, not the general idea of using Rock Band instruments as MIDI instruments. If you give somebody this idea (as you've just posted here) and somebody else creates their own implementation, you can't do anything about this. If you want to protect the general mechanism you've created for using fake instruments as MIDI instruments, and it's an original idea, you can get a patent. However, patents take months of work and tens of thousands of dollars to acquire, so you would need a really good reason (and likely a business plan) to go about getting one.
Code that compiles and runs on whatever platform they're developing for is always nice but the Rock Band thing sounds like it'd be a head-turner, which is really what you want- something to separate you from the other six hundred applicants. If you have an OSX laptop, make a note somewhere that you'd be happy to bring it in and demo the code if they want. That would make for an awesome interview.
Where's the internship, if you don't mind me asking?
To any of you with experience at this sort of thing, what kind of sample are they really looking for? Does it make sense to send my Rock Band thing? Since this is a project that I hope at one point to release on the web for other people to use, would I have to do anything to protect my IP from, say, somebody just swiping my code and claiming it as their own?
Man, that Rock Band code would be so perfect. If it was me, I'd write detailed instructions on how to get it working AND include a video of it working as backup. Using someone elses library is also a bonus. Being able to integrate your own code with someone elses is a big part of programming in a team.
I'd send the C#/XNA game too. It's a similar language and shows your interest in game dev.
Coding style and an interest in game dev is what they are looking for here. I think you cover the second part just fine with those two apps.
Proto on
and her knees up on the glove compartment
took out her barrettes and her hair spilled out like rootbeer
NO ONE, is gonna try to run the thing before hand. In fact, some reviewers will be annoyed if you send anything other than your own text files for your code sample. I doubt they'll even look at more than the 6 minimum files; so if you have a lot of files, and some are hit or miss, it becomes risky. If your incomplete game has something cool in it, then include that part.
A video of your project would be cool, but ask before you send. Most prefer to see stuff on a website, not through larges files on email. Having something working for the interview is good, too.
And don't say design studio if you're actually thinking dev. Thinking they're gonna swipe your code is pretty . That's beyond insulting.
Thanks for all of your suggestions! All the positive feedback about the Rock Band stuff certainly assuages my hesitation to use it. I'll e-mail them to see if they'd like a video - I think it's a great idea, especially since I don't know what the interview process entails, if anything. When I say they're a "local studio", it's a bit of a misnomer, since they're located in my hometown of San Diego but I'm at college on the other side of the country, making anything other than a phone interview rather difficult.
Dr. Frylock's copyright stuff was a good read and good stuff to just know - thanks! - but in retrospect what I really need to do is take off my tinfoil hat :P
Sorry to revive this, but one ridiculously stupid question I just want to make sure about:
They want six C++ files. I have 5 .cpp files and 5 corresponding .h files. Even though that is technically 10 files, I should include one more bit of code, no?
Sorry to revive this, but one ridiculously stupid question I just want to make sure about:
They want six C++ files. I have 5 .cpp files and 5 corresponding .h files. Even though that is technically 10 files, I should include one more bit of code, no?
I'd personally consider that to be only 5 files, unless one of your headers has inline implementations. The terminology is off, but C++ doesn't really have clear cut modules, so files becomes a lazy way of saying implementations.
If all your cpp files are substantial and awesome enough, you could probably pass with the 5 and still be a leg up over your peers. The only reason I think it'd matter is because you don't want them to think you haven't programmed anything substantial.
How big are your implementation files anyhow? It might be wise to split a class into two logical units. Typically any implementation file larger than 500 statements can be split, if needed. Where is your int main located?
Posts
You can tell a lot about a programmer from reading a sample of code. I assume they'll be caring about things like:
I imagine the judicious use of a third-party library would actually be a bonus in this case, you don't want somebody with not-invented-here syndrome.
Short answer: No. Long answer: In the US, your code is covered by copyright as soon as you write it. If you are completely paranoid about a company taking your code and "stealing it," you can register the copyright with the copyright office for something like $30. You have to register a copyright to sue someone for infringement, but you can register at any time. If you register after the infringement, it just means you will need more evidence that you wrote it first. If you register a copyright, you will have evidence that can be used in court that you wrote the code first, and you can sue them for infringement. Note that any real company will not steal your code, because it exposes them to liability and is obviously illegal. Practically, it is unlikely (especially at this stage of your career) that any code you have written is so valuable as to be worth stealing.
One exception would be if the company makes you sign some kind of license granting them permission to use your code. If they do this, I'd question their reputability in general.
Note that copyright protects your code, not the general idea of using Rock Band instruments as MIDI instruments. If you give somebody this idea (as you've just posted here) and somebody else creates their own implementation, you can't do anything about this. If you want to protect the general mechanism you've created for using fake instruments as MIDI instruments, and it's an original idea, you can get a patent. However, patents take months of work and tens of thousands of dollars to acquire, so you would need a really good reason (and likely a business plan) to go about getting one.
Clean up your code and ship it off with an explanation on how to set it up and compile/use it if they wanted to do so.
They won't, but it's always helpful.
Where's the internship, if you don't mind me asking?
Man, that Rock Band code would be so perfect. If it was me, I'd write detailed instructions on how to get it working AND include a video of it working as backup. Using someone elses library is also a bonus. Being able to integrate your own code with someone elses is a big part of programming in a team.
I'd send the C#/XNA game too. It's a similar language and shows your interest in game dev.
Coding style and an interest in game dev is what they are looking for here. I think you cover the second part just fine with those two apps.
took out her barrettes and her hair spilled out like rootbeer
A video of your project would be cool, but ask before you send. Most prefer to see stuff on a website, not through larges files on email. Having something working for the interview is good, too.
And don't say design studio if you're actually thinking dev. Thinking they're gonna swipe your code is pretty . That's beyond insulting.
Dr. Frylock's copyright stuff was a good read and good stuff to just know - thanks! - but in retrospect what I really need to do is take off my tinfoil hat :P
Fair enough, duly noted.
They want six C++ files. I have 5 .cpp files and 5 corresponding .h files. Even though that is technically 10 files, I should include one more bit of code, no?
I'd personally consider that to be only 5 files, unless one of your headers has inline implementations. The terminology is off, but C++ doesn't really have clear cut modules, so files becomes a lazy way of saying implementations.
If all your cpp files are substantial and awesome enough, you could probably pass with the 5 and still be a leg up over your peers. The only reason I think it'd matter is because you don't want them to think you haven't programmed anything substantial.
How big are your implementation files anyhow? It might be wise to split a class into two logical units. Typically any implementation file larger than 500 statements can be split, if needed. Where is your int main located?