I'd like to help my friend look into a career in programming. Best way to do it?

Background:

She graduated with a minor in mathematics from a SUNY school and substitute teaches math at an incredibly prestigious private high school. She took some light programming in college and enjoyed it well enough, but got into another non-technical field for a decade.

She left her job about a year ago and has had no luck finding something similar.

Questions:

1) Is there a program I should point her towards that works to get women involved in programming? Better yet one that deals with 2nd career individuals?

2) She's not keen on taking out student loans and going back to school, especially in the current economic climate. I know there are a lot of free online training sites, but what specific resources would people here recommend to get her feet wet?

3) What is generally considered the least daunting language to work with? She's brilliantly smart, but hasn't touched a command line in 11 years. I've been told PERL or Ruby are good ones, but opinions are all over.

Ruby and Railsbridge are nice -- Railsbridge offers free introductory workshops for women in a lot of cities, and that can often segue into a connection with the local Ruby community. A lot of the Railsbridge students already have non-programming careers and it's very friendly to those who want to go on a second career path -- I know a handful of women who have started via Railsbridge or something similar and became professional developers within a year or so.

I personally like Ruby as an intro language because it's designed to be very readable (even a novice can usually figure out what a simple script does) and the syntax is consistent and straightforward for the most part. The market for Ruby programmers is also good right now so it's a promising choice in terms of employment prospects.posted by anotherthink at 2:07 PM on March 21, 2013

I would honestly start with Codeacademy. It's so simple, friendly, and non-daunting, and it teaches you the basic (transferable) concepts of programming pretty quickly. It would function extremely well as a refresher course.

As far as which languages - Javascript, Ruby and Python seem to be the trendiest ones around, in descending order. Currently there are lots of jobs for Ruby and Objective-C (iOS) programmers, but I can see Javascript quickly ascending there too. All three of those are relatively straightforward and friendly, and none would be a bad choice.posted by Magnakai at 2:10 PM on March 21, 2013 [4 favorites]

This might be too much like going back to school, but if your friend has 10 weeks and $12k, Hackbright Academy was made for people like her.

(You get $4.5k back if you get a job with one of their affiliates. I think there are also financial aid options.)posted by tinymegalo at 2:17 PM on March 21, 2013 [4 favorites]

tinymegalo beat me to it! But I think that's not the only program out there - I think there was one that promised you a job. I couldn't believe it but pretty sure that was the deal.posted by kat518 at 2:19 PM on March 21, 2013

Hacker School would be great for her, especially if she can get one of the Etsy grants to attend (school is free, grant covers your living expenses while you're there).

Where does she live? That will help us direct her to specific local resources--making connections in real life with other programmers will be critical both in learning how to code and in getting a job.posted by kelseyq at 2:26 PM on March 21, 2013

I think Ruby would be a really good choice for someone looking to get into programming. Although, as a professional Ruby developer, I might be a little biased. The job market for Rubyists is incredible right now, and it's a really wonderful language that the creator describes as being "optimized for programmer happiness".

You might point her towards Rails Girls as a place to start learning. Despite the name, it is for adults. They host weekend workshops to teach women Ruby on Rails, and there are events all over the place. It won't be enough for her to go from that into a job, but it'll be enough for her to get her feet wet and get to a point where she can start participating in other Ruby groups and doing more self-learning.

Here in Atlanta, we got a Rails Girls meetup going after the workshop for women to keep learning together. I've been helping organize it and it's really great. I wouldn't be surprised if there's similar groups in other cities where they've done workshops.posted by duien at 2:58 PM on March 21, 2013

I personally don't have experience, however my husband does and I have gotten earfuls about him trying to decide what languages to learn. He ended up being a college drop out and works now as a system administrator. Also note that many of the people he works with are also college drop outs/second career. (He also had a few women bosses.)

The way he decided what to focus on as far as learning programming languages was first looking for jobs that he found interesting. The job postings then provided what languages they were looking for. He finally chose his starting points based on which languages were most requested in the jobs that he found suitable for a career. (That is going to be based on personal preference.)

I know he learned most of what he does through being self-taught. He worked his way through a lot of e-books on the programming languages. He also started personal projects.

Personally, being a woman in a business world, although programming may be male-dominated I think as long as she has skills that will be all they are looking for.

To summarize:

1) Find jobs that interest her - there are tons of languages and tons of different programming jobs. (Web design, systems and servers, security, etc.)

2) Find a common language(s) among the jobs.

3) Research for E-Books, online training courses, and just jump into projects for those specific languages.

This is in SF, but may be worth the time out of Seattle to do it. No upfront cost or tuition--she pays only if she gets a programming job placement afterward.

