12

I recently interviewed for a software development position where the employer asked me to provide a code sample to judge my experience level. I provided an application I recently completed as a side project. It had the basics of what they were looking for in the technical specification for the role so I thought it would be sufficient. But they came back to me after few days rejecting me as they judged me to be too "junior" for the position. I have worked on more complicated applications but that code is protected by NDAs and such.

How can I impress a potential employer and avoid potential lawsuits in the future?

DroidGuru
  • 139
  • 5

5 Answers5

11

The first thing to do would be to ask for specific feedback from the employer. Not all employers will respond to such a request - it may be against policy to say anything other than accepting or rejecting a candidate. Others may be more forthcoming with tips and suggestions.

Since you submitted your own personal code and not a company sample, you should get some other opinions on your code. Code Review Stack Exchange is one option. If you have any friends who are also software developers, they may be able to help too. If you worked on a company-provided problem, you should ask them before giving the code to anyone else as they may not be appreciative of potential solutions to their coding problems posted in public places, even if the solution wasn't up to their standards.

In the future, if you are asked for a code sample, you can ask them if they have anything in particular that they would like to see or a problem that you can solve. Ideally, you would solve this in the technologies that the company uses if you know them, but some companies are more accepting and would look more at general approaches to solving the problem.

If the company doesn't offer problems, you can find examples. You can go to Project Euler, Programming Praxis, TopCoder, or Programming Puzzles and Code Golf Stack Exchange. Create a GitHub repository and spend whatever you think is a reasonable amount of time to develop some samples. What is reasonable depends on you. Since these are public samples, I would follow my advice above - get other people to review and provide feedback.

The notion of a programmer needing a portfolio is common, but it does a huge disservice to individuals. Many jobs involve building proprietary and closed-source software and also 40+ hours/week of effort, leaving little time outside of work to have a personal life yet also build a respectful portfolio. If a company is not willing to respect and understand the nature of propriety software and the need of people to have a work-life balance in the hiring process, that would be a huge red flag about the company culture and how employees are treated.

Thomas Owens
  • 21,779
  • 7
  • 80
  • 101
  • 6
    "Code Golf Stack Exchange" is for masochists. – gnasher729 Sep 30 '16 at 18:06
  • @gnasher Probably, but I didn't say you had to participate there. Some questions are interesting and can be solved and thrown into a public repo. – Thomas Owens Sep 30 '16 at 18:07
  • I agree with the request for feedback. What are they looking for exactly? Specific concept demonstration, formatting, documentation, all of the above. I find it weird that a developer would carry around a portfolio of code, but I'm not a developer, so.... – Steve Mangiameli Sep 30 '16 at 20:54
6

You had bad luck this time around. Review the code you used to see how well written it is. You have no way of knowing whether it was the code sample or just some guy who saw it who didn't like the way it was laid out.

If it's well formatted, well written code then it should have been fine.

You can spend a bunch of hours writing useless sample code for a portfolio, or you can just move forwards. The next potential employer probably won't ask for a code sample.

Kilisi
  • 222,118
  • 122
  • 486
  • 793
1

Just like photographers and artist have portfolios, so should software developers. You can put in it whatever you can think of that will demonstrate your skills. The advantage to a serious portfolio is that you are making a working application that can be more complex than a sample. You can build on it and as you come across new technologies, you can add to it as well. The difference between a portfolio and a sample is that a sample is just code you send. Your portfolio is the well-rounded showcase for your work, not just bits of code here and there.

For starters, learn Git and set yourself up a Github repository. Once you've done that, just make up some kind of project that doesn't really exist and start coding away. Look at some of Microsoft's sample projects for some ideas. Then what you do is share that portfolio with anyone who you want to have it. It'll also likely be found on Google anyway.

Second, set up a host where your application is actually running. Let people see that you can code and your code actually works.

A key to a successful portfolio is semi-permanence and building on it. Let potential employers see a lot of what you can do rather than just some code that you send them.

Also, get involved in Open Source. I can't suggest that enough too. It looks good on your resume, gives you some code you can point to and it helps you hone your skills.

Jeff Atwood (one of the founders of Stack Exchange) said it well:

[a portfolio] part of the job description for a graphic designer, but why shouldn't this rule apply to software developers, too? ... Anyone can put together boilerplate resume text, full of assertive verbs and fancy keywords. Blah blah enterprise blah blah strategic blah blah architect blah blah. The benefits of "show, don't tell" are much more compelling.

