8

So I am nearly done with my MSc. Artifical Intelligence and starting to look into Machine Learning and Data Science positions (in Germany as this probably makes a difference.)

Unfortunately some of my best work has been on closed source projects with companies. However, I have some work I am quite proud of or that is proof that I know how to program some basics. Most of it is various course work, hackathons or projects I have done to educate myself with. (Basic stuff like programming a boid swarm and playing around with a graphical representation, evolutionary algorithms, neural networks etc.)

So I thought, lets make a github page to show my work. But before doing that I looked into advice online. And it is confusing me honestly. Originally my idea was to just put everything on it and sort it by category, and I assumed an employer would understand that weeding through the nearly one hundred quick and dirty scripts to clean some data is not worth his time if I indicate it as such.

But even if I make a good selection, the advice still said it should have a regular commit history (which none of it does obviously) and it should be production level code. I mean it obviously is not, it was mostly educational work. I mean maybe that is a mistake, but I usually do not take a great deal commenting this code and writing unit tests, if I just want to implement a cool algorithm and play around with its variables. Also I am sure there is the occasional dirty hack where a deadline was tight or I just wanted to get the program running asap.

Getting all this work up to what I would consider production level quality would certainly be a lot of boring work. So I am pretty hesitant and would much rather spend it on my new projects.

So I guess my question is:

Is it still worth to put examples of my work on github, even if they are not "perfect"?

  • 10
    I hate this trend that job candidates must now show a github profile. Even corpos where people work on closed source projects somehow require contributions to open source. This group lunacy makes a decision to work for a closed source company a disaster for your career. – Mateusz Stefek May 5 '18 at 12:28
  • 5
    who are these people who are reading applicant's github code all day long? reading code is hard, i don't think anyone is going to do more than glance briefly at the titles of some of your work – bharal May 5 '18 at 15:13
  • @bharal Reading code is uncommon, but reading data science notebook is super common – SmallChess May 7 '18 at 6:55
  • @bharal Tons and tons of data science projects on Github have a notebook for visualization and summary statistics etc. – SmallChess May 7 '18 at 6:56
  • 1
    @MateuszStefek: After stating that I keep up to date with technologies; the interviewer asked for my Twitter handle. He then explained that if I keep up to date, I must be retweeting the information, so he wanted to doublecheck me. I told him I don't have Twitter (true) and that he could ask me anything about the lastest features of .NET/C#/... His response was that it's not his job to know about technology. Similarly, the GitHub thing seems like a lazy option to not have to actually factcheck developer ability yourself. – Flater May 7 '18 at 7:26
9

Unfortunately some of my best work has been on closed source projects with companies.

I feel like you're seeing a Github profile as a bit too important in the hiring process here. There's nothing unfortunate or unusual about that - 99% of code you write in a professional setting will likely be this way. This is great - it means you can list commercial experience that you gained while working on these internal projects.

So I thought, lets make a github page to show my work. But before doing that I looked into advice online. And it is confusing me honestly.

There's generally two types of people that have Github profiles these days - those that actively contribute to open source projects, and those that just create it to upload a code dump that they've written previously. I'd say the first is definitely a better scenario, but there's certainly nothing inherently wrong with the second either, so long as:

  • The code you've got there isn't a "hello world" style example that's overly basic;
  • The code is stuff that you've written yourself, i.e. you're not taking a project developed in a team and trying to pass it off as your own.
  • You don't make it look like the most important thing on your CV.

If someone takes the time to actually look at the specifics of your code, then great - you've made enough of an initial impression for them to take a closer look.

So:

Is it still worth to put examples of my work on github, even if they are not "perfect"?

