0

I'm thinking of creating a website or opening a github account to show case the programs I have written (or will write in the future). This would be to show my skills to prospective employers. What kind of code should go in?

What kind of programs should be on display? Should they be ones that have a practical obvious use or could they be things that only a programmer would be interested in? For example, a non-technical user may be impressed by a simple game that plays “guess the number between 1 and 10” while a programmer would not be. Conversely, a programmer may be impressed by an implementation of a data structure, such as a linked list, where as it may be meaningless to someone who doesn’t know programming. Even if the person knew programing, would it look like you’re wasting time and have no creativity to have such an abstract piece of code (kind of like what’s the point of owning a bike if you never use it)? I find this challenging because I have HTML and JavaScript skills but have no chance to use them for something that would be personally useful to me.

The other concern is how much of the code should be completely original? For example if I was implementing a linked list and got stuck on a part, I may copy pieces from stackoverflow or another website with an implementation. I could do things to make it less obvious (e.g. change variable names) but this seems like cheating. On the other hand some data patterns are so common all programs have them (for example a function that computes the average of a set of numbers, only one way to do that). Where do you draw the line?

I've been following along a jQuery tutorial on YouTube, would this be the sort of thing I should put on a website with my code? How much should it change from the original tutorial (obviously anyone can replace text such as changing the word "Hello" to "Greetings").

  • I don't understand - do you have the code, or are you planning to write it just to expose yourself? – Maria Ines Parnisari Apr 12 '14 at 23:29
  • Both but more of the later. Does that answer your question? – bobby Apr 12 '14 at 23:39
  • Yes. It might be a good idea, but you need to find something that really motivates you. – Maria Ines Parnisari Apr 12 '14 at 23:40
  • You should be careful about just writting code. If its not quality code and actually worth making public somebody might get the wrong impression. Besides copying other people's code isn't the most ethical thing you can do – Donald Apr 15 '14 at 18:13
  • I wonder if this question will make a good fit on Software Engineering... (perhaps in some form, at least) – Dukeling Apr 15 '14 at 19:37
5

First of all, if you want to show your developer skills then build something useful and show that to the world. This shows if you can actually ship something which is a very important skill to show.

Just having the code mean that your audience needs to build it, configure it, deploy it, and first then be able to see what you can do. Why make them do that?

Then, let them see your code behind what they saw so they can see what kind of craftsman you are.

  • As someone who's dealt with hiring their is no better way to show competence then delivery. It shows you have sufficient technical skill to make whatever you've delivered, as well as the drive to see it through. These traits are far more valuable than your code being elegant (though I should note clean code is also important, it's just second to getting things done) App stores are a very powerful way to demonstrate yourself. (and potentially get a supplementary income) Let the number of downloads and overall reviews speak for you, then show them the code is clean when they ask. – RualStorge Apr 15 '14 at 18:21
  • 1
    Also note that if you are currently at a learning level where you are worried about being able to implement a linked list correctly (which I personally would expect any professional programmer to be able to do without any fanfare), I would suggest that you learn some more before starting this project. – Thorbjørn Ravn Andersen Apr 15 '14 at 21:54
  • @ThorbjørnRavnAndersen why is implementing a linked list so important to you? Why not use a pre-existing library? Even if it had to be implemented, it would probably only need to be implemented once per project. Would you have a person write a full linked list implementation on a white board during an interview? What functions would you expect to be implemented? – bobby Apr 15 '14 at 23:44
  • @ThorbjørnRavnAndersen or is your point that linked lists are so trivial there would be no point to present your implementation to prospective employers? – bobby Apr 15 '14 at 23:44
  • I am responding to that the question explicitly mentions linked lists as an example of a datatype for you to implement. You may want to reread your question. These days I would personally expect a programmer to use an existing, tested implementation, but if necessary implement it by himself. Linked lists are not trivial to get right but not especially hard either. I would still suggest that you build something useful instead. – Thorbjørn Ravn Andersen Apr 16 '14 at 7:55
3

There's nothing wrong with including code for a data structure or algorithm (which doesn't do anything all by itself), although I suggest you include some code to test it as well, even if it's somewhat arbitrary. I can't imagine that any experienced programmer would see implementing a data structure or algorithm yourself as wasting your time - any experienced programmer should appreciate the learning experience involved with doing that.

