- 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.
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.
Discussed previously here: https://news.ycombinator.com/item?id=7985692
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/
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:
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.
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!
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.
https://github.com/wdi-sf-jan/notes/tree/master/ds_algorithm... http://bigocheatsheet.com/ http://www.geeksforgeeks.org/
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.
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.
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
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...)
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.
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.
So, I'd say those would be a couple of things to explore.
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...
- look on elance or other contracting sites and underbid everybody
- contribute to open-source
No open source software will go anywhere without support from AMERICAN companies Oracle, IBM and APPLE
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?
Some ideas from the top of my head: blog, job board, chat client/server, HN/reddit clone, FB clone.