Chris E
  • 43,237
  • 26
  • 142
  • 177
  • I think the OP is asking what is a "good" code sample and what the employers are looking for. Rather than how to deliver the code. – AleX_ Sep 30 '16 at 15:17
  • That's what I'm trying to get across. Thanks for letting me know I haven't. I'll edit to clarify. – Chris E Sep 30 '16 at 15:19
  • 8
    There's a difference between artists and programmers. When I've had professional photos done, I've been asked by the photographer if he can use the photos for demonstration purposes. A programmer asking if he can share code snippets, much less meaningful projects, outside of the company? That would rarely fly. The other options that you present require a large investment of time. If I work minimally 40 hours a week, I don't want to go home and sit at a computer more. I have friends and family to spend time with, along with non-programming hobbies. – Thomas Owens Sep 30 '16 at 15:31
  • Career development and increasing employment viability isn't a hobby. And nowhere did I suggest sharing meaningful projects outside the company. Quite the opposite. – Chris E Sep 30 '16 at 15:38
  • 4
    @ChristopherEstep You suggested setting up a GitHub repository and being involved in Open Source. After learning new tools and technologies and writing proprietary code for 40+ hours/week, I shouldn't have to go home and spend even more time in front of my computer in order to demonstrate to perspective employers that I can write code in order to get a job. – Thomas Owens Sep 30 '16 at 15:42
  • @ChristopherEstep I provided a link to a github repo that's how they accessed the code. The data (JSON) was from a publicly available API. Open source option is definitely something I can consider. – DroidGuru Sep 30 '16 at 15:44
  • Yes, @ThomasOwens, you've said that already.I get it. You want to leave work at work. You're not alone either, I'm sure. But (as I linked in my answer), there are well-respected experts who see portfolios as essential. Search "programmer portfolio" for even more examples. I'm not an outlier here with this opinion. – Chris E Sep 30 '16 at 15:49
  • 7
    I don't agree with those experts or companies that expect you to have a portfolio. Perpetuating the need for a portfolio for programmers is doing a disservice to the profession. – Thomas Owens Sep 30 '16 at 15:53
  • I think this is a very good answer. Fields such as data science are extremely competitive. Everyone has a MS or PhD, but a solid portfolio really sets you apart. Also, @Thomas Owens, I would argue that portfolios, especially open source projects, push fields like data science forward. – Hobbes Sep 30 '16 at 15:54
  • If you choose an open source project, the prospective employer might not like your choice and may not want to wade through the project to find the portions you worked on. Working on one may be a good practical way to build your skills though, especially when it comes to working with other contributors and not just a solo project. – Brandin Sep 30 '16 at 16:19
  • The problem with this is your employer probably owns the code you produce out of hours unless it is totally unrelated to your day job – Pepone Sep 30 '16 at 16:41
  • @Pepone probably? Not in the US. Very few people have work-for-hire agreements. Nobody is suggesting he take his work done at his employer. In 30 years, I've only ever been prohibited from sharing secret or competing. I've never had an employer even suggest that they might own work produced on my own time. – Chris E Sep 30 '16 at 16:57
  • @ChristopherEstep US labour law descends from common law aka the Masters and servants act check your contract. – Pepone Sep 30 '16 at 17:57
  • @ThomasOwens Unless the project was opensource and your name is on it. My last company had numerous open source projects on git and if you contributed, I don't see how you can't publically announce it. – Dan Sep 30 '16 at 18:03
  • @Dan My point is that is a relatively small number of people and such a small amount of code. Most software isn't open source and some companies fork and don't open source. – Thomas Owens Sep 30 '16 at 18:05
  • 1
    @ChristopherEstep I had to, on several occasions, fight contracts to remove clauses that would place anything I did, specifically at any time (on one occasion it was without a time limit even after employment ended), on any device (regardless of who owns the device) under the ownership of the employer. This was in Texas. I always got it out but I know that several coworkers didn't ask. I don't know if it'd be enforceable but this was in contracts. – xxbbcc Sep 30 '16 at 22:21
  • 1
    @ChristopherEstep "there are well-respected experts who see portfolios as essential." Jeff Atwood, who you linked as an "expert", is an expert here in what sense? An expert at hiring people? An expert at telling people through his blog how they should do things? – Chan-Ho Suh Oct 01 '16 at 02:17
0

I would ask for more specific feedback. What about your code makes it appear "junior"?

You also may want to post it on SE's Code Review site for additional feedback.

Lots of developers do not write code that they own, or the code they own is for small personal projects/tinkering and isn't of professional quality.

You should either take feedback on your current code and improve it to be of more senior professional quality or explain that you cannot provide a code sample but would be willing to complete a coding exercise or whiteboard session with them.

Chris G
  • 11,595
  • 3
  • 32
  • 52
0

I assume you've heard of the bear joke.

enter image description here

Luckily for you, you don't need to write a super complex application nor a perfect application, you just need to write a code sample that is as good or better than what your other competing job-hunters have submitted for the same job.

And those competing job-hunters have the same constraints. No one can submit code from work. And professional developers with good open source side projects are either very rare, or just too expensive to hire for most software development jobs.

So if you take what the interviewer said at face value, then that means you may want to slightly improve your existing code sample.

If you don't know what to add, I'd suggest that you ask some of your developer friends in the same field, and just try to add some of those improvements one at a time. Again, it doesn't take much, because almost anything constructive you add will differentiate you drastically from your competition.

And ultimately, job-hunting is also a numbers game, so don't take any single rejection too seriously. Apply to many places. Employers do use different ways to evaluate applicants.

Stephan Branczyk
  • 58,781
  • 29
  • 128
  • 208