As full disclosure, this is a school that a very good friend of mine started, but I can seriously vouch for their staff. I know several of them very well and they are incredibly smart, super motivated to get more women into programming, and very, very good at what they're teaching.posted by phunniemee at 3:23 PM on March 21, 2013 [1 favorite]

1. The programming language doesn't matter, all programming is pretty much the same.

2. The challenge is not the language, it's the thought process.

3. Does she actually have any interest in software as a career?

4. It is not a quick process to go from zero to hirable. It is very hard to get hired as a developer without a relevant degree just because it's hard enough to filter people out as is. If she is out of work and this is her plan, she needs a new plan.

5. There are many, many basic courses on Coursera and one of them is starting this coming month (in this case, in Python). I highly encourage her to do this.posted by rr at 4:13 PM on March 21, 2013 [4 favorites]

By solving the problems on Project Euler, I have found my ability to code has improved immensely. I had taken some online "courses" in Python, but I usually just burned out after a while because a lot of the things seemed boring. On Project Euler, you have to figure everything out from scratch.

So, I'd point her toward that site as a site for "exercises," or at least ones which are entertaining and challenging.posted by King Bee at 4:15 PM on March 21, 2013 [4 favorites]

I would also add that her non-technical field is relevant to the question, because a lot of places will hire sub-par programmers with additional domain-specific knowledge to act as liaisons or business analysts or whatever the title is.

Although, if she has to pick a language, I would argue that she shouldn't pick an easy language. Every slack-jawed yokel in his parents' basement can pick up an easy language. If she has a minor in math, currently teaches math, and is "brilliantly smart", she should pick the hardest language around. For example, Haskell, where half the documentation is written by reference to category theory. I guarantee you, anybody worth working for would be delighted to teach a Haskell programmer how to hack Ruby for his CRUD* Rails app.

Sorry to sternly disagree with d.z., but seriously, pretty much all the people I know hiring programmers (at very good startups and bigger companies alike) would be extremely suspicious of a self-taught Haskell programmer. Folks that pride themselves on doing The Hardest Thing often make crappy employees because they are both a) not actually that good and b) total prima donnas when it comes to what they work on. Don't make your barrier to entry absurdly high. There's nothing wrong with learning Ruby (or Javascript or PHP even) if you find it easy to learn and fun to work with.

I'll also say this: if you have no CS background at all, even as a brilliant math person, the kind of work you're going to be able to get hired to do will be pretty basic stuff for a long time. You need to learn the languages that people do basic stuff in. Ruby, PHP, Javascript, Python are all good examples. You can also teach yourself Scala or Haskell or Java or C++ or whatever, but it will take you a lot of time to get to where you are anywhere near someone with a CS degree working in those languages because they just take a long time to learn and there's a lot of engineering background you need to absorb. I'm teaching some self-taught js programmers on my team Java and it's great, but they have been working in industry for years, are studying a lot on their own, and it still requires all the Java devs on my team to take turns doing some pretty serious mentoring.

So, yes, the programming language does matter, because the amount of framework cruft you have to cut through to be productive is vastly different between different languages, and the kind of work you can get hired to do is very different, and the barriers to entry are much higher for certain languages. The language doesn't matter if you have a CS degree from a great school but your friend is not in that fortunate scenario, and so the language will absolutely matter. I hire Java programmers to write big systems and I expect them to have strong algorithmic backgrounds. I hire Javascript programmers to make stuff show up on the website and I expect them to be able to answer programming questions but not necessarily implement big complex systems.posted by ch1x0r at 5:59 PM on March 21, 2013 [3 favorites]

She could check out the user's groups in Seattle for various languages/frameworks. If she's not sure what she wants to study, a more welcoming group might tip the balance. Finding a local and experienced friend/mentor would be helpful in multiple ways.posted by mattu at 6:10 PM on March 21, 2013

If she's looking to find a job sooner rather than later, I would recommend Ruby and Rails because these languages (technically Rails is a framework) are really hot right now. As d.z. said, pretty much any basically competent slack-jawed yokel can find a job. Maybe not a big-bucks development job and maybe not a super-exciting one, but something that can get her foot in the door and maybe open up more doors down the line.

Python might also be a good choice for her because it has a strong foothold in the science and research community. Her math background might be helpful for the kinds of things people build Python apps for.

Disclaimer: I'm not an expert, but rather another woman with an interest in programming who's been doing things like Girls Develop It and RailsGirls. So I'm probably in a similar place to your friend and these are the suggestions that have been made to me. Front-end development (HTML, CSS, Javascript) has also been suggested to me, but this would really be a different career path than the previous two options.posted by Colonel_Chappy at 7:50 PM on March 21, 2013

