views:

1493

answers:

16

Okay, I have read that Joel's article about how all great developers get picked up at school and never have to be looking for a job themselves. I've just stumbled upon that post that literally made me mad: Job postings, where do you post your resume?

Especially this one:

There is no magic place where all the best and the brightest post their resume. Why, because they don't need to. Generally, the best are in a place where they don't want to leave. They get to pick any job they want. That's the perk of being the best.

Well, I may and probably not belong to the brightest minds on the planet, but I don't consider myself the lowest coder either. In fact, I am probably the one guy in my previous uni group who did really love programming and was spending all my private time hacking something. I sure work on the level of the best people in my current company and see the contrast to the worst.

But. I've always had to be looking for a job. I was not approached in the uni by anyone offering me a million dollar job, I do not happen to know the right people and the right places, I do not belong to any user groups or open source projects (when would I have time for that if I'm either studying the whole time or now full time employed?). I've always had to struggle for a job, writing resumes, applications, doing interviews.

Does that mean I'm a real bad programmer and should immediately discontinue my occupation to render a service to the humanity?

Sometimes I feel I may not be a good developer. Well I'm aware of my limits and have no illusions of grandeur or something. But even more often I feel an extreme arrogance of those with the power of employ. These dozens of tricky technical questions and IQ tests which seem to be carefully prepared to humiliate even a decent and experienced guy. I have many times come to a conclusion that people publishing openings are not really looking for anyone just like feeling their power and also seem to be in need to somehow fill their working time.

What do you think about this all?

ADDED: After having read the first answers I see it leads to the old wisdom: It's not what you can, it's rather whom you know. Sad.

ADDED2: I once had an interview in a small shop and I was presented with a test. The test turned out to be completely non-technical. I was shown some shapes in groups and had to choose what I liked most, then complete sequence of shapes according to the change pattern in a limited time (a few seconds), then find synonyms and antonyms to some words in a [foreign to me] language. It lasted about two hours, not a single professional or just general question. Then I was told I failed the test, that my brain was not working well enough which could be due to the bad childhood or a drinking problem (I happen not to drink at all). How do you like that?

+18  A: 

No. If you want to be picked up as a developer, begin networking. Network with anybody possible. You'll be surprised with the doors you'll be opening.

Chris
Well I recently registered myself on LinkedIn, linked to a few guys and have no idea what else to do with it. Or you mean some other kind of networking?
User
Getting an online profile on the social network of the week is one thing. Making a personal connection is another. Let's say you currently hold a job. You're not too fond of it, but you work around other professionals. Go out of your way to connect to your peers. Someday, you will all (hopefully) encounter new opportunities. Having a personal connection with your peers will help you get your foot in the door and get your name to be known.
Chris
Also, seek networking connections for the sake of them, because people are fun to talk to, etc. For example, I got my current job through someone I met on Stack Overflow! My last job was due to an introduction from my manager at a previous job, and the job before that through someone I met in Mensa, etc., etc. Unless you're a complete hermit, you'll meet people by just doing what you normally do everyday. They don't have to be "in the field"; they may know people who are, or know people who know people who....
Chris Jester-Young
And do you know what's the difference between introvert developer and extrovert developer? An extrovert developer looks at YOUR shoes when he's talking to you. That just about summarises my problems with networking. I am so introvert and `gauche` that my every attempt to make new connections fails catastrophically. +1 for your answer though, you're just SO RIGHT. Easy-going people with social skills are much better off looking for a position. In any field.
Peter Perháč
@MasterPeter Here's the thing most people don't understand. They either just don't get it or pretend it's not true when they realize it. Social skills are acquired, not something you're born with (although you could also be born with them). Practice. Social skills should be something you fine tune in a similar nature to fine tuning your software skills. Both are *extremely* important for any tech- employee.
Chris
@MasterPeter: To be truthful, I'm an extreme introvert (INFP, on Myers-Briggs-like metrics). I've had to learn over the years to put on a good "social face"; it kinda just runs on auto-pilot. There are way to connect well with people without needing to be "sociable". Just do it, and do it because you want to get to know people, not because you're doing it "for the networking".
Chris Jester-Young
@Chris: Bingo! (On acquiring/learning social skills.) Think of "reading people" as a programming puzzle, like you're trying to "reverse-engineer" their personality. :-)
Chris Jester-Young
+9  A: 

I think you've overreacted to an exaggerated opinion. Joel has a way of putting things that is sometimes a little bitchy-sounding, which his part of his appeal as a writer. Obviously it's not true that people with great talent always sail into the perfect job without needing to deal with some rejection occasionally.

