How Not to Get a (Python) Job – a rant

How Not to Get a (Python) Job – a rant

At PyCon 2011, Brian Moloney (of Imaginary Landscape here in Chicago) gave a talk titled How to Get A Python Job”. It wasn’t really so much about getting specifically a Python job as about how to land any job. It was the same sort of advice you can find in a lot places – hints on how (not) to apply, how (not) to present yourself, how (not) to interview, how (not) to impress interviewers, and so on. If you’re looking for a job, go watch it and take his advice very seriously.

I went to Brian’s talk because I had just found my own Python job and I was curious about his perspective. I had started my own job search with my fair share of negatives – the economy was in the toilet, I was over 50, I didn’t have much formal training, my experience (in private education) wasn’t exactly mainstream, etc. And yet within 3 months of sending out my first resumé I had a job, and even had to turn down other offers. Even as I settled into my new job, I was frequently contacted by recruiters looking for Python programming help. And yet, I’ve heard many people complaining quite vocally about how difficult it was (and is) to find programming jobs in general and Python jobs in particular.

As the IT director and lead developer at a startup trying to grow its tech staff, I’ve been heavily involved in searching for and interviewing developers. In that process I’ve seen people of all ages and backgrounds painfully ignore the basics of getting a job. So the idea behind this post is to put one more voice out there, sharing some of the things that make me not want to hire an applicant.

Here are the things that make crazy. Take from them what you will.

Not knowing the market. Several candidates have said, “it seems like no one is looking for Python people.” Say what? I get called regularly by recruiters looking for Python developers. We’ve been searching for a Python dev for months. Admittedly, the market is better for more experienced people and you might need to relocate, but even junior Python dev positions are going begging. Ask any recruiter, we’re a hot commodity. When someone tells me that no one is hiring for Python, that tells me one of two things… either that person doesn’t know the job market (at least around here), or they aren’t really a Python developer. In the first case, I’m a pretty firm believer that the responsibility for finding jobs lies with the job seeker and not having done research on the market it a bad sign. If you don’t care enough to do research to find your own career, why should I expect that you’ll have the initiative to solve problems and help our team move forward? And the alternative is worse – in a market where knowing how to spell the word “Python” (at least on a resumé) should get you at least a few calls, not getting any traction is a red flag.

Not knowing the craft. This is so obvious that it shouldn’t need saying… except for the fact that it needs saying. “If you’re applying for a Python programming job, you should know as much as you can about Python and programming.” That means a basic understanding of the language, some basic knowledge of programming, some familiarity with the common or hot tools and technologies, etc. Obviously the depth of that understanding will vary depending on your experience, and for junior positions, particularly, you’re not expected to know everything, but you still should have some idea of the field.

I’ve interviewed candidates who couldn’t tell me how they would approach a problem, or what libraries they would use (or even have used), who’ve never even heard of Django, and so on. I’m no fan of springing little programming puzzles on candidates, since to my mind that mostly tests the ability to solve little puzzles, and I don’t expect lengthy dissertations on advanced programming topics, but I do expect you to be able to know the basics of coding and Python syntax, to have at least a nodding familiarity with current technologies, and to be able to discuss the approaches, tools and pitfalls involved in some of the coding you’ve done.

And speaking of the coding you’ve done, particularly for junior developers, you may not have done that much professionally. However, if you haven’t done anything outside of classwork, I’m going to be pretty skeptical. There are tons of opportunities to get involved in open source projects, to create your own web site, to help with something for a business, a club, or even just scratch your own personal software “itch.” It doesn’t matter how big or how successful your projects were, what matters to me is that you’re interested enough to be in the game on your own time.

Not knowing us (and the job). It’s been said before, but if you don’t care enough to do some research and thinking about us and the position before you come in for an interview, why should we think you’ll care once you’re hired? You’ve got the job description, probably some names of people at the company, and the entire Internet as resources. Even if you don’t have absolutely all the information, you should be able to find out enough to ask questions and maybe even float trial solutions. Why do you do x? How do you deal with issue y? Have you ever thought of trying z to solve this problem? Even if you’re completely wrong about your assumptions, the very fact that you’re thinking about our business is very compelling. If you want to be really sneaky talk about how “we” might solve some of those problems together.

And speaking of sneaky (not really, since it’s clear if you’ve done it or not), if you know who you’ll be interviewing with, look the people up online. Google and LinkedIn are your friends here. At worst you’ll have a feeling of control during the interview and at best you can work in a comment or question relevant to the interviewer’s background, which is almost always good. I’m not going to support hiring you just because you looked at my LinkedIN profile, but it does tell me you cared enough to do some research, and that’s a good thing.