1. As I understand it, Hacker School is for anyone who can program a little bit (2 months of experience or more), and it sounds like your friend is either there or could get there. If she has the time and the ability to move to New York for 3 months, I think it's worth applying.
2. RailsBridge looks like a great program.
3. The Python community is really great. There might be workshops near her like the Boston Python workshop: http://bostonpythonworkshop.com/
4. She should definitely do codecademy. It's not a huge time commitment, and it's possible to succeed a lot quickly.posted by oranger at 8:40 PM on March 21, 2013

Learner friendly languages with good communities would probably be Python or Ruby. Perl has a great community too, but Perl isn't the 'new hotness' sadly (I've always had a soft spot for Perl personally).

Haskell is a lovely language, but is totally unsuitable for someone who wants to learn a language right now in order to get a job: Companies recruiting Haskell programmers do so because it's a marker for other things: the ability to code in several other languages would be taken as read. (One major securities trading company that actively recruits in the Haskell community does most of their programming in OCaML for example.)

It does depend what kind of job she wants to do: python / ruby means (mostly) web work. You need Objective C if you want to program iOS Apps, Java if you want to program Android. The games world is mostly C++, with scripting languages like Lua thrown in. And on and on...all these are generalisations of course & you'll find exceptions in every domain.posted by pharm at 2:03 AM on March 22, 2013

In addition to these courses, books and self learning etc, I would suggest that she pick a project to work on in the field that she's interested in. So if she wants to work in apps, she should try to build one.

She can make an app or find an open source project to contribute to. Projects have a way of exposing what you do and don't know and force you to learn lots of other things like design, version control, refactoring, coding style, requirements etc that you wouldn't otherwise pick up. And then when you get to the job application stage, she has some "experience" and code samples that to show for it.

Looking at job postings in your particular area is also a great way to go for picking a language to start in. Its true it doesn't really matter what you start with, so you may as well pick something that makes you employable. I'm biased so I'd suggest a not-so-user-friendly C/C++ which teaches you memory management and pointers in addition to everything else but ruby is perfectly ok too.posted by captaincrouton at 8:14 AM on March 22, 2013

I am also a female, in the Seattle area, who is interested in getting into programming. I don't have the math background (yet!), but I have been in QA/Test for years.

I'm learning Python from this Udacity course: CS 101 - Learning Python. It's free, and meant to be at a 'work at your own pace' course. However, it does get detailed and dense really quickly, but I find that taking copious notes, and writing out the code examples by hand, makes the concepts 'stick' in my head better. When one complets the course, they will have (hopefully) written a search engine, which can then be used as portfolio material. I am both learning a lot, and am enjoying both the course material, and coding in Python itself. (The course uses Python 2.7, if that is a factor).

Udacity has other courses that branch off, including one in Web Development, after this first one is complete.posted by spinifex23 at 12:07 PM on March 22, 2013 [1 favorite]

Also, she may qualify for Worker Retraining at one of the local community colleges, if she's collecting UI. I know that both Seattle Central Community College and Bellevue College have Web Programming/.NET programming/Database programming 1 year certificate programs. She might have to pay tuition, or there may be grants that could help her.

She'd have to take a placement test for math, as some of the classes require placement into College Algebra or Pre-Calculus, but that sounds like that'd be the least of her worries if she already has a math degree.posted by spinifex23 at 12:33 PM on March 22, 2013

I think the main benefits of classes are:

1. Learning stuff, like a programming language
2. Showing potential employers you know stuff and are interested in learning new stuff
3. Meeting people you may want to work for or with

As previously mentioned, working on open source projects may do these things, too. For something with a math bent, maybe R or NumPy?
Is she interested in educational software? I'm sure there are open source educational projects that could use help.

And since you asked for opinions about programming languages, some thoughts:

* Python. My recommendation. It's readable but flexible. The interpreter makes it easy and fun to try stuff out. Used for small things, and for toy things, but also for serious stuff (e.g, NumPy). Large community, lots of resources.
* JavaScript. Not as nice a language as Python (IMNSHO), but easy to start small and lots of info about it easily available. Now an integral part of that world-wide-web thing all the kids are into these days.
* Ruby. If I had time in this stage of life to learn a language for fun, I probably would have learned it. Probably an ok choice.
* Perl. No, no, a thousand times no. Way too easy to make write-only code. Too many symbols and non-obvious automatic behavior for a first language.
* C/C++. Just no. Nobody should learn this first. Or possibly ever if they can avoid it. Powerful, but oh so dangerous.

I would really encourage her to look first at jobs/projects/communities that are related to something she knows about already, like math or education. A lot of software is related to something besides more software, and she may have more opportunities and more fun if she looks for places that programming intersects something she already has expertise in (and hopefully enjoys).posted by at home in my head at 12:08 PM on March 23, 2013

Tags

Share

About Ask MetaFilter

Ask MetaFilter is a question and answer site that covers nearly any question on earth, where members help each other solve problems. Ask MetaFilter is where thousands of life's little questions are answered.