Rodney - I saw this post a while back and have been meaning to respond to it for a while, you’ll hopefully understand by the end of this why it’s taken me some time to get back to you! In short, I’ve just recently gone down a very similar path (from being a teacher to developing software); actually I’m right at the cusp of that transition which will be finalized when school ends here in a couple of weeks.
Fair warning - this is long!
Quick background: I graduated AERO from A&M back in ‘07 but decided to go into teaching (lot of factors going into that decision) and have been teaching ever since. Through the years I’ve taught high school physics, geometry, astronomy, calculus, and engineering - the latter two being my current placements. These last couple of years I’ve been feeling that “creative itch” - a need to be building new things and solving new problems on a routine basis, something that teaching just wasn’t fulfilling for me.
In 2012 Udacity offered it’s first round of free courses and my brother turned me on to them. I decided to take their inaugural “web development (python)” course in April of that year during my conference periods/weeknights/weekends. By the end of April some of my Calculus students had discovered I was learning how to build websites so they asked if I could make a Prom voting website. Thinking it would be good practice I said “yes” - that was easily one of the most stressful projects I’ve worked on!
Creating a prom voting website for high school girls taught me the most important lesson I’ve learned today: if you want to get better at coding (or anything) just do it - build stuff, build lots of stuff. Definitely build stuff with hard deadlines and a lot of pressure. You will screw stuff up. But you will learn and get better.
That summer I didn’t take many days off - I spent almost every day (even Saturdays/Sundays) building some apps for my Calculus class. I definitely had to learn how to balance family time and work time (my wife is also a teacher, so filling “our” summer up with coding was definitely a strain, and taught me the importance of making a time budget and sticking to it).
For the 2012-2013 school year I spent most of my afternoons working a few hours after school on my projects. I probably built 20+ webapps for my classroom/school during that first year. All of my apps were education related (with a couple exceptions) and most of them directly helped me in my primary job - teaching. That was a good choice in hindsight - even if I never got a programming job at least I was making my life as a teacher easier.
In the spring of 2013 (1 year after starting) I developed the idea for a large scale webapp I called “lessonwell”
here’s a post on it from back then and I spent almost the entire summer of that year developing that app. This was a good experience that taught me a lot about bug fixing, interacting with customers, and some really niche stuff that I hadn’t encountered before.
For the 2013-2014 school year I really doubled down on lessonwell and taught myself the principles of test-driven-development and restful api’s. I also made a conscious effort to populate my github account with all my projects and contribute to stack overflow. In January of this year I decided to “go for it” and started working hard looking for a job.
My first step was to figure out what job I was looking for; that actually took me about two months, and this was the most confusing step. What do I want to do? That’s a tough question to answer.
In the end this is what I came up with: Python / Web Development / Education related / Remote (work from home).
Once I had that figured out I started looking for jobs that “mostly” matched those descriptions (some obvious exceptions were Stripe and FogCreek). I didn’t apply to these jobs for another two months, instead I just read the job descriptions and taught myself the skills that I was lacking. Then, in March of this year I started applying to jobs that matched my search. A lot of the places I sent emails to never called back, some people called back and scheduled interviews the next day. Some interviews were very challenging and left me feeling like I wasn’t prepared (FogCreek’s interview was very challenging but was a good experience - I didn’t get an offer there). In the end I took an offer from a small software company in New York that is working on a SIS (student information service) platform.
I’ve been working the last month part time for this company and will come on full time in June (working remotely from my home!)
tl;dr: Long story short - it’s definitely possible, but it’s been a long road (2 years) and I’ve worked my butt off to get here (60 hour weeks minimum even through my “free” summers). You should expect that at least.
My recommendations:
1) Find and take a good introduction course - Udacity’s course is all in Python, and if you want to do Rails I’m sure you can find a ton of other options out there as well - but I learned a TON in that Udacity course and Python has been very fun to work on.
2) Build as many apps as you can - try and build stuff that will help you out with what you are already doing. Also build random stuff that is fun
3) Github - you’ll want to understand how it works and put all of your code there
4) Get familiar with StackOverflow and contribute as you are able
5) Talk to people and go to meetups.
6) Take a look at weworkremotely.com and read up on job descriptions - learn those things.
I'd be happy to answer any questions you have about this - qdonnellan at g mail
Once you've built some stuff that's live, let me know, I've got some contacts in the Austin area who could probably help you from there!
[This message has been edited by Aggie Q (edited 5/22/2014 3:46p).]