Hacker News new | ask | show | jobs
Ask HN: Python Enthusiast – How to get my foot through the door?
44 points by lagbaja 4034 days ago
I am a Python enthusiast, picked up the language a year and a half ago by self tutoring and also took the Udacity Introduction to Data Science course with a keystone Project.I also picked up learning the Flask Web framework, in order to deliver web applications using Python. I am really struggling with getting my foot through the door, as there is the typical catch 22 scenario, "We can't take you on board as you do not have Production centric experience" Well i need to work on a real project, in order to gain Production experience. I'm even willing to work Pro bono, in order to gain experience under my belt. Are there any suggestions as to how to break through? anybody out there with a project needing help?
31 comments

In order to get a job as a fullstack python dev, at the minimum you need to know:

- Python

- JavaScript

- jQuery (bonus for knowing Angular or something other framework)

- Basic Git skills

- SQL

- HTML / CSS

- Flask or Django

- Basic Unix skills

- Basic knowledge of algorithms and data structures

I cover how I personally approached this here:

http://alexkrupp.typepad.com/sensemaking/2013/11/2012-my-yea...

Once you have these skills, it's still going to take a couple months because every place you approach is going to ask you to do a code challenge, since presumably you don't have a well-developed GitHub profile.

The best strategy is to take a job as a consultant at a dev shop, even if it's at somewhat less than market rate. Then after a year or two you'll be extremely employable and your salary will basically double, assuming you've been using all your free time to teach yourself new skills and build a portfolio.

Alternatively, don't try and be a "fullstack" dev (at least right off the bat), and you only need to know Python, git, and Django/Flask.

In my opinion, places demanding "fullstack" devs are going to overwork you because they're too cheap or too small to hire real DBAs and front-end devs.

A good reference is Full Stack Python: http://www.fullstackpython.com/

Discussed previously here: https://news.ycombinator.com/item?id=7985692

I really liked your article. It seems like a really great resource for people getting started. I've got some friends who are beginners or interested in learning that I'm thinking about showing it to.
This may or may not be of interest to you personally, but this is probably a good time to remind everyone that:

1) OpenStack is written almost 100% in Python

and

2) Nobody involved heavily in OpenStack ever has to go looking for work - recruiters will come to you, whether you want them to or not.

As a bonus, it's an exciting project and a great community: http://www.openstack.org/community/

Oh cool. This is extremely interesting to me personally, as a relatively new Python developer.
I'd recommend that you go to places and meet people in person with no expectations (eg. go hang out at local Python meetups, get to know people, discuss your current projects over a pint, etc.), contribute to as many open source projects as possible, and don't put too much emphasis on particular technologies (eg. lots of places won't care that you know Python in particular as much as they'll care that you understand general concepts: Learn your algorithms, distributed version control principles, and be able to talk intelligently about computer science in general)
Thanks, appreciate it
This is how I bootstrapped my way into a full-time engineering job (note, I also have my BS in Computer Science), I'm sure you could do something similar:

Find some businesses that need some simple, short-term coding work - python work or php work, whatever you know that people need - and, maybe by taking an initial pay hit, get the job and deliver. Do a few of these, charging a bit more each time, and you have a portfolio of professional work. Now you're a professional programmer, you can either continue doing freelance work or apply to full-time gigs with your portfolio of real-world work.

It's not glamorous, it's not quick, but it worked for me.

Some places to look for intitial jobs:

* http://jobs.wordpress.net/

* http://www.djangodevelopers.net/

* http://djangojobbers.com/

I did open source, put everything up to GitHub, participated in public discussions and I never applied for a job (except for one), they found me.

You should build something biggish in a topic you love and make it open source. It doesn't matter what it is. I did this for example: https://github.com/pokerregion/poker

Also, filling out your LinkedIn profile can help.

Seconding this. We find our functional guys through their commits and public repos. Just the bare bones on your LinkedIn helps. Even adding related frameworks, in addition to the languages, makes you much more findable. [dropwizard + Scala etc]
Thanks for the advice, most appreciated.
If you're willing to work for free, it would be great if you could do that for a nonprofit that can't afford to pay or a social good open source project where everyone does it for free.