Absolutely. (And as an aside, "production level code" certainly doesn't mean perfect!)

  • 2
    Absolutely. (And as an aside, "production level code" certainly doesn't mean perfect!) The fact that it doesn't is an unfortunate truth, in a better world it should mean perfect code or at least as close to perfection as reasonably attainable. – Cronax May 7 '18 at 9:00
  • @Cronax Of course, but this means that if anyone who knows what they're doing sees a few bits that could be improved upon (which would be the case with almost any codebase), it's certainly not game over. – berry120 May 7 '18 at 9:31
3

You have to look at this as an advertisement for you. So be very critical of what you put out there. It is better to have 2-3 complex data problems and their resulting solutions that 100 short class examples.

Real solutions have things like unit test and comments. They have requirements documents. If you want to show that you are better than your competition, you have to show that you are by making your Git hub examples be the best they can be. If I am hiring and have two people with roughly the same experience and one shows a git hub of a 100 tiny projects most of which appear to be class examples and all of which look like quick and dirty code and one shows three complex projects and the presentation is professional including until test, comments, error logging, etc., which one is going to impress me more as a hiring official?

In data science in particular, I want to see evidence that you understand the meaning of the data and that you considered how to clean a and transform the data as well as analyze it. I would want to evidence of different analysis methodologies you used and a discussion somewhere of why you chose the one you did. I would want to see presentation documents on how you presented your results because presentation and persuasion are two of the most critical skills needed in this area.

I am most concerned about this statement:

Getting all this work up to what I would consider production level quality would certainly be a lot of boring work.

A great deal of actual work in a professional environment is this sort of boring but necessary work. I want to hire someone who understands that and who isn't going to be a cowboy coder. So yes, do the boring parts first on your chosen examples and then do them with any new project you add.

2

There is a weird trend in online advice to say you need a github profile. You don't. Having something to show on your github profile is good advice if you have nothing else. Then yes, by all means, show something.

You have a master and experience. Both should be documents (Uni-Abschluß, Arbeits-/Praktikumszeugnisse) that you can show. Hard proof that you were examined and found fit for duty. You have no need to present anything less than that.

Just imagine how weird job interviews would be if employers did not trust certificates and references:

Sir, we at Garbage Inc are very proud to only employ the best garbage truck drivers. We see you have a valid license, a certificate for recycling hazardous materials and a glowing reference from our main competitor... but Sir, we noticed you did not post any private videos of you taking out the trash. We like to employ people based on their youtube stream of private garbage disposal.

Yeah... no.

Go with what you have. That's great and should be plenty. If somebody does not value a masters over a github page, you do not want to work there.

If you wanted to include your github profile it should be polished to at least the level of your masters/work experience. Anything less would be like serving cold fries with an otherwise great burger. You want to be remembered for what you did well, not the crummy extras. However, polishing to that degree is hard and you don't need it, so think about whether you should put time into polishing it at all. Just leave it off.

  • 2
    I agree that you don't absolutely need a gihub portfolio, but I think you're going to extremes when you make some of your statements comparing it's value to a masters degree. I've known (and hired) plenty of people who either didn't have a masters (or ANY degree) or who had one that was not relevant, but were still talented programmers who could show off via a github or other portfolio. I think it's just as foolish to write off the portfolio as it is to write off a masters degree. – dwizum May 7 '18 at 13:49
  • On the other side of @dwizum comment, I have seen developers with a Masters and experience who couldn't program anything of complexity. Just because you have a degree and experience doesn't mean you are good at your job. Especially since academics and real work don't often align well. – cdkMoose May 7 '18 at 19:00
  • @dwizum I don't really see where we differ. I'm not writing either off, I'm just saying github is a good way to show what you can do if you don't have a certificate of any kind. If you already have the highest certificate you could possibly have, there is no need for it. – nvoigt May 7 '18 at 19:52
1

Yes post it. If you're not embarrassed by at least some aspects of your code 2 years later, you're probably not progressing your development skills, especially if you're new. While anyone can gussy up a few resume examples, a progression of actual work is much more illustrative. If you put out a "hit", employers will mostly examine the code in that project, not digging around in gists. The other contributions still pad your landing page charts and make you look stronger, so get something up there asap.

In ten years, you'll have 10 years of projects to show, but not if you don't get started. Don't post zero-revision throwaway code, but don't obsess over "should I have folded that loop?" or "are these doc field names perfect?". Git is also very handy for you to develop code, not just look good, so don't be shy.

1

Data scientists who insist on clean code might not survive in the job. Professional data scientists generally don't put as much attention to coding standard to a software engineer.

Please upload anything you think it's worth for other people to read for your skills. As a recent graduate, you're generally not expected to have any "production level" and "perfect" code. If the company wants it, they'd be happy to pay much more money for an experienced candidate. Your CV would have been trashed anyway.

Prepare data science projects that work and you're proud of. Instead of code refactoring, consider Python/R Jupyter notebook. Professional data scientists do care about notebooks. It's quite common to show your works through notebooks.

Your github commit history is unimportant as you can't change the past.

1

I'm going to repeat something I've said in many answers. Hiring is a sales process. You, as an applicant, have something you're trying to sell (yourself: or at least, your ability to perform a job).

The way you accomplish this is by using sales tools: a resume, a job application, a cover letter, references, and (maybe) a portfolio of work - ie a github account. When evaluating how you use these tools, you must focus on the fact that they're tools to facilitate a sales process.

To get to your specific question:

Is it still worth to put examples of my work on github, even if they are not "perfect"?

Practically, in order to make decisions about your github account as a sales tool, we first must ask: what is an employer looking for when they hire a developer? Then, we must ask: Does my github portfolio help show off those qualities? If the answer is yes, include it. If the answer is no, either don't include it, or modify it to better fit that perspective.

I think you gave some hints as to the answers when you said,

I usually do not take a great deal commenting this code and writing unit tests, if I just want to implement a cool algorithm and play around with its variables. Also I am sure there is the occasional dirty hack where a deadline was tight or I just wanted to get the program running asap.

Your github portfolio is showing off quick and dirty problem solving and fluency in certain languages. While those are both positive things to show off, there's a potential gap: as a hiring manager responsible for software development, more importantly than those characteristics, I look for people who write sustainable code. Developers who think about the long term and understand why things like unit tests are a good idea - not just people who do unit tests because they've been told to, or people who don't do them at all. In other words, I'm as interested in the process and approach (ie you did unit tests and commenting appropriately) as I am the end result (you got the right answer for the quick hackathon challenge). Clearly, there are other hiring managers out there in different types of organizations who may have a slightly different perspective on this. It's not clear from your question exactly what type of job you're going after. If you're looking for a more data science focused position, or a position where the software is secondary to the end result, your ability to write code that solves problems may prove more important than your ability to follow rigorous software development processes.

So - back to the sales process - your github portfolio definitely has value, but it may or may not be the most appropriate value for the exact position you're going after. If you have a resume/cover letter/other portfolio that shows how well rounded you are and fills in any gaps in your github, then the github work can safely remain as-is. However, if you don't have a way to show the specific well-rounded picture you need in order to sell yourself, then you're probably going to come off as lopsided (for example: too much focus on rushing to a result versus understanding the value of good process and approach) and you should consider modifying your code examples, or adding new ones (which are clearly emphasized when someone looks at your github account) that show off your ability to write "production level" code.

In Summary:

  • Use your sales tools (resume, portfolio, etc) to specifically address what a hiring manager is looking for
  • In software development, process is as important as end results. For a more formal, software development-focused position, ONLY showing that you can solve quick and dirty problems may make you appear risky, compared to candidates that can show off a well-rounded understanding of development processes. For a more data science-oriented position, where the development/maintenance of code may be slightly less important than literally getting an answer, this may not apply.
  • Think about the specific type of position you're applying for, and what you want to show off about yourself, and then if there are gaps, you need to solve the gaps - regardless of whether or not you include your github account on your application.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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