Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

Here's a piece of advice from actual experience (from both sides):

Invest your time studying for interviews than wasting time building side projects if you're doing this purely for getting a job, period.

In my experience, companies don't care about your little side project when hiring--that is, unless your "little side project" had some huge impact or is something they have been aware of--the best you could get is "huh that's cool", and that's it, unless you created something really unique.

This whole process of job interview is broken because it's extremely easy to study for them and give the right answers if you invest a couple of weeks to a few months. But since we're talking about getting a job, I think you should take full advantage of this. If I were you, I would be doing this instead of doing side projects for the sake of getting a job.

Also, "side projects" should be something that you build because you think they're cool, not because you want to get a job. That's another reason why I say study for the interview instead of bothering to do side projects if the purpose is to get a job. It's neither meaningful for the employer nor for yourself.

If you still really want to do a side project, just pick a problem you want to solve, and apply some new technology you want to learn to build it. That's the best side project for yourself and the potential employer.



I mostly agree with you, but the side project can be a huge factor in differentiation between candidates, either at the resume or interview stage.

My rules for the ideal portfolio ready side project:

1. It is "complete". Not just started but something that actually works. This means that a side project needs to be something which you can actually finish. No matter how great your code looks, it will be outweighed by code that works.

2. The problem it can solve can be described in 10 seconds.

3. The interviewer will not be able to sketch it out in their mind in under a minute. While the problem solved may actually be quite simple to implement, it is best if it's just outside the interviewer's knowledge.

Actually publishing a usable library, even something trivial, provides great separation at the resume level and gives you something specific to discuss in the interview.