What's very hard is finding a good fit. There is no equivalent of OKCupid for matching nonprofits and coders. The ones I've found are like dating services that only ask “Do you like girls or boys?” and “How tall are you?”

So I've decide to build it myself. It will be called GitGive. You heard it here first!

It will be the ultimate bootstrap, because the very first nonprofit project on GitGive will be GitGive itself.

I'm going to build it in Python. If you want to help out, let me know!

I might be interested send me an email? gitgive@wfc.help
I got my first Python job by going to a user group meeting where there was an interesting presentation, and afterwards introducing myself to the speaker and handing him a resume.

As far as portfolio, I'm sure you can find someone in your friends or networks that would love for you to build a small website for them, or move their current site to Flask. If you don't know anyone looking for a site, approach local non-profits, your local library, or if you have kids or know anyone with kids, I can guarantee that the PTA at their school will have a bunch of projects that they'd love to build.

A quicker exercise that is good for portfolio is to look for web designers who have posted interesting mockups (e.g. on dribbble) and ask them for permission to build a working prototype of their mockup. This is good for both of you, and you might end up with someone you can call on to help with design work.

Mockups into prototypes is a solid suggestion
Make a Django/Flask web application on github, find a open source project and start contributing to it, make sure you understand testing/continuous delivery, learn all the important data structures and algorithms. If you honestly understand everything on these websites you will have no problem passing a interview.

https://github.com/wdi-sf-jan/notes/tree/master/ds_algorithm... http://bigocheatsheet.com/ http://www.geeksforgeeks.org/

Are you looking for Python jobs exclusively? In learning python you've likely already developed the skills necessary to pick up other frameworks and languages, so consider broadening your search to include those jobs.

I'm personally more than willing to hire developers with experience outside of my companies primary stack. Also very open to junior developers without production experience.

No need to work for free (actually, I'd highly advise against that). Just keep looking for junior dev jobs. And, if you're main concern is getting better, make sure the company has other developers better than you.

When i was just starting out (back in 1996) i simply built a website for myself, then one for a friend, then one for the company where i was working as a janitor to get some extra income to pay for my studies. Mostly for free, the company one in exchange for computer parts since they could then just write it off as tax deductible office equipment :) Basically you build up your portfolio on the low end until you find an entry level position somewhere or find that your good at selling yourself so you can start freelancing and then you roll from there.
Make stuff relevant to the places you want to work. It's both a signal of competence and of drive and caring about that place.

For example, assuming a data science team in an e-commerce retailer is hiring a Python dev: crawl their site, grab the relevant attributes (category, gender, name, price, discount), then upload a graphical, interactive representation of their inventory and a short analysis of their price structure. Do so on a page hosted on your own server (like a free AWS micro instance + $5/year for domain), then stick the code on a private repo which you share with the person you get in touch with ($7/month for 5 on Github).

You've just demonstrated both technical competence over the whole ecosystem, and that you are at least aware of the "business side". You've also probably done more than 99% of candidates for the position.

Recent example: I recently had a chat with a friend who explained to me a problem he had been having for 6 months getting a simple web tool up and running for his business. My co-founder and I knocked out a working prototype in 2 hours and sent him the link. He signed us up immediately.

I think there's a lot of less technically literate folks out there who need some work done. Think your local tailor, restaurant, whatever. You can try ask them about it and present some solutions, and some might end up paying you. It's a start, allows you to say you put something in production.

Thanks so so much, for taking out of your busy time to give such insightful advice.
I disagree with some of the suggestions of "building up a github profile".

There is a catch-22 there, in that you will only get found "per-chance" or "if someone is actually looking".

You can build sites but you don't need to open-source them either.

Build up a portfolio of legitimate work by taking scraps is the best way and then advertise yourself far and wide with your portfolio of legitimate work.

Hiring a code-monkey is easy and plenty of $5 workers in India can probably churn out code. Being a professional and delivering high-quality work is how you will stand out and warrant a $40-$50 per-hour rate

It looks like you're American, so finding work as a contractor won't be that tough for you.

I'd aim for mid-size non-tech companies that need processes automated. Do great work for them and referrals will become your prime marketing go-to.

[1] I did all that github bullshit myself and

This question, and some of the responses give me the thought: Maybe there's room for a site that allows people to post the fact that they are at a stage in their career that they're willing to work for free.

They'd include useful information such as why they are prepared to contribute (such as 18 months studying python and Flask and building some personal projects), letters of reference from people who can attest to their character and smarts, etc.

Also, the site could perform such basics as a criminal check and make the results available to potential "employers" with the permission of the person who wants to get experience (he or she would OK the information dissemination for each potential one).

Just had this thought today and am wondering what people might think about it. (As it happens, I'm in the process of deciding on my next project...)

Where are you located?
A suburb of the city of Philadelphia Pa, called Plymouth Meeting
What do you do currently? I went from a BA in Econ and an MBA to software development by bringing those technical skills and applying them to whatever job I was currently doing. Those companies had a need for automation and internal applications which I was able to step up and take on those tasks. After some time, I had built up enough experience to warrant a software engineer role.

Of course, this probably works better if you are a) in a small company and b) in an area or organization that doesn't have access to many developers.

Good question, at the moment, I will best describe myself as a Technical Analyst (Interestingly also with a BSC Econ background, then moved into IT by taking industry Network/Systems Engineer certifications and did that for a while). I work with the business by liaising with the business analyst, translating business requirements into System Requirements and making sure that from a technical stand point all the T's are crossed and I's dotted. At my current firm, we are not allowed to code anymore as compared when i joined years ago, in which i had the opportunity to get my hands dirty, got into developing a lot of ETL solutions etc. Now its more of working on IT projects which mostly is based on purchasing off the shelf say ERP or EPM system for example and making sure they are implemented correctly. At this juncture i am bored with just doing that, hence decided to pick up Python, take courses in order to enable myself.
Did you transition roles within the same company?
Not at all
I'm exactly in your position. Any help or advice would be great.
Contribute to open source, work on side-projects, do some professional work for friends/relatives pro-bono.
Here is another approach that you can try: you can get your foot into a medium sized company as a QA automation developer, you need to learn Selenium Webdriver with Python and you can practice a little bit of Python and get paid. As a Python enthusiast you probably know enough about QA anyways. Once you are in, it is possible for a dev opportunity to open and you'll be in a very good position to apply.
Start talking to local dev shops and startups that heavily use Python and offer to work for free (as you mentioned).

Most will probably deny you due to lack of resources (onboarding volunteers still takes engineering hours), but one might take a chance.

Shoot me an email if you want to chat (address in my profile). I was in the exact same spot as you 18 months ago, and have been employed as an engineer since then.

I work at a Python shop, and we find developers through Python meetups. As other people have already commented, go to any local Python meetup you can and become a familiar face there. Plus, use all the other fantastic advice here such as getting involvement in open source so you can put that on your resume as experience.
Start a small consultancy building web applications for local businesses part-time. Now you have production experience.
I've met a bunch of folks who changed careers and are doing full-time development now. A fair amount of them went through one of those devlopment bootcamps like Recurse Center (ex-Hacker School). The other folks basically got their foot in the door through networking.

So, I'd say those would be a couple of things to explore.

I know people who have done a Recurse Center batch, and people who have done bootcamp courses. I agree that each could potentially be a useful experience for someone changing careers, depending on the situation.

Clarification: The Recurse Center isn't a bootcamp in the sense that many people use the phrase. (There is no curriculum, it is free to attend, and many attendees were working as software engineers before their batch.)

https://www.recurse.com/blog/77-hacker-school-is-now-the-rec...

If you've been learning Flask take those sites that you use to learn with and host them up on Digital Ocean or the like. That way you'll have production and deployment experience. There are also a ton of open source products out there using Python. Reddit is one for example.
- go to local Python meetups and network

- look on elance or other contracting sites and underbid everybody

- contribute to open-source

I might be able to refer you for a paid part-time python position...you can reach me at jamesalexanderlevy at g mail. If you do happen to have a github account its always a plus to link to it when you're asking around about jobs, as well.
Have you tried some of the free lancing websites like oDesk? While it probably doesn't completely solve your problem, it will give you some real world production experience. You might have to low ball some offers though.
Learn jpython. All Reel work gets done in American programming langaguges of JAVA/DALVIK/C#.

No open source software will go anywhere without support from AMERICAN companies Oracle, IBM and APPLE

>I am really struggling with getting my foot through the door, as there is the typical catch 22 scenario, "We can't take you on board as you do not have Production centric experience"

How many applications and feelers are you sending out? The vast majority of companies are either unwilling to risk hiring a junior developer, or don't have the on-boarding and infrastructure to make use of them. With excellent set-up, you should still expect to see fewer than one in twenty companies get back to you. The application game sucks, but it's how you find the companies that can hire junior developers.

Where in the interviewing pipeline are you getting this? The best course of action is very dependent on where you're getting rejected.

My model of the pipeline: 1. Initial contact 2. Phone screen 3. Technical or coding challenge 4. On-site interview 5. Offer & salary negotiations

So, there's five different pieces of advice:

1. If you've sent out a hundred resumes and have gotten zero phone screens, I recommend working on your resume and on-paper skills. The good news is that a hundred applications like that takes 5-10 hours depending on skill and organization. Advice: make a couple small open-source web applications, and put them on the very top of your resume.

2. If you've gotten five phone screens and no technical challenges or on-sites, I recommend brushing up on self-presentation skills. Figure out a quick, one-minute story to tell about who you are and why you're an awesome self-taught programmer. Also, you could check how you're talking about yourself, and try to find areas where you're convincing people to not hire you. Self deprecating talk about lack of production experience is playing defense, not offense. Your job is offense, not defense.

3. Coding challenges are basically something you can cram for. There's programming competitions to get domain-specific expertise here. I don't have good advice since this is personally an area of natural strength. Project Euler is awesome and a great fit for Python. Challenges are a mix of live shared-editor with voice and offline ones. The shared-editor stuff is higher value since there's more commitment on their end.

4. Expect to fail the first one to four on-site interviews. The good news is that getting the first on-site is the most difficult. Anxiety, comfort levels, and lots of 'soft' skills go into interviewing well. You improve at this best by interviewing badly. Cracking the Coding Interview is a good book to use to improve here. If you have or can form a social group for this, that's even better.

On-site interviews roughly look like "put candidate in room, have someone come in and give them a whiteboard problem like something from Cracking the Coding Interview, repeat three to five times." The more you can make your practice look like this, the better. I'm talking down to wearing interview clothes, keeping the practice-interviewees in the same room and rotating interviewers, etc.

5. Don't worry about negotiation too much at this stage. If you must, I have some very general advice. First, ask for more time to make a decision - try for two weeks. Do not mention a number first. The only thing you need to say live is something like "that's a very interesting offer, let me think on it and get back to you." Do all negotiation over email or in rounds. Try to get multiple offers at the same time. Accepting an offer from the first company that gives you one is usually a mistake. (Why? Because someone who can get one offer can likely get three or more, there's a large variance in fit and compensation, and you want to accept the best offer so far. Plus, as long as you don't burn bridges, companies that have extended you an offer are willing to talk again later.)

tl;dr - Do you have projects and a good resume? If so, how many applications are you sending out?

I must say first and foremast a BIG thank you to you, for taking the time to respond to my post, most appreciated. To answer your question, i will like to think i do have a good resume :) and sending out about a dozen a week maybe. No I presently do not have projects.
In your situation, I'd build a web app to show potential employees that I can actually code, and then send out closer to twelve applications a day than twelve a week.
if you have a couple of bucks for a DO instance and a domain, develop and opensource many sample apps to create a portfolio.

Some ideas from the top of my head: blog, job board, chat client/server, HN/reddit clone, FB clone.

If you're based in the Bay Area send me an email: craig@set.tv
Email me. I might be of direct or indirect help.
Look at the door and ask yourself "What would Kojack do?"
Or Chuck Norris. (Chuck Norris is the reason Waldo is hiding)
I dunno, I think at this point I get +2 to bash down doors.