I have no side code projects to show
linkedin.com
linkedin.com
I interviewed with a company. Naturally they asked for my side projects which I showed them. We talked about technical challenges, scaling, interesting bits of codes - all these kind of things. They were really excited. I passed the interviews and got the job.
Fast forward a couple month, still working on my side projects, some of which started generating a couple hundred bucks a month. My boss started asking me to stop any side projects and put all my time thinking about the company instead. I refused and said that I am 100% there during my work hours but what I do in my private time is not related and even the reason why I got this job in the first place. My boss didn't like that at all and even tried to figure the exact times out when I would work on private stuff to hold it against me. I eventually quit.
If your company wants to see side projects but dislikes the idea of you actually working on them after starting, you are doing something wrong.
My impression was they generally want to see side projects for newbies/recent graduates, i.e. stuff the applicant would have been working on during college or something. Not stuff the applicant was doing on the "side" during his/her previous years of employment. Am I totally wrong here?
Hmm, the way I see it is that side projects usually demonstrate that you have a passion for code outside of your work as well. From a company perspective I would probably also hire someone who is using his free time to advance his knowledge since some of that stuff he is using/learning could also become useful for the company at some point.
I personally don't mean any harm with my projects. I just really like coding, creating things and learning more (my way of learning also being to experiment/build something with technology X). The field is so broad and there are so many interesting things to learn about with new ones getting released almost weekly.
In other industries, these are called "portfolios" or "writing samples". It's not just about showing a passion; it's your chance to make a piece of work that represents your best abilities and judgments.
When I interview candidates I find it easier and more constructive to ask design questions about the side projects than to contrive some hypothetical scenario.
IMHO the alternative, where you ask people to write code under the pressure of an interview setting, is far less informative.
Not saying you won't get a lot of false negatives with high-pressure on-site coding or whiteboarding, but if done correctly I think it's probably the most signal you can get for the least time. Granted it requires good judgement from the interviewer, and a lot of candidates to calibrate. It's also unfair to candidates who are easily rattled, and biased towards candidates who have time to do a lot of preparation. In the past I have preferred contract-to-hire as the gold standard if that works for a candidate, but that only works if the pipeline is small.
So at least for 15-year veterans it does not really seem to be much of a thing. Although I do secretly wish they would discover my 4-digit GitHub user id, that's gotta be worth some kinda programmer-cred right?
- If you don't show side-projects, you don't have passion
- If you do show prototype-quality side-projects, you aren't skilled
- If you do show production-quality side-projects, you aren't sufficiently focused on your daytime job.
I believe that on average non-tech companies treat their employees better and give them more right and freedom.
With non-tech companies you usually sell your time. But with tech companies you sell your brain power, if your side projects affect your brain contribution to that company for sure they don't want that.
So silly of them, I always say this. Companies should stop treating their employees as assets.
And let me say again, there are successful tech companies run by smart people that don't do this! And most employees including the founders are happier because of it.
At SunSed we believe that we should treat business like a passionate music band — making money is not the ultimate goal — the ultimate goal is to see people enjoying your music while you enjoy playing!
Of course, take this with a massive grain of salt. I'd certainly prefer not to have to go to court to try and figure out if this is actually true.
"For example, the California Labor Code stipulates that regardless of what an employment contract or PIIA says, an employee owns the copyright and patent rights to his inventions if the invention is made entirely on the employee’s own time, without using any of the company’s equipment or technology, as long as the invention (a) does not relate to the company’s business, or (b) did not result from work performed by the employee “as an employee” of the company. Washington state has a similar law protecting employee projects outside the 9-5 bounds."
Programming all day at work and then spending a lot of your non-work time programming too could put you at higher risk for getting burned out on programming. Spending your non-work time rebuilding old cars probably won't affect your programming at work.
Note that I'm not suggesting that the boss should be able to make you stop programming at home. Many people can program at work and at home and not get burned out, and it should be up to the programmer to decide if they are such a person. I'm just saying that programming related hobbies are more likely to affect programming work than are non-programming hobbies.
Since the 1980s, employment has become a game. Employers don't like it if you realize this and play them right back, of course, but there's not really any other option. Their viewpoint is dominant and essentially universal. In response to monumental productivity multiplication due to technology, they froze wages, destroyed pensions, cut benefits, and extended the work week. They believe if an employee becomes irreplaceable, they have become expendable. Keeping employees dispensable is weighed as far more important than keeping skilled talent. Read books written by managers for managers. Their actions aren't random or stupid, most people just don't understand their reasoning.
And if you only get one tattoo in your life, I highly recommend this centuries-old quote from The Rubiyat of Omar Khayaam: "Make game of that which makes as much of thee."
Consider that we openly talk about Bus Factor as a way of explicitly quantifying the indispensability of certain people; but the solution is not to get rid of them, it's just to train more people on those aspects. Of course there's still some amount of Machiavellian maneuvering, but at least while talent is thin on the ground employees still have enough leverage not to get screwed—not as badly as most non-unionized employees anyway.
So when the last company I interviewed at asked me "what is the difference between range and xrange in Python?" I just kind of rolled my eyes (on the inside). To me this is like asking a professional translator "what is the difference between 'si' and 'sí' in Spanish?" They were not interested in the thousands of lines of code I have on GitHub for my side projects, nor in a recent project that got me 15 seconds of fame. I ended that interview by saying "I don't think I'm a good match for this job".
Different companies have different cultures. It's good to be able to identify the kind of culture you want to work in, and even better to be able to respectfully decline an opportunity because it doesn't work for you. Don't become bitter and think that all companies want you to be a coding robot, just because Google and Facebook do (or seem to; I'm not sure how many of my friends who work there actually have that many side projects either). There are plenty of jobs that will work for you that won't work for me, and vice versa.
http://pythoncentral.io/how-to-use-pythons-xrange-and-range/
From that article (buried near the end for some reason):
>One more thing to add. In Python 3.x, the xrange function does not exist anymore. The range function now does what xrange does in Python 2.x, so to keep your code portable, you might want to stick to using range instead.
https://docs.python.org/3/whatsnew/3.0.html#views-and-iterat...
My Python is rusty, but I actually had to go look up the differences - my initial thought was "I'm pretty sure it used to be that range() generated a list and xrange() basically just iterated a value, but at some point range() was changed to use the xrange() behavior - I'd have to look it up to give you more detail than that." I didn't realize that xrange() had been completely removed from 3.x, for example. For that matter, I was thinking that both of them might have existed in 1.x, though it looks like they were added in 2.0.
I'm forced to maintain (or deploy) other people's Python code all the time. Personally, I would rarely choose it for a team project I have to maintain (if the choice is mine) because I've seen most teams commit the same annoying type errors over and over in every dynamic language I've ever used, including epecially Python. I've worked with much more competent Python programmers than myself who still do this.
But if I was on your team, I wouldn't complain and my code would be somewhere between pretty good to great. I would help the team ship that Python and ship it well.
I'm not sure what this rant says more about: me or this 'range vs xrange' question?
for i in range(n):
# your code here
because it potentially allocates a lot of memory for no reason whatsoever. It's the equivalent of this C code: int* r = calloc(sizeof(int), n);
for (int j = 0; j < n; j++) r[j] = j;
for (int j = 0; j < n; j++) {
int i = r[j];
// your code here
}
free(r);
If you don't want to deal with the distinction then what you can do is just treat range() as deprecated and always use either xrange() or list(xrange()) depending on the situation. But you had probably ought to know about the issue.And here's the thing: despite my rant, given that explanation, I'm going to have to say I respect that as a Python (2.x) interview question.
But that's because I care about performance optimization and good style in every language I use. I'm not sure that everyone else always should or that this should be a deal breaker for a python dev gig.
Having interviewed close to a hundred people in a year for a senior C dev position I can assure you that people lie like you wouldn't believe. They cheat with take-home tasks, they show others' code as their own. And that's in the system programming circles, where the level of professionalism is typically much higher than in app/web development areas. We got burnt really bad when a brilliant dude whom we relocated across the country turned out to be the laziest moron I've ever had a misfortune to work with. So you bet we started most of the interviews with fuzz-buzz kind of questions.
P.s. I don't believe anyone actually fails fizz buzz.
Out of 10, only 1 solved it well, 2-3 solved it acceptably (only edge case bugs), the rest never solved it, or had obvious bugs or code that would never pass peer review.
Of course, I could just be a shitty interviewer, but I always had a (changing) peer present during interviews, and I hope we were an honest enough company that they'd tell me if they thought I was.
You really don't realize how bad candidates can be until after you've interviewed dozens of them.
I often read people say they'd be "insulted" if asked to do fizz-buzz, or would "walk out". I think that's an over-reaction - fair enough they need to make sure you're not useless and lying on your CV. As long as there's a more interesting follow-up question, I don't see the harm.
It's not devs with > 3 years experience or even > 6 months. failing fizzbuzz. It's people _pretending_ to be devs with > 3 years experience. Or folks who started in programming years ago and drifted so far they can't get back to nuts and bolts. Or people who know the principles but can't express them. Or any number of other cases.
Like other folks have posted here in response, I've seen some really sad fizz buzzes in my day, often from people who had no business being near a computer let alone interviewing for a tech job, but somehow landed a phone screen.
And let's never forget the best/worst fizz-buzz ever: http://thedailywtf.com/articles/The-Fizz-Buzz-from-Outer-Spa...
I implemented the thing, but with plus in place of multiplication. Before that, I realised I was struggling and asked the interviewer whether it was + or *, that was probably the moment he failed me.
I was asked for my second job ever - on the phone - for commands that would list files in a directory, change directory, and create a symbolic link. I guess I've started doing that kind of prescreen now too
For my next job, I've thought about offering to work for free for a week or so as a kind of mutual trial period. I want to know what the entire office is like, what the codebase is like, what the tools are like, and what actually needs to be done. If they want to rip me off and get a week of free work, great! That's exactly the kind of thing I would want to know about a company upfront. And after that week, they should know the degree to which I'm a fraud and be excited to pay me commensurately.
I know this wouldn't work for most potential employees since they don't quit their jobs until they have another one, but I always take a few months between jobs. I wonder how I might actually be able to pull this off..
A lot of very talented people don't have side projects, and they don't do any coding outside of work. They don't go to hackathons. They don't bother to learn the newest reactive javascript framework. They go to yoga classes after work. They talk about TV shows they watched last night during lunch.
But they EXCEL at what they do at work.
I can say that this is really a subjective thing. When you make a judgment about these people, it actually tells more about yourself than the person being judged.
When I saw these people who are super talented, but "waste away their lives" just climbing up the ladder I just couldn't sympathize. Also personally I like them but I would never think about starting a company with them.
That's why I understand where OP is coming from, and he's right in a lot of cases, but also I think he should understand that not everyone will agree with you on how you view your life. People like me can't stand not working on my own project, but there are also super talented people who are perfectly fine with living a balanced and stable life. Talent and intelligence has nothing to do with how you live your life.
So, I think no one should judge anyone else. The company who didn't hire this guy may have lost a talented person, but in many cases talent is not what companies need the most.
For large companies like Amazon (which OP seems to work at) this type of employee is the ideal choice since they get the talent AND stability.
But for startups, the concept of stability doesn't really make sense anyway so it's a different story. If I was doing a startup and had to pick the first employee, and was given a choice between a passionate, right out of the college guy, and an experienced and talented engineer who wants to live a balanced life, I would definitely choose the former. (Although the best case would be to find the third guy who's passionate AND talented)
On a tangent, I don't really like the word passion anyway. What makes me a good programmer is not my passion for it, it's my curiosity and motivation. My motivation is a primary factor in my performance, and that probably is 80% influenced by context, and 20% by the content of the task itself (at least for most things that fall within the standard purview of programming tasks).
Finally, you don't mention talent for the new graduate. That is a huge factor. If the new grad is not extremely talented, they will never produce anything of value. If they are highly talented they can likely power through a lot of things, but they also need to make good decisions about what to work on since time allocation is the single hardest thing about getting early traction for a startup. Yes, all else being equal, take the guy that wants to work 16 hours a day and has no other distractions, but if the veteran who wants to work 30 hours a week has better business sense and a smarter idea of what to build and when, then that dwarfs the code quality consideration.
From my experience, all these brilliant, intelligent, and talented people (who don't do extracurricular activities related to coding) have completely different motivations than myself. My point is that it's fine that they do, and it's fine that I don't think that way either.
I'm just saying that there are people who are fit for certain type of situations, and some people--no matter how talented they are--are not fit for certain jobs just because their life values are not compatible with the situation. That doesn't mean the employer who made that decision is an idiot. They're just not compatible, and that's fine.
After getting a "real" programming job, where I had to deal with design-by-committee, power struggles, keeping up appearances, etc. I didn't dare jump back into recreational programming--I'd never go back to my actual job.
Even now, working for myself, I have to be very disciplined when I crack open the "fun" code, because I know it will be very painful when it is time to go back to the code that pays the bills.
> For every one of those
> folks there are thousands
> of amazing, solid
> developers
This does not match my experience.Also, for every genuine genius in the world, there are a whole bunch of pretty average people who think they're really smart.
I take issue with this.
I don't write code in my spare time for fun, I have a family.
When I do write it, and when I do Open Source it, it's because it makes my life easier. It makes it easier to check my email, track what I still need to do on the house, and cut out half my work tomorrow, so I can take some leave and be with my family.
I release it to the wild so that others might benefit, and I can pull it out when recruiters ask to see my code, even if they can't understand it, which is most of the time.
A friend of mine, who works for a well-known technology giant, recently told me about a Linux guru they interviewed and hired. He was amazing in the interview, and they gave him an offer on the spot. When he started working, however, he constantly turned in sub-par work. A couple of months later, one of the members of the team who had interviewed this guy flew out to where he was working, and discovered that the guy sitting in the cube doing the work was not the guy they had interviewed. It was someone else. The guy went through quite an effort to cheat his way into a job, but when he was discovered, he was immediately fired.
If cheating was my thing, and I really wanted to get a job via nefarious means, so I could worry about my job on a daily basis, how hard would it be to pay someone to write a bunch of Github code for me? Exactly, which is why the request is pretty dumb to start with, I think.
For a bunch of smart people, we engineers sure have a hard time figuring out how to interview people and ascertain their skills.
>A couple of months later, one of the members of the team who had interviewed this guy flew out to where he was working, and discovered that the guy sitting in the cube doing the work was not the guy they had interviewed. It was someone else.
This seems absolutely incredible to me (just in the slang sense, I don't mean that I'm incredulous). I mean it's way more than enough for the company to sue for fraud the (highly qualified) person who showed up to the interview, or to sue the person doing it. TBH if I were that company I would likely sue for damages. I mean it's just so blatant and goes so far.
I've never heard of this. So I would be curious if you would reply with a somewhat more detailed write-up (maybe 1 or 2 paragraphs) of anything else you know about that case! But, maybe you've mentioned everything already. (You said a friend of yours told you about this case, so I realize we are reading this third-hand.) I would just be really interested if you could mention anything else you remember.
I think outsourcing is one thing - but being an employee who is on payroll and physically shows up to warm a butt in a seat, goes a lot farther. Regardless of whether the cube guy paid someone to do his interview, or the guru hired a body double after getting hired, it's pretty insane. do you have any links to anyplace you read about the same thing?
Edit: phone auto correct shenanigans
No one has ever shown anything more than a nodding interest in them, as they lead me to a whiteboard and ask me to regurgitate a couple of pages from Crack the Coding Interview.
go to interviews and talk abou range vs xrange.
it might never happen, but when one employer decides to go crazy and try to blame you for leaking code (that you may have written even before joining them) on open source projects, you are going to regret skipping the silly interviews by showing your open source persona to them. best thing you can do is keep it to yourself. then when you really need it, say for a research grant, then go public.
Maybe I've just been lucky, but all have been either okay with it or actively supportive (even when concurrent with in-house development). That being said, I've been careful to avoid open-sourcing projects that I think come to close to hired work.
but it means little when dealing with crazy.
However, coding home has one - big - perk: it's almost the only way for you to code something from scratch. Alone. You and your code. You and your progress rate. You and your bugs. You and your choices. You and your mess. Nobody to smooth any angle.
I believe coding from scratch - alone - makes you a completely different kind of programmer indeed. But it has nothing to do with passion. Nothing at all.
I think (I can be wrong, still trying to validate that) that "number of projects from scratch" is the metric that tells the ultimate level of a programmer. In other words, if you've almost never coded anything from scratch (below say 40-50 projects), I do believe you are not very good at programming. Conversely, I know from experience (my own) that coding from scratch can make you so good, that you would find Amazon SDEs complete novices (I know from my own experience at amazon) and this before your 30's. It can make you better than principal engineers before your 30's. It can make you so good that TDD, OOP and agile development sounds like novice exercises to you. It can make you a programming master and beyond.
Could you be as good without coding from scratch really? Well, ultimately maybe but not as fast. Coding from scratch is so painful, so hard, so stressful, so frustrating that maintaining code or adding small to medium sized features is a baby step in comparison. Now of course, if you add something pretty big to an existing code base or make a god damn big refactor, you're doing the same thing as coding from scratch basically. The thing is that it's rare you 1) add that big a feature to an existing codebase 2) alone, in a big company.
I'm pretty sure the author has passion for programming, probably as big as anyone else. And balanced life is good for skills as feeling great makes you more creative amongst other thing. It's just that coding home makes you write a type of code that is 100 times more difficult than the one you do in big companies. Paradoxically, I'm pretty sure interviewers don't, at least consciously, know that.
Naturally, I can't open-source any private business code. But if I'm doing my job right, I'm building libraries and reusable code that isn't tightly coupled to business logic -- and there's no good reason to avoid throwing all of that on github, and have it be used by as many people as possible.
Of course there are going to be companies that aren't onboard with the idea of open-source. It's taken a lot of places a lot of time to get to that stage. But are those the places you really want to work?
Skip the novel writing for a month and instead create a 10 hour project that shows potential employers you know what you're talking about. You can use it for years so it's well worth the time investment.
For most jobs you don't have to have a ton of active side projects or contribute to open source. You should have something to demo though.
Most candidates who show their previous code, either written for their employer, or from side projects that are still within the scope of their contract, are violating non disclosure clauses of their contracts. Someone who has sample code to show is likely an unreliable candidate who thinks nothing of violating his signed contracts. Such candidates should not be hired.
The assumption that "lots of side projects" is somehow a positive attribute (from an employer's perspective with regard to "types" of engineers) is very much a flawed one.
No, this is nothing more than pity-party because one person wants to fit in and be recognized for something they aren't. I am glad you think your dog business,and art, and running makes you equal to or better than someone who is passionate and dedicates themselves to their interests. You aren't that person. that's okay. but don't try and form the world to fit your views. You aren't the best developer, you don't want to be, move on.
[1]http://www.census.gov/newsroom/press-releases/2015/cb15-33.h...
I've been on the other side (the hiring side), so let me give my perspective. It's okay to not have side projects, or a presence on Github. It is perfectly okay to say "I don't have a very active Github account, but let me tell you what I enjoy about programming". "Show me your side projects" is a (poor) way of asking, "show me that you are passionate about your job". I'm not looking to hire the elite, but I am looking for someone who will be happy to come to work.
I too have been on both sides of the hiring discussion. Because anyone can write anything on there resume, there are only two way to know if someone can code. They can write some code of they can show some code they have written. As both an interviewer and interviewer I would rather work with real world problems and discuss real world solutions.
So the choice seems to be between stupid whiteboard processes or portfolios. I suspect there is a reason writers and painters don't have auditions and perhaps that same logic maps onto programming.
For me, the whole idea of proving oneself as professional by being on linkedin has been a biggest turn off. Coupled with this, when I look at some of the people's linkedin profile and the actual attitude and proficiency they demonstrate in their jobs makes linkedin look like a ridiculous circus.
Can you share some examples?
If the market was worse, then it wouldn't seem so strange. Lots of other professions require a portfolio of work.
The good stuff (including libraries and frameworks) is all in my professional career.
I've contributed bugfixes to GNU less, GNU screen, and GNU emacs, and GNU make. None of those would be easy to dig out references for, and none of them use github.
Some examples from my area include a small grocery chain (5-6 stores) with their own app and a local credit union with their own online banking app with support for mobile deposits via photographs of checks.
I dislike Pulse because it's mandatory content on "my" LinkedIn page, which I find a bit obnoxious.
So I avoid visiting Pulse stories in order to discourage that entire aspect of the site.
Good luck mate, that's got nothing to do with software development. If you don't love software development then applying for a software job at a software firm probably isn't the best idea. Many small buisnesses need software people who are pasionate about other things. Many of these things include "Running, painting, writing" but a software shop writning software owned by people in the software industry populated entierly by people who absolutly love writing software probably isn't the place for that.
I think the author is just realizing that this field isn't for them. Tech moves fast and to stay on top of it you have to move fast too. At least for modern tech. Maybe that author would be more comfortable being a COBOL programmer, or an embedded systems one.
There's no reason that the field (of computer science/software engineering/etc) _can't_ cater to people with families and other life obligations.
Jobs that don't cater to people with families include being a surgeon, a pilot, a firefighter, etc.
I've worked at several software companies (including a company worth hundreds of billions[0]) and it totally comes down to (1) employer (2) team.
There's nothing about being a developer that is at odds with people with families. Some employers have awful work life balances (due to company culture) and others don't. Some employers have teams with awful work life balances and others with great ones.
If a company has an awful work life balance, the solution isn't to remove people with families and other life obligations, it's to fix the company culture.
Dude(ette), you're still in college. You don't even know what it's like to have a real engineering job yet.
Do me a favor, save this post and look at it in 5 years.
There's a middle-ground to be found, for sure, between OP and parent. I do think it's a little odd to have years of experience in software development and not one "if only ... I'm going to make it."-project.
> My weekend plans always consist of building another project of my own. A place that will let me code all day, give me a nap room, a shower, some salary, and food sounds like a dream.
So what, you don't have any other hobbies?
This is a myth that comes out of drinking too much VC kool aid and watching too many TED talks. Most successful tech is built using 20-40 year old programming languages, operating systems, and data stores. Depth is far more important than breadth.