Monday, November 12, 2012

Proving Your Worth as a Self-Taught Developer

In our San Francisco chapter of GirlDevelopIt, we have an increasing number of members that are attending our web development classes because they actually want to get a job in our industry. They come from all sorts of backgrounds, like accounting, publishing, art, and mechanical engineering, but the important thing to note is that many of them do not come from a computer science background. They are learning web development skills and computer science concepts by attending classes like ours, going through online tutorials like Treehouse or Codecademy, taking online courses like Coursera's CS 101, and generally taking the DIY approach to learning.

So, they can do all that to learn the skills that they need for the job, but the question remains, can they actually get a job? A few of them have come up to me and asked for ideas on how they can get their foot in the door in web dev, because they're discouraged by how often they see "Needs X years of experience" or "Must have CS degree" on job descriptions, and wondering if someone like them can actually make it. This is not something that I personally have experience in, because I come from a classic CS background, so I took to Twitter to get ideas from other people.

There were a lot of great ideas, so here's a summary of the suggestions:

Build up your portfolio

To make up for the lack of formal degree and years of experience, build up an impressive open-source portfolio of work.

  • Open-source everything on Github.
  • Make an app for yourself, something that you've always wanted. Ideally, it should have a frontend and at least a small backend (you can do free hosting on Heroku or App Engine for small traffic). Or, maybe it has a mobile frontend, via something like PhoneGap or a native app. The focus of the app should be wherever you are most interested, but ideally it exposes you to all the different aspects of app development.
  • Volunteer to do a website pro bono, like a local museum, art gallery, restaurant, a friends company, non-profit, your kids sports team, etc. Go through the steps of prototyping through finish with them.
  • Make a portfolio site that shows off everything that you can do.
  • But most importantly, open-source everything on Github.

Contribute to the community

Engineering-focused companies like finding engineers that know how important it is to contribute back to the developer community, and there's many ways you can show that.

  • Answer questions on StackOverflow about topics that you know. (Subscribe to the tags you're into).
  • Subscribe to the mailing lists of projects or APIs that you're using, and answer questions that you know the answers to.
  • When you find a bug with an open-source project (even in the docs - especially in the docs), fork it and create a pull request with the fix. The jQuery project has a whopping 5 repos for their docs, and they are very amenable to pull requests from learners.
  • Write blog posts that explain how to use libraries or APIs.

Find a mentor

Many of the local SF bootcamps include mentorship programs, where they pair the students with people already in the industry, and encourage them to connect every few weeks to talk about what it's like in the industry. Mentors also mean connections to jobs and opportunities. If you're not already in a formal mentorship program, then look around for someone local that you admire and ask if they have time to chat with you a bit. It doesn't hurt to ask!

Look for roles that suit your level

  • When applying for a job, look for internships, junior positions, apprenticeships, and freelance opportunities.
  • Consider applying to QA and support positions (both customer support and technical support, like Developer Relations). They often expect less engineering experience, but they can be a springboard to learn more and migrate up in the company or elsewhere.
  • If you see no relevant positions listed at a company you're interested in, write a sweet letter to them asking if they might take on someone like you, who would accept lower pay in exchange for a great experience.
  • Try posting on Craigslist in the jobs wanted section, describing your skills and what you're looking for.

  • Don't expect to get a job on your first try - instead, expect to learn about what it is that people are looking for and about where you need to improve your skills, and then you'll be that much more equipped on your next try. But hey, if you do find a job on the first go, then nice work!

If you're a self-taught developer that successfully found a job in our industry, let me know in the comments how these ideas jive with your own. And if you're a company that's happy to take on self-taught learners, link me to your job page so I can pass it on to our members.

By the way, I'm hoping to learn from these recommendations in figuring out what programs GirlDevelopIt can offer to our members, like a formal mentorship program or a workshop on contributing to open-source. If you're a GDI member, stay tuned!

1 comment:

Unknown said...

Just like to agree with building a portfolio and filling it with projects of your own. This is what I've done since I was 13 (now 24). It will take time to grow, but consistency and self perseverance are key. If you enjoy developing and coding in ANY language then you'll have no problems with establishing a well rounded portfolio. FYI no degree and my portfolio got me the job im currently with-which handles the development of custom software for businesses. I have to add that variety is also extremely important. Knowing a single language wont get you far. Especially when its languages that tend to work coincide now-a-days :) happy coding!