Not selling yourself. Don’t go into your shell – there is a job open and somehow you’ve gotten an interview. So take advantage of it! You may be an introvert, it may be hard to talk about yourself, or maybe you just don’t think you should have to “market” yourself. Whatever… but in this situation you’ve really got to go for it. Show us how interesting you are, how much you care about the work, how cool you think the job is, how much you would bring to the team. If we hire you, we’ll have to work with you every day, so why should we look forward to that? (In a business sense, of course – promising to keep everyone loose with dirty jokes is probably not be the way to go here.)

We can only hire a few people and we need to get a lot of stuff done. We have lots of problems crying out for solutions so we want someone who is eager to tackle those problems and has some chance of succeeding. As Joel Spolsky succently put it, “smart and gets things done.” You may not have the exact sklls to fix every problem at this moment, but that’s not the entire point – as a startup none of us had the exact skillset for this business when we started. But all of us were ready to dig in, we figured it out fast, and we got the job done. And that’s the sort of person we need.

Note: this is not the same as emphasizing how good this job would be for you. I understand that you want to move from that old job to a new, more interesting area. I applaud the fact that you just love to learn new things. I’m totally on board with how wonderful this opportunity would be for you… but we need to move and scrub a ton of data, polish the UI, analyze customer behavior, and keep thinking of new ways to stay ahead of the game. How are you going to help us do that?

Please feel free to ping me with comments or questions: comments are not automatically published, so if you have a question or comment, please feel free to leave a comment and indicate if you want it to remain private.

Edit: If you’re looking for Python jobs you might try the Python Job Board, which as it happens is where I found my current position, or the PyCoder’s Jobs site (I have no direct experience with this one, this is not meant to be an endorsement), which is dedicated to Python jobs and run by the same people who do the Python Weekly newsletter (which I do find very useful, actually.)

[edited to add company name and contact info]

About these ads