Beyond that, you could include pretty much any code / program.

I'd err more on the side of (1) what a technical user might find impressive, (2) a game that's genuinely fun or (3) some program that's actually useful as opposed to something a non-technical user might find impressive (and also focus any explanations, which there should absolutely be, on the technical side, even if you just mention that there this is just some fun game and there isn't much technical complexity behind it). I think a technical user finding his/her way to your site during the recruiting process is way more likely than a non-technical user doing so, although you shouldn't discount that possibility completely.

With regard to (2) and (3) (and even (1)), you should strongly consider having 'releases' as well as the code - one should be able to either use / play the application / game online, or download an executable. It's all the better if you allow for bug reports and you actively support it, with continuous releases - these things mean a lot, perhaps more in some industries than others.


People may certainly:

  • Run a tool which would go looking for similar code on the internet (I'm sure such tools exist) (although this option seems unlikely)

  • Visually be able to notice different styles in your code, making them think you copied code from somewhere else (but coding styles may change over time, or using different development environments, so they might not put too much weight on this one, although it could lead to running the above-mentioned tool)

Where is the line drawn? Look at it like this:

If you copied the code for your entire project and tweaked it a bit, or combined code from various sources, that's probably too much.

However, if you explain what you did (attributing the sources), and it makes sense to do, that's probably okay though.

By "makes sense", consider combining code from various sources. If each is just an implementation of the same thing with little-to-no tweaks, and all you did was put different parts of each together, that doesn't make too much sense - the code surely isn't very useful, and most likely didn't teach you much (surely not nearly as much as implementing it from scratch). If each uses different tweaks and your code was an experiment into combining them to make something more efficient than all of them (at least under certain conditions), that might make sense, even if it failed.

In terms of posting the code from a completed tutorial - on the one hand, there's some value in showing that you completed the tutorial (this will vary from person to person - some may view you showing this negatively), on the other hand, you could pretty easily get the code from most tutorials without doing a whole lot (but I'm not saying they're not useful if done right). What would be way better is to use the knowledge you gained through this tutorial to make something else, and post that instead.

The same goes for implementing well-known data structures or algorithms - sure, it is a learning experience, but posting it may not have a whole lot of value by itself for many people. Putting it in a bigger project that actually does something useful means a whole lot more.


A bit more on attribution:

As an example:

  • Copying a quick-sort function from some site (to use with the rest of your project)
  • Deriving it from code / an explanation on some site
  • Using a quick-sort function from a library
  • Writing a quick-sort function from scratch (from memory, i.e. somewhere you can't remember, or many sources) (either as its own project, or part of a bigger project)
  • Rediscovering quick-sort all by yourself (and just calling it "some partition-based sort") (either as its own project, or part of a bigger project)

Are all fine, as long as you don't pretend it's something it's not - don't try to pass others' work off as your own.

You should include attribution (e.g. "I derived this from the pseudo-code provided on {some site}") for the first two along with the explanation in the comments / outside the code (for the second one is optional in some cases, but probably still good practice).

  • You make a valid points. There is a difference in copying a block of code that does something specific, if its good code, because unless its task specifc code it shouldn't be written again. But claiming credit for something you didn't right as you point out is not ethical. – Donald Apr 15 '14 at 18:15
  • Doing a tutorial and publishing it is a waste of your time. You are not going to get paid to do code tutorial they serve no purpose to anyone but the person doing them as an exercise to learn something. – Donald Apr 15 '14 at 18:18
  • @Ramhound that's a highly subjective statement. Each time you use jQuery do you credit the authors? Each time you use a binary search or quick sort algorithm to you cite where you learned it from? – bobby Apr 15 '14 at 18:51
  • @bobbi - There is a difference be using code already written and claiming it as your own. I am not even sure what part of my comment you think is "subjective" because my statements seem pretty black and white. – Donald Apr 15 '14 at 19:03
  • @bobbi As an example - copying a quick-sort function from some site (to use with the rest of your project), deriving it from code / an explanation on some site, using a quick-sort function from a library, writing a quick-sort function from scratch (from memory / many sources), rediscovering quick-sort all by yourself (and just calling it "some partition-based sort") are all fine, as long as you don't pretend it's something it's not. You should include attribution (e.g. "I derived this from the pseudo-code provided on {some site}") for the first two, in comments and/or outside the code. – Dukeling Apr 15 '14 at 19:17
2

You need to show real world application of the software that you write.

No one is going to be impressed by code that guesses a number between 1-10. A technical person will know that it would take 5 minutes to write, a non-technical person will not see what purpose your application serves.

Furthermore, showing the implementation of a data-structure doesn't really impress people either. As you have shown, there are plenty of websites out there that contain the algorithm for various ways of implementing them.

The reason you were taught them in school was not so that you could go out into the world and re-create the wheel. These data structures are nothing more then a learning tool and understanding them is just proof that you have been educated.

So back to real world implementation. If you want to impress potential employers, then your projects you exhibit on git-hub should fill some sort of need in someones life. The more people you are able to relate to, the better.

Keep in mind, it doesn't have to be well polished. It just needs to serve as a proof of concept.

Hope this helps, and sorry if I sound harsh.

1

When creating anything for the purpose of showcasing your abilities think of it from you'r résumé's perspective.

So before spending months of impossibly hard work think of an idea that can help you market yourself in one sentence.

Here are a few example sentences:

Designed, built and setup an online web based chatting application.

Or also:

Designed, built and deployed an open source JavaScrip library that was downloaded X times.

Or something like what I wrote on my résumé:

During high school I single handedly designed, built and published AttackTic a two-player network game in the Apple App Store.

This is critical because most employers don't even read the entire résumé, so they probably won't take the time to look at your work.

Personal experience:

During high school I spent more then 5 months of impossibly hard work building something simply to showcase my abilities, and it helped me get my first programming job.

But during the interview they never even took a look at the game or it's code.

In my experience it's nice to have but not really necessary.

I wold advise on studying things like basic UML, flowcharts, terminology or anything that can help you communicate your ideas and abilities.

Stuff like this will still give you grate things on your résumé and make a day and night difference in interviews.

So remember think of an idea from a marketing perspective, and feel free to come up with anything you want.

0

It is a good idea. It will also help you to see how your code improves over time.

I would be more impressed with you adding to an open source project (i.e., code, documentation, web site updates, etc.) than you maintaining your own code base. It would show that you have the ability to work as part of a team, follow coding rules, and work with a source control system.

Can you build your own code diary? Sure. Will it be impressive? Probably not as much as you hope. Will it help you in the long run? Most definitely! That would be reason enough (for me) to collect code samples.

0

If your skills are in HTML and Javascript, a way to showcase your abilities is to make an incredible portfolio site using your skills instead. Have a projects section that will show your past code, and then make a blog section where you walk through examples of problems that you have found difficult and how you have solved them. Alternatively, you can post code snippets, with you explaining them, and then at the end have a zip file that viewers can download.

When you apply for a job, you put your website on your resume. No one is going to type in or look at a github site, and if they do it won't be the most interesting layout, and they'll likely get bored quickly. If you want to showcase your abilities, set up your site in a way that is interesting, viewable, and allows the employer to traverse quickly to see what they are looking for. If they are interested in you, they'll likely delve a bit deeper into the site.

As far as using stuff from other sites, taking someone else's tutorial and copying it, though changing the wording, is not okay. It would be obvious to anyone searching for that problem. However, it is okay to look at code examples to work through a problem. That is how all developers work. However, at the end of your post, make sure you cite where you got help from.

For the content of the posts, why not post a variety of things. If the person who is looking at your site gets that far, a variety of problems will show your versatility.

Not the answer you're looking for? Browse other questions tagged or ask your own question.