Daniel Earwicker
Joel would hate me saying this, but as someone born in Israel it is very easy to see how the time he spent there had an impact on his personality. It comes out in a lot of his writing.
Uri
Been there, seen that. Plus he's in New York.
le dorfier
+11  A: 

I think there is a lot of truth to the sentiment that "rock stars don't need to look for jobs: jobs find them." That said, a massive factor in this is your network: who you know, and who knows you.

Without contacts, you're in the same boat as every other anonymous person. I personally believe this is a VERY under-appreciated aspect of being a professional coder: to the greatest extent possible you need you need to develop strong relationships with managers, executives, board members, etc. The vast majority of my jobs I got because I knew someone who knew someone who needed help. Now that I have a pretty healthy network I don't have to rely on job boards...which is great, because I want to make sure that my next gig is with a great company, not simply one "which will have me"

Jobs will come and go, but your personal relationships will carry you through. This can be tough for many of us nerds, but it's a crucial aspect of survival and flourishing in the real world.

DarkSquid
+3  A: 

First: "best and brightest" is a fairly small clique. 95% of CS BS student probably don't belong to that group. Second: "best and brightest" does not measure coding prowess alone, but the whole package. The whole package includes things like ability to listen, ability to find requests in a diplomatic way, and not only what you know -- who you know. Third: It depends on where you're at. New York City, San Francisco or Seattle will usually have a high demand for coders. Missouri, maybe not so much.

Jon Watte
Also, most of the really good programmers that I have known worked at little companies nobody heard of and came from smaller schools.
Uri
+2  A: 

It's tough out there right now. Tough as it's been in a long time. There are a lot of very good and experienced developers looking for work by no fault of thei rown. Things will tighten up again -- they always do. A good rule of thumb is that it will take you 1 month per $10,000 you want to earn. So, if you are looking for a $60,000/year, be prepared to look for 6 months before you find a job you are a good fit for at a place you actually want to work. :)

Bottom line is don't give up. If you love being a developer and keep investing in yourself, you will find a job and you will have a career.

JP Alioto
The formula is quite true actually. The last time I was looking for about 6 months but there weren't really many openings even to try to apply for... Don't give up is sure a good advice.
User
This is completely dependent on the locale. For example, this does not apply here in The Valley where even QA folks make well north of > $60K.
DarkSquid
The formula really depends on the locale. I found (in the same time) a job that paid X here in Pittsburgh and more than twice as much in NY even though I started looking at the same time. I would say that it should be a month per some unit above the standard market price that you would want to make.
Uri
Well that's no good. I'm going to have to wait for 25 months!
Nosredna
+1  A: 

Each person has to carve out their own path in life. Some people have a little luck and a lot of skill to get themselves into a position where they have a lot of options about where to work, but this isn't the case for everyone. I'd be curious to know how companies like Microsoft or Google even know how to find those few great people as I'd think there would be tons wanting to get in there and it is quite the task to sift through that many resumes.

There is also something to be said for the challenge of finding one's niche in the world. Some people do well in academia and enjoy that as their home and others may like to find new companies and be that "cowboy" to help the company become an awesome one in terms of economic power. We all have how we fit into the world and some of us have struggles that are different than someone else.

I'll totally acknowledge that the job hunting game is a pain, where some finesse the game well. Others just have to work on building that network and know what we want, be able to articulate it clearly and be where that situation is possible. For example, I'd be curious to know how many $100,000+/year programmers there are in Flint, Michigan or other cities that aren't thought of as having a big technology workforce.

I've had to hunt over and over for a job a few times now and I'm okay with what I've had for struggles that I'm not sure how others would have dealt with those kinds of issues.

JB King
+2  A: 

On the flipside to what other people are saying here, some people can't recognise talent. Do you know the story about The Beatles initial rejection? We all have different values for gauging each other's abilities if you don't match some of the people's around you it doesn't mean that you don't have talent. You could also be unlucky. The perception that good hardworking people always win holds little weight with me.

It's a fact of programming that sometimes you're going to feel like you know all the answers and other times you're going to feel like you know nothing. The appropriate response to either condition is: keep programming, keep learning, believe in yourself but don't stop listening to others, and finally, network.

If you can join some real developer communities do so. If there aren't any near you, see if you can start one. Get out and met real programmers.

Ollie Saunders
+1  A: 

I have read Joel's blog posts and book writings on this topic and in general believe he is right with respect to the top gun developers finding work in their expertise. I don't think Joel means all good developers don't have time between gigs as even the best developers have "time off" between gigs. I have lots of experience trying to get great developers to join me where I am working. Timing working with the great ones is just that, finding the good timing.

That said, there is a big difference between developers who invest in their careers and those who consider the job a 9 to 5 job. There is a difference between those who consider their work more of a hobby and those who consider it just something to labor on. When I read Joel's writings on this topic I completely understand what he is talking about. I hire and collaborate with those who consider software development something they love, not something they labor. This is what differentiates the top-gunners from the others.

Those that invest, network, hang out at conferences, collaborate with others on learning projects, participate on forums, and hack at code on the bleeding edge will find they have more contacts, more connections, and more people they can call upon when the time comes to find another gig or new project. Those investors transition faster and easier.

The cool thing about all the extracurricular activities is you can regulate how much you want to do. You determine how many connections you make. You figure out what you want as a return on investment and make it happen.

Rick Schummer
+15  A: 

As someone who gives technical interviews, I'm one of the people you talk about who "just like feeling their power" and give questions that are "carefully prepared to humiliate".

You might be surprised to hear that you have that wrong. When I give an interview, it's so that I can find an outstanding developer to join our team, not because I get off on belittling n00bs. And if I ask difficult questions, it's because the guy I want to hire can answer them, and answer them well.

It's difficult to be constructive in answer to your question, because the whole thing is so negative. I'll try to address some of the points you make:

"love programming and was spending all my private time hacking something" - this is really very good. This is something I specifically look for in a candidate, so you need to emphasise it on your CV.

"when would I have time for [...] open source projects" - I've always managed to find time for extra-curricular coding, whether that's Open Source or my own commercial projects. Claiming you have no time for that, while also claiming to have a limited social life, makes me wonder where your time goes.

"I do not happen to know the right people and the right places" - not relevant from my point of view. Candidates I see come direct via our jobs page on our website, or via agencies. Are you registered with all the relevant agents in your area? Are you Googling for smaller software development organisations in your area and applying direct?

"carefully prepared to humiliate" - this is clearly silly. If you can't answer the quesions, it either means you're wrong for the job because your skills don't match, or (vanishingly unlikely) that the guy doing the hiring is a dick. Either way, you don't want to work there.

"just like feeling their power and also seem to be in need to somehow fill their working time" - also vanishingly unlikely.

Perhaps you're a great hacker when you're in control of the code you're writing, and can always hack your way around a problem, but you're lacking in a solid grounding in accepted best practice, and the academic theory behind software development? I always try to test a candidate's knowledge of the fundamentals ("What are the differences between an array and a linked list?", "How do you do a breadth-first tree traversal?") and also look for evidence of solving real-world problems.

The other problem you're up against is the current economic climate. It's not a good time to be looking for this sort of job.

I don't like to end on a negative note, but I have to say, if you come across half as belligerent in an interview as you did in your post, I wouldn't want to work with you no matter how qualified you were. An interview is as much about assessing how well the candidate will fit into the team, as it is about how well qualified the candidate is for the job itself.

Edit: @Mastermind: Re. the boat question in your comment: It shows evidence that: 1. you can analyse and solve the sort of logical/algorithmic problem that occurs in software development; 2. you enjoy solving that sort of problem; 3. you can communicate effectively with your peers - the guy interviewing you doesn't want to hear two minutes of silence and then a perfect answer, he wants to hear your thought processes. Given two candidates, one who knew the answer already and recited it, and one who hadn't a clue what the answer was but worked it out, talking me through his thought processes, asking for help, and clearly enjoying the process, I'd far rather hire the second guy. Working through a problem together is an important skill, and ought to be fun.

RichieHindle
Claiming you have no time for that, while also claiming to have a limited social life, makes me wonder where your time goes. - it completely goes to a little private project of mine.
User
Thank you very much for your post. It really made me feel better.
User
"If you can't answer the quesions, it either means you're wrong for the job because your skills don't match" - What about questions like "there is a boat and two groups of people, and you have to transport them from one side of the river to the other in some fancy fashion." How would that fit into a job interview?
User
@Mastermind: Happy to help! Your "little private project" is of great value in an interview, or on your CV - it's evidence of a genuine enthusiasm for software development, which is really important. It might not work as a networking tool (until you unleash on the world 8-) but it's still valuable.
RichieHindle
Ugh, I hate puzzle questions in a programming interview. Enough said. :-P (Some would argue that places that employ based on puzzles are not actually hiring the best programmers, so you may want to think about whether you want to work there in the first place.)
Chris Jester-Young
@Mastermind, @Chris: See my edit re. the boat question.
RichieHindle
@Richie: I understand the "thought processes" aspects of it, but I prefer that to be demonstrated in a more programming-orientated way. If you listen to SO podcast #43, Jeff mentioned that I described to him a much better way to test communication and "high-pressure programming": you have to debug a broken program, and fix it to comply with the spec. They look at how you go about this, how you communicate in such situations, etc. This is _much_ more effective at seeing how good a programmer is at lateral thinking, in my opinion.
Chris Jester-Young
@Chris: You're right, and I wouldn't ask a logic puzzle in a face-to-face interview. In that case we always set a coding test, which is a much better test of actual skill. There is a place for logic tests I think, which is the telephone interview. (I do sometimes ask people to write a small piece of code in a telephone interview, which can be a surprisingly revealing measure of people's ability to communicate technically, but you couldn't set a full-on coding or debugging question over the phone.)
RichieHindle
Having been interviewed a lot in my life and having received enough offers, I have noticed that I always fail interviews with puzzles and simple programming questions, and always get offers when I am actually asked code and design questions related directly to the function I'll be performing. And I've had both types of questions in both top-tier and low-tier companies.
Uri
@Richie: The boat question and its likes only check whether your interviewee prepared by reading a puzzle guide online, and whether he is a good enough actor to hide the fact that he memorized the answers and can pretend to be solving it on the spot.
Uri
I agree with Uri
Roberto Sebestyen
+2  A: 

I have not had to interview for a job in years, my CV has not been touched in years, and I tend to work short contracts. I recommend you make the time to go to those user groups, even better speak at them, or at conferences. Do something so that when someone is looking to hire someone with your skill set your name springs to mind as an expert.

It has nothing to do with how good a developer you are. This is a completely different skill set, its marketing. Some of the best developers I know have a much harder time getting work, because they do not know how to promote and sell themselves.

Its something I learned how to do, slowly and deliberately over a long time. If you are happy with you current job, and do not have that hard a time finding work, then you may not feel the need to learn how to do it, and thats fair enough. But you will never really know what opportunities are passing you by unless you do.

Sean O Donnell
+2  A: 

Another factor that I think is relevant:

Many of us coders have Aspergers. If anything it's a benefit to writing code but it messes you up socially and makes it a lot harder to find a job.

Loren Pechtel
Probably also coders on SO. :)
le dorfier
+6  A: 

In one word: No.

It is very true that the best way to find a job is if you are a senior in a top computer science program, and if you then maintain your career nonstop, and if you are living in a tech city like SF, Seattle, and (to a degree) the US Northeast.

Tech-oriented schools like MIT, CMU, Stanford, Berkeley and others throw (even in bad times) large career fairs with top companies and smaller companies. A hiring manager is there to read your resume on the spot. In the week or two after the fair, representatives conduct the first rounds of interviews on campus. Many companies also run special hiring events throughout the year. Everyone starts at about the same - potential but not much experience, and there are clear measures for comparison.

Does that get jobs for some great (but unexperienced) developers? Yes, of course it does. Does it get jobs for some less-than-great-but-in-a-good-school? Yes, of course. Does that mean all great developers get jobs that way? No, since they are not all seniors in a top school.

Many great CS departments that graduate great students don't have the name brand and don't attract that much investment from companies. In addition, anyone who is not right now a senior doesn't benefit from the whole recruiting system and has to explore other paths. Anyone who took years of break, came from another field, went to graduate school, etc., is in the same plot.

Let me give you an example: I went to college at the Technion in Israel, which is a top CS department. Intel has a huge center in Haifa, and hires tons of people from the Technion. Every year, they host lots of recruiting events, and hire many people while they're still in school. I followed that path, got a great job at 19, and had a great time.

Years later, I'm done with grad school, I'm much older, I live in a city that is not known for technology (Pittsburgh). Most of my friends and contacts live on the US west coast where I cannot move to for family reasons. So when I needed a job I had to comb the job boards, work with recruiters in other cities, send many emails to which I did not receive answers, network, etc. I then had to go for phone interviews and onsite interviews, pass some, fail some, etc.

Eventually I received some rejections and a few offers and took one from a small company that advertised on Dice, but it took time. Did someone come to me with a job offer? No. Am I a worse developer at 30 than I was at 19 and cruised right in? Certainly not. If I eventually have to find another job would it come to me? Probably not.

Uri
+2  A: 

You have a duty to yourself (and your profession) to make a job move when it is warranted. It could be to maximize your value on the market, it could be to work for a company that is more interesting or progressive, or a ton of other reasons.

There are tons of companies out there that underpay, have marginal benefits, have neglected products, poor management, and other weaknesses. If you, as an employee, stay around an environment like that when there are choices, you need to take a good look in the mirror, and ask why.

pearcewg
+2  A: 

So I wrote the post that offended you. I'm sorry, it just happens to be true. I am not implying that if you have to look for a job, that you are a bad programmer, far from it. I'm not one of the best, and I didn't mean to imply that I am part of a special class of people that opportunities magically appear and that all other people suck. There are some programmers that are so good that almost whatever they do is phenomenal. These are the type of people that work at Google and Microsoft, and well, Fog Creek. Like I said before, this 1% of programmers can do to really any job they want. If that makes you mad, I'm sorry it just happens to be true. I got to work with a couple of people in this category, and they just think on a different level than the rest of us.

So the question is, "Why do they not have to look for a job?" Really it's a couple of factors:

  1. They are really only interested in working at a place that interests them. Joel is 100% correct on this. They look at a few companies and they send in a few resumes. The really cool companies to work for, are the ones which are actively looking for these types of people. These companies have to look for these types of candidates, because that is all they want to hire. They are in a race with all the other companies to get this person, because that is the only person they want.

  2. You can kinda call this networking, but the people who are the 1%ers have the top companies on their resumes. This isn't always true, but most of the time it is. It' really because, people who are good at their job and aren't happy leave jobs, until they find a place where they are happy, which goes back to point number one.

For the rest of us, we get to grind it out and really look for jobs. I keep a mental list of all of the top companies around where I live and what they are looking for. IT communities tend to be really small. Generally you know someone that knows someone who works there. That can be a big part of finding out where you want to work and where you don't want to work. Part of it is networking, and part of it is what you know. Actually, a lot of it is what you know. Knowing someone who works at a company isn't enough. You have to know enough to have them recommend you. Another big part is that you can't be annoying (unless you are part of the 1% crowd, then you can be annoying. Another simple truth).

I'm sorry you got subjected to one of those tests. I wouldn't put too much emphasis on it. I work at a place that does IO Psychology (the field those tests come from), and what I can say is that they can be biased. No one wants to talk about it, but people who prep doing those sorts of things will score higher on those sorts of tests. If you think you are going to run into that again, I would check out How Would You Move Mount Fuji?

Feeling that you aren't any good at what you do is part of the job. I wouldn't pay too much attention to it. It's what helps you to improve and become better.

Kevin
[quote]These companies have to look for these types of candidates, because that is all they want to hire. [/quote]That doesn't work. There aren't enough "top 1%" people to base a company on (other than a small start-up). Not everyone at Microsoft, or Google, is "top 1%." You *have* to know how to build a company that lets the top 1% do what they are really good at, and then knows how to scale and leverage that down to the rest of the 99%. That includes hiring managers that are good at managing, but not coding, as well as hiring people good at coaching, etc.
Jon Watte
No MS is pretty clear about their policy about hiring substandard people. They pretty much only want the top people do whatever job it is they do for them. They never made any attempt to hide their motto "don't let the stupid people in." Google is the same way they. If you look at their hiring practices it clearly shows they won't settle for anyone besides someone they really want.
Kevin
+1  A: 

A good developer should at least be able to land interviews -- but you've got to be aggressive about it. Just tossing your resume into the basket is not enough. Be your own champion.

I enthusiastically recommend you read "No Parachute Required" by Jeff Gunhus. It will teach you how to get the attention of the right people at the company where you want to work, even if you have no contacts there. It's very targeted networking. I used it in my last job search, and I got interviews at every company I targeted and landed the job at my #1 choice. Even a small company with no openings at my level and no contact information listed on their website eventually became intrigued enough to give me a phone interview.

Another good read is "Never Eat Alone", which is about more general networking.

amo
A: 

some people can't recognise talent

Best. Psychology paper. Ever.

Which brings up the problem: if you start without very good IT/development people in a company, how can you bootstrap yourself up into a good organization? (It can be done, but it often isn't, because of the failure to recognize the problem)

Jon Watte
I can't open the paper. Could you give the name or find a link to it somewhere else?
Sjuul Janssen
-1: Can you please update the link?
Jim G.