30 Responses to How Not to Get a (Python) Job – a rant

  1. SB says:

    Where do I send my cv? ;)

    • Vern Ceder says:

      Ah, good point. I suppose I could make figuring out the email address part of the qualification process… ;)

      But if you or anyone else is up for it, the email address would be bruce.simmons<AT>zorotools.com (our recruiting lead) or vernon.ceder<AT>zorotools.com (me).

  2. Vern:

    Great rant. Everywhere I go clients tell me that there aren’t enough Python devs. We need to keep the supply coming, as Python usage is starting to climb!

  3. sfjulie1 says:

    Well your rant, may be an artefact correlated to the market, and behavioural bias :
    Good developers will poorly sell themselves, and bad one will be all the more good at selling themselves that the incentive of even a regular job is very high in time of turmoil :
    – people with poor skills tends to overestimates their skills, while people with good skills do the opposite (1) ;
    – a good incentive attracts the cheaters (2). And, Geek is nowadays beautiful

    So it generates a bias that will make good developers appear shy and clumsy, while bad or cheating or below average developers will oversell themselves.

    «the morons dare everything, that’s how we recognize them» (Michel Audiard)

    1 – http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect,
    2 – http://www.hreonline.com/HRE/story.jsp?storyId=464542462

    My .02€ ^_^

    • Vern Ceder says:

      Those are certainly fair points. However, I would argue that it doesn’t speak to the phenomena I’m mostly ranting about – the failure of candidates to research the job market, the job, the company and how they might help out. I would hope there is no (and I haven’t seen any) behavioral bias the prevents good people from looking up the company and thinking about our problems before an interview… I would also argue that not having written any code that they can talk intelligently about is a feature of people with poor skills and cheaters, not good people.

      • sfjulie1 says:

        Harmful bad coders in my experience have often written outstanding frameworks that works 80% of the time, over engineered and over-sold, they speak very well off. (zed shaw rant on RoR is a little extreme but instructive for example)

        They also cheer complicated tools (IDE, complex managerial methods…) over getting things done (joel’s point).

        My point is : github tells a more interesting story than the one mouthed by the candidates : does someone have respect for the users (docs, releases cycle, issues), does he understand the field he is interested in ? How does he interacts with fellow coder (push accepted, network) ?

        I think IRL interviews are not discriminating on the praxis (how well one can do), but on the doxa (to make people know). And I suspect these two skills are exclusives. So my point, is the problem is not coders, but how your hiring process is not filtering efficiently.

        You are suffering from a high demand, in conjunction with a very sparse offer (of good devs) amongst a wide offer that includes a lot of opportunists (HR on big incentive). (Noise/Signal Ratio is horrible). We obviously have too much noise on the market on both sides (recruiters and coders) !

        Your rant is not about coders, it is about what your filtering process handles you to review.

        Your process of hiring is a multiple stage filter, and obviously it raises too much false alarms. Don’t rant on the poor quality of the signal you filtered when you have too much false alarms. Rant on the filter you built, it is obviously not working, and try to imagine how you may improve it. :-)

      • Vern Ceder says:

        @sfjulie – With respect, while our filter certainly could be improved (and we are working on that) you make several assumptions about our hiring process (and the candidates I’ve seen) that simply are not true. In addition, I don’t believe that doxa and praxis are mutually exclusive – someone unable to communicate (except via their code and github) is useless to us, and the people that we have hired are clearly capable of both.

        However, I’m not really interested in wrangling over the details… I think we just need to agree to disagree and end this sub-thread. :)

  4. Chrisfs says:

    For someone just getting into the field, when you say ‘research the market’ , how would you go about doing that. Beyond searching Craigslist, Dice and Indeed with the keywords junior Python, what some other ways to research that perhaps ‘everyone’ but beginners know?

    • Vern Ceder says:

      Actually that’s a very good point. And maybe it’s trickier than I thought, now that you mention it. My suggestion would be to look everywhere, but in particular LinkedIn is good for this. Make contact with recruiters and actually talk to them, ask them what’s going on, what’s in demand. I know, you may feel a bit dirty in the morning ;) but I found that to be very useful. Good luck.

  5. matthias says:

    My problem when looking for Python jobs was not a hole in the market (although there are not many in my specific area), but entry expectations set really high by employers.

    Your Zoro Tools listing, for example, states that you want someone who:

    * You live by the Zen of Python and PEP-8 (Reasonable)
    * your deep knowledge of Python and handling data as well as your working experience with Linux/UNIX and cloud based systems (Reasonable)
    * shape the architecture and dataflow of a site with over 300,000 products and traffic that doubles every three months. (Intimidating, but reasonable)
    * Your strong knowledge of User Interface design (Not unreasonable, but not every Python programmer does U/I)
    * knowledge of HTML5/CSS3/jQuery (Essentially looking for someone with web experience)
    * experience with Python / Java / SOAP / REST (Are you expecting someone with experience with ALL of this?)
    * One band – one sound (Had to look it up :) )
    * experience with A/B testing (More U/I expectations)
    * predictive modeling and analytics (not only U/I, but some intimidating math/science expectations)

    This is actually not too bad, but some others demand even more from a “junior Python programmer.” I also see that you state “one or more” of these 4 key areas, which indicates you may not expect every skill from the candidate.

    My advice to young developers would be: take a chance, even if you don’t have every skill, certification, or level of experience the job lists you can often times still land it.

    My advice to employers: make it very obvious on your job listings what skills, certifications, and experience are *actually* required, and what you’re willing to work with.

    • Vern Ceder says:

      Absolutely reasonable. And I’ve run across similar lists where no one could possibly have all of the qualifications listed, including in some cases 10 years of experience with a 5 year old technology… ;)

      I know we have a pretty intimidating list of “requirements”, but in our case at least, I hope we are clear enough that we are *NOT* expecting to find them all in one package. What we are trying to do is actually widen our possibilities and encourage good people to apply as long as they can help us out in at least one of our pain areas. If we get a Python/Javascript web UI wizard, we’re flexible enough on our small team to have someone else hand over some of their UI work and take up the slack on the analytics side. Likewise, if we find someone who’s a genius at predictive modeling, we’d be happy to run with that and have others worry about the UI, etc. As to experience with Python/Java/SOAP/REST – having *experience* (as opposed to deep knowledge) with both SOAP and REST based API’s doesn’t strike me as that impossible, but we’d definitely be open to any interesting combination of languages and API’s.

  6. Purity Control says:

    When I first read this I found myself nodding in agreement most of the way through the article. However, previous posters have offered some unique perspectives I think you have discounted too quickly.

    Our traditional view of the job market is that employees must sift through a lot of chaff to find any potential wheat. From your description of the situation though the opposite is also true. If there are a lot of companies out there looking for python devs and the good ones are few and far between then you need to innovate your process and do some leg work or you will be forced to hire mediocrity. The complaining about how difficult and unfair the process is seems to be the same on both sides of the coin.

    How many times have your eyes glazed over when you read a cv that said “works well in a team or as an individual”. Matthias makes a very good point here. When your list of requirements is a long wish list that looks the same as every other offer chances are you are not going to overly motivate your potential employee.

    Lastly, I think if you had of been involved in this sort of discussion a little while ago and we were talking about educating people to be prepared for the job market. The conversation would have been how teachers are very restricted in what they can teach and how they are measured in that teaching process. This restricts how a person is prepared for the job market when they leave education (and I do agree with that). However, a lot of what you are seeing now is a result of how that process creates people who are taught how to pass exams rather than learning how to learn.

    • Vern Ceder says:

      Actually, I completely agree with what you and some of the other have mentioned.

      Having been involved in education in one way or another for 30 years before I took this job, I’m pretty keenly aware of the limitations of our current system, particularly in regards to training people to think and learn. In addition, we ARE trying to innovate our hiring process – but that wasn’t the point of this post. I would also say that I didn’t intend to complain about any “unfairness” (I really don’t see any unfairness directed towards those hiring) or difficulty (t’s difficult, yes, but that’s the way it is). Mostly my post was fueled by frustration at dealing with candidates who, as someone else put it, “are sleepwalking through their own careers.”

  7. driscollis says:

    I had a lot of trouble with recruiters. They didn’t know what Python was or how to spell it. One told me that there wasn’t much demand for them in this area (Dallas, TX). I can understand why people are confused. I sure was. I know from my own blog that California, Chicaco, New York and the Dallas area are my biggest readers.

    Anyway, if your company has any telecommuting opportunities, let me know. I’d apply now, but I’m stuck in a lease for another 10 months.

    • Vern Ceder says:

      I definitely understand about recruiters – the confusion they introduce into the pipeline far exceeds their positive contributions in many cases.

      I’d love to have you apply, but we’re not in a position to work with telecommuters yet, although it’s a logical, maybe even inevitable, evolution for us eventually.

  8. Dave Billesbach says:

    Interesting advice. I’d have to say that it not only applies to “real world” jobs, but most of those tips are very relevant to applicants for graduate research assistantships an post-doctoral positions too. I can’t begin to tell you (well, maybe I could if you’d buy the beer) how many grad students and post docs I’ve encountered who have absolutely no curiosity about the subject at hand. Those are also the ones who usually show no creativity in problem solving. I guess that I’d have to add to your advice that if any of these tips are a problem or a burden for you as an applicant, then maybe you ought to consider a different field. Take care W.M.!

  9. [...] the first Friday of June and I’ve read a bunch of new articles this week. From the Vern’s rant about getting Python jobs to a review of the web2py cookbook, there’s lots of fun things going on in Python land. Here [...]

  10. BMO says:

    A Dice search in my area for python returns two results. Some places just have no demand for python devs.

    • Vern Ceder says:

      Indeed, some places don’t have much demand. And a lot of companies (ours included) don’t always bother to list on services like Dice. But yes, if getting a Python job is the way you want to go, you may need consider relocating or working remotely – I’ve been contacted about remote Python jobs a number of times in the past year.

  11. FC says:

    I’m a python programmer, but credit checks are limiting my ability to get a good job. I would send you a resume, if your company does not do that…

    • Vern Ceder says:

      We do ask for some credit type information, but to my knowledge we don’t use that as a reason to reject people. At the moment, through some improbable stroke of luck (this post really didn’t have anything to do with it) we are fully staffed at the moment and won’t be hiring for a few months…

  12. I currently have a Python/Django job (www.worldrat.com), I love it, problem is that I live in Peru, and have been looking for a better paid job, Python related, I have tried several telecommuting jobs and home-based, I got myself some interviews and managed myself to get a couple of pretty good offers, the problem is, they needed a US-based entity to invoice them. So lame for me, I would likely not get a decent Python Job in the near future.

    • Vern Ceder says:

      Yes, that is unfortunate. I know that our company also has issues paying overseas contractors, so I’m not surprised. The world is not quite at the point of truly taking advantage of remote workers, so relocating to a “hot” market is often the best, and sometimes the only, way of taking advantage of the demand for Python coders.

  13. this says:

    don’t waste your time. i personally know half a dozen very qualified people that applied…she clearly ‘had no choice’ but to say they had no openings

    • Naomi Ceder says:

      Opinions may vary – I certainly don’t recall 6 “very well qualified” people in the past 6 months, although there were at least two who ended up finding positions more to their liking after we talked to them. And I’m afraid if you read this post as a guarantee that we would always be able to hire everyone who came along, regardless of visa status, etc, you will be in for disappointment. We actually are blessed at the moment to have all of our positions filled, and won’t be looking for more until some time in 2013. Sorry, but the point is to try everywhere…

  14. Christian says:

    Totally agree with this. It’s shocking how poorly some candidates come in unprepared for interviews. Often times this seems to be the case with folks sourced through recruiters – where the recruiter may not be relaying the correct information about the job to the candidate – and is more concerned about just getting someone on premise for the interview. I started a nice job board around Python which seems to attract good candidates – as it is so focused – http://www.pythonjobs.com. We’ve had good luck getting qualified candidates to employers.

  15. Carl Trachte says:

    With regard to “sneaky”, in the Navy the expression was “If you ain’t cheatin’ you ain’t tryin’.” It’s true.

    A few years back I attended Pycon and I tweeted something like, “They are taking resume’s from the food service people.” The type of people who attend a conference on their own time are the type of people a lot of companies are looking for – essentially what the essay says. Interest in the platform and the problems presented in the job count.

  16. Barb says:

    I love this! As a college student that just started learning python, I am very inspired and I loved how honest this post is. Now I have a guide line on what should I know to get myself in the field! I will for sure apply when I am ready!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 133 other followers

%d bloggers like this: