
Ask HN: Python Enthusiast – How to get my foot through the door? - lagbaja
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, &quot;We can&#x27;t take you on board as you do not have Production centric experience&quot; Well i need to work on a real project, in order to gain Production experience. I&#x27;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?
======
Alex3917
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...](http://alexkrupp.typepad.com/sensemaking/2013/11/2012-my-year-of-
code.html)

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.

~~~
ForHackernews
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.

------
zb
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/](http://www.openstack.org/community/)

~~~
iconreforged
Oh cool. This is extremely interesting to me personally, as a relatively new
Python developer.

------
SamWhited
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)

~~~
lagbaja
Thanks, appreciate it

------
zenogais
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://jobs.wordpress.net/)

* [http://www.djangodevelopers.net/](http://www.djangodevelopers.net/)

* [http://djangojobbers.com/](http://djangojobbers.com/)

------
Walkman
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](https://github.com/pokerregion/poker)

Also, filling out your LinkedIn profile can help.

~~~
lagbaja
Thanks for the advice, most appreciated.

------
eevilspock
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!

~~~
cmdrfred
I might be interested send me an email? gitgive@wfc.help

------
joeld42
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.

~~~
joshuaFW
Mockups into prototypes is a solid suggestion

------
aburan28
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...](https://github.com/wdi-sf-
jan/notes/tree/master/ds_algorithms)
[http://bigocheatsheet.com/](http://bigocheatsheet.com/)
[http://www.geeksforgeeks.org/](http://www.geeksforgeeks.org/)

------
lojack
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.

------
tijs
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.

------
crdb
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.

~~~
lagbaja
Thanks so so much, for taking out of your busy time to give such insightful
advice.

------
phantom_oracle
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

------
garyrob
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...)

------
ylem
Where are you located?

~~~
lagbaja
A suburb of the city of Philadelphia Pa, called Plymouth Meeting

------
mead5432
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.

~~~
nodn3rb
Did you transition roles within the same company?

~~~
lagbaja
Not at all

------
mknits
I'm exactly in your position. Any help or advice would be great.

~~~
dpacmittal
Contribute to open source, work on side-projects, do some professional work
for friends/relatives pro-bono.

------
partner2
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.

------
kcole16
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.

------
lgunsch
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.

------
themaninblack
Start a small consultancy building web applications for local businesses part-
time. Now you have production experience.

------
drincruz
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.

~~~
heslma
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...](https://www.recurse.com/blog/77-hacker-school-is-now-the-recurse-
center)

------
mburst
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.

------
totalrobe
\- go to local Python meetups and network

\- look on elance or other contracting sites and underbid everybody

\- contribute to open-source

------
jameslevy
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.

------
monroepe
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.

------
jslove
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

------
ThrustVectoring
>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?

~~~
lagbaja
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.

~~~
ThrustVectoring
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.

------
pacofvf
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.

------
vosper
If you're based in the Bay Area send me an email: craig@set.tv

------
andybak
Email me. I might be of direct or indirect help.

------
PaulHoule
Look at the door and ask yourself "What would Kojack do?"

~~~
0xdeadbeefbabe
Or Chuck Norris. (Chuck Norris is the reason Waldo is hiding)

~~~
PaulHoule
I dunno, I think at this point I get +2 to bash down doors.