The easiest examples I could think of would be a library that does some math. Odds are the interviewer doesn't know how to do trig functions on a sphere, but it is something easy to look up and implement. You can describe it quickly. No amount of time will help them figure it out. Some people's eyes will just glaze over and they'll assume you're really smart (don't go into too much detail on these guys, show them your communication skills instead).


It really, really, really depends on where you're interviewing though.

Remember Google infamously rejecting Max Howell, the original Homebrew author? I know there has to be more to the story, but he's become the poster child for talented programmers getting rejected because they can't play the interview game. My point is, though, that his side project absolutely had a huge impact and it still wasn't enough.

90% of my interviews have been a take-home project followed by a chat going through my history and experience; in fact, my small side projects and hackathon projects tend to impress interviewers more than my on-the-spot abilities or my work history. Interestingly, I worked for a Fortune 500 bank and, while it was the least-challenging job I've had, the interview process was by far the hardest and had a few questions straight out of CCTI.

Research a few companies. Their Glassdoor pages usually indicate what kind of interview process they have. Then prepare accordingly.


> Remember Google infamously rejecting Max Howell, the original Homebrew author

If Donald Knuth interviewed with Google, he would fail too because he would need 24 hours to solve a hard level leetcode question[1]. Unfortunately, Google loves throwing those kind of questions at interviewees and expect them to come up with solutions within 1 hour interview, lol.

[1] - http://keithschwarz.com/interesting/code/?dir=find-duplicate


I thought the trick with this one was to sum all the entries and subtract the sum of 0 to N-2. The remainder is the duplicate entry.

It's just a trick though; I don't think skill in coming up with these is particularly well-correlated with being a good programmer, and for that reason Google claims not to do teasers like this any more.


If a company is relying on someone coming up with a trick answer, then they deserve the employees that they get.


That works in the case where there is exactly one duplicate entry. The question says there is at least one dup entry.


> for that reason Google claims not to do teasers like this any more.

All google does is teasers like this.


To be fair, the level of depth one person knows about algorithm was a lot less back then.

Today everyone is reading CTCI book and prepping. So if you aren't at that level, you will be behind. It's just like that guy who refuses to use steroids while trying to be competitive in MLB/NFL.


This whole process of job interview is broken because it's extremely easy to study for them and give the right answers if you invest a couple of weeks to a few months.

This is highly dependent on the company you're applying to. The world is bigger than GooBookHooSoft. I've worked for a lot of companies that don't do any of that "grill you on Algorithms 101" stuff, and are far more interested in a demonstrated ability to build something.

OTOH, it certainly can't hurt to study the shit out of Algorithms 101, but projects will carry more weight at certain companies. I know if I were in a position to hire right now, I'd care more about projects than CS trivia.


There is so much evidence online of this being true but people just don't want to believe it.

Devs love the idea of "being found" because they had the perfect project on GitHub or a great blog. Reality is these are time consuming, low % approaches to improving one's job prospects.

It's so much more time efficient to network and study for interviews.


As someone who hires for software development, I have to only partly agree here. No, your little dogfood calculator is not going to make me hire you, but given equal resumes and presentation, I'd hire the candidate who also shows some self-initiative and actual code vs the candidate who is all on paper, only uses the limited 8 year old stack of their previous employer, or worse openly admits they have no actual experience.

So, to OP, definitely don't over-do it on the side projects, but do be sure your potential employees know you enjoy what you do and are self-taught and self-motivated.


Side-projects can subside for a lack of experience to a degree. A fresh grad's resume with a ton of open source projects will look much better than one without. Or someone who is a developer planning their move into data science will greatly improve their changes by having some experience in machine learning and data analysis even if it's just in a side project.

However, I agree that unless a side-project has very high impact, it doesn't help much to have on your resume for people who have relevant work experience from a previous job.


Absolutely true. Which isn't to say to not do side projects, as they are a fantastic way to become a better programmer! They are just not the most efficient way to get a job.


This reflects my experience 90%. One time I contacted a company in a whose hiring thread here on HN. They asked if I had code on github they could look at. When my response was no, they broke it off.


That's a little extreme, and it's their loss, IMO. Many good programmers have nothing public on GitHub because they only program for their job. I guess they don't want those people.


This definitely struck a nerve when I read it. I'm gradually making my way in GitHub with my own toy projects but truth be told, I prefer to spend time with my wife and work on my body (I have weight to lose and I need loads of cardio) than to always be on my PC/Macbook and code for glory.

There are people who realize this and are respecting it (and are adapting their interview per candidate) but increasingly, companies simply don't want you if you didn't invest months/years in showing off.


This 0%. Side projects are how I've gotten all of my real jobs. Side projects* demonstrate that not only can you write code, but that you can also architect and deploy an application that solves real world problems. There's a lot more to software engineering than can be tested by fizzbuzzing on a whiteboard.

* (I'm assuming your side project is an application)


side projects show you can clone code on github and push it to your own repo. Interviews show you can articulate what you know in a convincing fashion, and that you have done homework on the company as well as your skills of inference and general personal skills to glean into what sort of answer the particular interview is looking for at the time. Something a lot of people really miss out on when bikeshedding over how terrible whiteboard questions are or interview question xyz is


Pass off someone else project as your own? Doubtful. This attitude comes across as having trust issues. To me, it's a sign of a company with a rotten culture to be avoided.

But if someone was able to clone and deploy someone else's project and pass it off as their own, it at least demonstrates that they know git, the command line and some ops.


I've had companies remark about code I've "written." It was merely code I forked and they made an assumption.


>your skills of inference and general personal skills to glean into what sort of answer the particular interview is looking for at the time.

Interviews beget interview skills. How does this translate into job performance?


Even if you glean into what sort of answer they are looking for, you still have to know the answer.


I've had quite the opposite experience as a corp-to-corp freelance contractor but this isn't scientific as its testimonial anyway. My focus has been on cutting edge technology that appears to be the right way of doing things based on large successful companies using the particular technology like Uber, Netflix, Facebook, Google, etc. I've built side projects with forefront technology gaining valuable experience that otherwise I would never get because of the chicken and egg problem. How do you get experience without experience? You don't.

I tend to be pretty decent on interviews anyway so its difficult to know if this approach is the right one but for sure it keeps you sharp.

It is more common than not that the technical interviewer compliments me on this approach. Recruiters and non-technicals tend to not care about the specific project but do like that I am comfortable with the technology which gets me through the next round at least.


Who is this advice for? UC Berkeley grads? If you don't have personal projects or previous professional experience to talk about the only thing you have to bring to an interview is a university degree. Are you proposing the OP just does nothing? How is OP supposed to land an interview in the first place?


If I see one of your side projects is inline with what we are currently working in my company I would hire you immediately. Obviously we will do some checks on the code quality but nothing extreme. I always hired people based on previous experience and never ever gave them a puzzle to solve.


Totally agree. It's great for fellow engineers to poke around on to make sure you aren't an idiot or aren't copying/pasting projects from the web, but you're right.. for the most part, no one cares about side projects when it comes to trying to snag a new job.


>In my experience, companies don't care about your little side project when hiring--that is, unless your "little side project" had some huge impact or is something they have been aware of--the best you could get is "huh that's cool", and that's it, unless you created something really unique.

Something else to consider: Depending on the corporate policy on open source, employees may be forbidden to look at external source code without prior approval by the legal department. This is more likely at large companies who are afraid of lawsuits accusing them of copying code or ideas (and, yes, it does happen). So, your interviewers may not even be permitted to look at your portfolio anyway.


I second this. If you have a software day job, then you should already be practicing coding every day. I think it's more useful to spend your extra time learning rather than applying. This can be algorithm books, coding courses, interview guides, etc.


It depends what OP means by "getting jobs". To me it means getting work from clients. For getting clients side projects can be extremely useful, and there are no interviews.


Solve the book Elements of Programming Interviews and you'll get a job at any of the Big 5.


How about CTCI?


I feel like CTCI would get you into Amazon/Microsoft but not Goog/Fb. There's much harder questions in EPI that are part of the regular circuit at these companies.


Agree with this 100%. It's soul sucking and destroying but unfortunately coding interviews today are entirely about competitive programming and not about what you create.

So you're best off knowing how to derive an O(N) dynamic programming solution to everything on Codility/HackerRank/LeetCode/ACM-ICPC coding challenges.


This has been true in my experience. Interviewed at FB recently, they gave me a take-home project that we would go over together in the on-site interview. I spent a lot of effort on the project instead of typical white-board coding. I did great on the project but did so-so on the white-boarding. No offer.


I wonder if this is programmer specific and not as relevant to designers.


As a programmer, I'd venture to say it is programmer specific. I know for many creative type jobs a good portfolio is key


I very much agree with this, but just as an aside I'd like to mention that I worked on a full stack web application as a side project and I believe that helped me land my current job at a startup.

However I'd also note that I applied to a LOT of companies, and while my side project helped me land my current job, 90%+ of the companies didn't care about it.

I learned a lot from my project but job hunting is a numbers game, and it's far more worthwhile to study than it is to build a side project IMO.


So what do you do if you lack a degree and professional experience?


You need to get one of those two.

Which means getting the experience somehow. Unpaid work is one (expensive) way of doing it, but so is getting into a related position and working your way across. QA is potentially a good path for this: hired to do simple things without the degree requirement, move into test automation, move across into development. Then you have it on your CV.


It's actually pretty tough to go from QA to dev.


Teach yourself test automation (Selenium, etc.). Shockingly few QAs know even the basics of scripting/programming.


It seems like that would be a ticket to a QA automation job, not a dev job. People say QA -> dev is a good way to get in, but I've seen very few people actually accomplish it.


I've seen it happen several times (my employer may be unusually prone to hiring jr devs as qa automation).

I agree that if you can hold out for a dev job, do that and save a year or two getting to the same place. If you really can't get a dev job and need the income, get a QA Automation job and start migrating early by asking to fix small bugs yourself, or work on the automation tooling.

At a smaller company, working on the build system and QA automation tooling might be more interesting and get more attention than what you would do as a jr software dev.


Agree. Don't get into QA if you want to be a dev.


Yes, but it's also quite hard to get hired as a dev without either qualifications or experience. If you've got the qualifications you can go in directly.


It probably varies from place to place but in the Bay Area at least you pretty much have to get a degree of some sort. There are so many programmers out there that the degree/no-degree has become an easy filter for recruiting types and no-degree + no experience (which means no one to talk to about how you work and what it is like to work with you) makes it doubly difficult.

That said, it doesn't have to be a degree from Stanford or Berkeley, it can be from pretty much any accredited institution. Typical path forward here is community college for a couple of years and doing the general education requirements, then transferring to one of the state schools to finish a degree in a STEM subject (typically math, cs, ee, or physics)


Silicon Valley used to be famous for the exact opposite: the story was always that formal credentials were less important than demonstrated competence. Have things really changed that much?

Anyway, at least here on the East Coast, I find that many (most?) companies don't have a strict requirement regarding a degree. At least, not if you have real world experience. Maybe it's more crucial if you're going for your first job.


I certainly agree that formal credentials are secondary to demonstrated competence, but in the specific case of neither credentials nor experience, people with credentials and no experience have always had the first choice at the job.

When you have neither, getting a job in uncertain, there are many variables outside of your control. But getting a degree is completely within your control so it is the better choice of your time. Given the monetary constraint ($3,600 / year for community college (x2) and $7,500/year (x2) for state college) From my experience the job you will get in year 4 (and during the summers of year 3 and 4) will pay you more and offer better advancement than if you had started working in year 1 and not pursued a credential.

If you already have experience, then you also already have a network of people who have worked with you and know what you can do, and getting a job is a matter of finding the person in your network who will vouch for you.


That sounds about right. For me, I fell into a weird scenario where I was still in school right during the peak of the late 90's "dot com bubble" era, when anybody could get a job as a programmer if they could turn a computer on. So I quit school and went to work. And after keeping that first job 4 and a half years, I never had any trouble with a job after that, even without having a bachelor's degree.

Strangely though, I've accumulated 3 associate degrees (general education, computer programming, and high performance computing) over the years as well. Somehow, with all that, nobody ever mentions that I never finished my bachelors degree.

Not sure if it's possible to replicate that career path these days or not. I may just be the product of a specific era of history.


> Silicon Valley used to be famous for the exact opposite: the story was always that formal credentials were less important than demonstrated competence. Have things really changed that much?

It still is and same for the other tech hubs.

The tons of complaints are likely from people who have no degree AND no experience and want to break into the industry and the 100k jobs. Of course, they have troubles, for good reasons.

Simple maths; For every experienced HN dev, there are 100 redittors with nothing who wants in.


Where are you on the east coast?


The RTP (Raleigh/Durham/Chapel Hill, NC) area.


I moved to this area from the West Coast and found the market much better for these same reasons. Happily living in a forested area while working as a developer.


Yeah NC and GA seem to have much more / better jobs than SC (where I am stuck). I might have a developer job if I was still in the Atlanta metro area.


I've only once in the past 6 years been asked about a degree, and it wasn't even by the people trying to hire me(away from my current employment situation). It was a veto from the CTO who didn't want engineers at the company without CompSci degrees, against all objections. This was by far the odd experience out. People are usually surprised to find out later on that I have no degree.

So, I'll have to disagree about the no degree + experience. No degree + no experience is a very tough spot though. Should still be possible though. As others have stated will probably need an entry level-ish position first and then impress the right people and move across. A bootcamp might also be possible.. Companies do hire right out of there, so with the right aptitude and performance in the bootcamp I can see that gaining a foot in the door somewhere.


Start contributing to open source projects on github that solve business problems. Usually for popular projects there are a good number of issues that are available to solve at varying levels of difficulty.


I think you missed the fact that before landing a job, you need to land an interview. I've been on both sides as well for different kinds of companies. Some value side projects a lot at the first screening. If you study a lot it will get you a job %100 guaranteed. But it's nice to be able to work for a company you like.


I agree with this except in the case of getting your first job, in which case you need something to point to.


This 100%. When I'm involved in the interview process I make a point to check out all candidates side projects but over 90% of people don't care.

In getting my last job I thought I would have a slam dunk because I have a bunch of cool stuff I work on but nobody cared at all.

I failed multiple on site interviews until I gave in and read a couple CSCI 101 books cover to cover. I had too much specialized knowledge and not enough fizzbuzz. On my second round of interviews I got offers from all three companies because I could regurgitate their stupid toy problems in minutes.


> I had too much specialized knowledge and not enough fizzbuzz

It's dubious to say that one has a lot of specialized knowledge yet he fails at writing a for loop.


I suppose it would be if you took what the parent said literally. Not sure why you would though.


> stupid toy problems in minutes.

What sort of toy problems are you talking about?


I'm going to be snarky but I'll say it anyway: you know, stupid stuff like balanced binary trees and shit like that, when nothing's going to fall apart if the user's browser shows a spinning wait animation for 7 seconds (45 seconds at peak times but that happens for just a few hours per week at most) while you iterate through the data sequentially. honestly, who ever needed an algorithm or data structure. /s

(I'm sorry. I thought about using less snark but I can't.)


I have a different perspective. This is for applied math in general, but translates to algorithms with a little stretch of imagination.

In your daily life, you use tools to do your job. Over time, your tool set has sufficient coverage that it can handle most jobs. However, because of this "good enough" coverage, you may not realize the existence of other tools that may be far superior. I believe "applied math" is one such tool. (Translate to "algorithms".) Its applications are everywhere, including at least 50% of your daily life in my experience. However, you fail to see them because you may not have that tool in your tool belt! This is no different than wearing x-ray glasses - you get to see almost every problem in a different light. Google and others who realize it want to make use of these versatile glasses.

I do not mean to be obtuse but a different perspective may be helpful!


You know, besides the other comment about not implementing data structures in a real job¹, why do people insist on memorizing all that trivia about balancing binary trees instead of just using some much simpler self balancing structure like a B-tree²?

1 - I have. But it is overwhelming more likely that you'll just need to know their characteristics than how to implement them.

2 - And get better caching behavior for free.


and if you did absolutely have to implement one from scratch, then you probably wouldn't have to spit out an answer on a white board in front of some judging eyes with very limited time and push that into production.


the last time i had to implement a datastructure was in class. on the job i use the standard library. i hope you do the same.


But rolling a standard datastructure (and what's the "standard library" for a red-black tree anyway - in Python, or in Java? - or C++ for that matter) proves that you can do something "tricky" and hopefully get it right. You can understand and reason about what you're doing. If they don't let you Google while doing a "CS" type problem, of course, then they're insane.

When it comes time to do something novel, that understanding will be very useful.

People pooh-pooh Google's hiring interviews, but when was the last time Gmail's search results on your email were as bad as Bing's (I use this example because it's not their general index, I'm asking about your mail.)

There are a lot of good reasons to bone up on CS 101 (and 201, 301, 401, and 501).... I disagree that it's just "studying for the test".


Even then, you'd have to know the characteristics of various data structures to be able to choose the right one.

On top of that, in almost all code beyond CRUD, you'd have to write some custom algorithms - there, the knowledge from data structures and algorithms is really helpful.


Anything you could write in less than a half hour.

Lets take fizzbuzz for example. These types of problems almost always require manipulating strings and dumping them to the console in the simplest scenario possible. Usually the main method or equivalent in a console program.

It would be easy as hell except they don't let you use google or an IDE, so you need to memorize the syntax for the main method and string manipulation.

1) In real life you almost never write directly to the console. 2) In real life, you never manipulate strings using sub-string or regex really... In fact the only time I do this a lot is for terrible reasons in bad code. 2) Main method? If your real life app even has one it was written by the first guy 10 years ago and is 3 lines long, just some function that looks like this:

  var app= new BootStrapMainApp();
  app.run();
  logger.log("App crashed if we get here");


Say that you dont remember the exact arguments for main and move on. It will be fine.

And don't assimilate fizzbuzz with half hour problems. There are for sure some difficult half hour interviews questions; they are not comparable to trivial exercises like printing the numbers from 1 to 10.

P.S. If you never use console, strings or regex. I really wonder what kind of applications you're writing.


Mostly web. You always use a logging lib so no console really ever. Strings are used all the time but not substring or splice, 90% of uses for those are anti patterns tbh.

Regex really never. Unless you're munging data in Python it's usually a bad idea to use regex. Clean strings? Use a library. Parsing? Use a parser. Raw regex implies filtering stuff or banning certain characters in strings which breaks all kinds of multi language compatibility


I use regex all the time for refactoring stuff and transforming data. There is nothing else to achieve that. Also, for log/message filtering at times.

Well, I am obviously the guy who write the tools and the libraries, so you don't have to know these things yourself but I do :D


It's not that I don't know them, it's that only idiots roll their own instead of using libraries.

Every time I see a regex cleaning strings I instantly know the app was written by an ametuer and probably horrible and full of security issues. Oh it globally replaces this bad token but not recursively? Great

I use regex for searching logs all the time but never in production apps. I can write some pretty mean regex but I can't remember the function call for string replace off the top of my head. For me regex is 99% in a text editor.

Really when do you split up strings without using a tokenizer or parser of some sort? Manual string manipulation is usually dumb and error prone. The only time I find myself doing it is when stuffing crap into bobs "extras" db field which is actually a bunch of 80 char strings delimited by the pipe character.


How long have you been a web programmer?


You are a web developer, correct?

How do you parse known data formats from free text strings? (regular expressions, string manipulation) How do you parse a cookie? (string manipulation) How do your apps http requests end up in their respective handlers? (main method socket listener)

If your answer to each of these questions is that you use a library that's cool and all, but just because you didn't have to write it yourself doesn't mean it doesn't exist in "real life". Someone wrote that code for you, and you can call it "bad code" if you want - just know your app is built on it.


it's bad code if you're writing it again. Everything you mentioned is something already handled for the developer through the browser/API's. It's like writing your own multithreading instead of using something provided by the OS. 99% of the time it's stupid


If we have reached the point where basic string manipulation is compared to multithreading in terms of complexity or need for abstraction then we have truly dumbed down the software development profession to a very saddening degree.

I simply can't fathom that you believe such basic constructs of software development would be a bad code smell. I really don't know how you get around using them and manage to do anything remotely interesting and novel.


This speaks more to a flawed interview process than it does anything else.


Do you have any recommendations for the best CSCI 101 books to read?


You'd probably just be fine spending a few hours per week working on a MOOC that covers the fundamentals of algorithms and data structures like the ones on Coursera by Bob Sedgewick.

Other fundamental courses might include ones on Computer Networking or Databases like those offered by Stanford Lagunita.

Just keep a list of MOOCs that start regularly (like once a quarter or twice a year) or the self-paced ones and just rotate through them as review.


I'd recommend Cracking the Coding Interview for studying for interviews.


I kind of agree with you for people who already have verifiable experience that sideprojects are not important. For people without anything on their CV however I think it can be a good idea.

I have been on both sides as well, many times and to be honest, if someone was a graduate and they didn't have some kind of side project, we just scrapped them.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: