Where do I start?

Hi all. I love reading Hacker News. I love making tiny tiny one-day websites in Ruby on Rails. I love staying up all night completing the next Project Euler problem and the amazing satisfaction that comes when (if!) I crack it. I love failing miserably in my quest to make a chess engine in C++ (I've got pointers and SIMD intrinsics down - but there's a bug in my move generation). I love running Monte Carlo simulations in Haskell trying to find weaknesses in the odds offered by Chinese underground gambling rings. But here's the thing - I'm not a programmer. I'm a director of studies for an English school. And I'm thousands of miles from the nearest start-up, in an unheard of city in the North of China. I am young, I have a top degree from a top UK university (in physics though, not CS). And I'm going to start again. My wish is to move somewhere exciting (for tech) and move numbers around for a living - because that is what I really love. I have no professional experience programming. So with that in mind, I'd like to consult the great Hacker News Oracle and would love to hear your advice on the viability of the following "getting into coding" strategies: 1) Throw myself at an open source project and/or build stuff (I have a few Ruby gem ideas but aren't a 100% confident in my implementation skills) and build a Github profile that passes for a resume 2) Apply for junior Java positions (because they all seem to be Java) around the UK, in the hope that I'll get accepted to one - then move to something more interesting after getting experience there 3) Just go ahead and apply for positions working with dynamic/functional languages doing stuff that actually sounds cool, even if they ask for experience - but would anyone really give me a second look? 4) Get a foot in the door freelancing on places like rentacoder and try and build a portfolio from that to help me get a fulltime job. 5) Actually try and start a startup myself - I have ideas and savings, but I'm scared I'll waste six months building something nobody wants. 6) ...what's number six?

  • First, best of luck in your endeavors and your dreams of trying something new. My advice about your "6 points"

    "1) Throw myself at an open source project and/or build stuff (I have a few Ruby gem ideas but aren't a 100% confident in my implementation skills) and build a Github profile that passes for a resume."

    First of all, Github is a portfolio, not a resume. Theres a lot of contention around this, and some people do believe Github is a substitution for a resume, but I personally don't.

    As for not being 100% confident, believe me that not every success starts out seeming like it will be one. You might create a gem that is good enough, gains a following, and attracts contributors who end up re-writing it nearly 100% - And that isn't a bad thing. If you have ideas for gems that you think are better than whats out there, or fill a niche that needs to be filled, give it a shot.

    "2) Apply for junior Java positions (because they all seem to be Java) around the UK, in the hope that I'll get accepted to one - then move to something more interesting after getting experience there 3) Just go ahead and apply for positions working with dynamic/functional languages doing stuff that actually sounds cool, even if they ask for experience - but would anyone really give me a second look?"

    I would GUESS that you'd have an easier time finding junior positions with a Java shop than with some place using a more functional language, but that is a guess. Since you lack a lot of experience, any place that takes you on is going to need to expect to have a period of training where you're mentored and tutored a bit - not only on the language(s) used, but also their style and methodology. You should seek out those kinds of places, that offer a way to mentor and train, and understand you probably wont "hit the ground running"

    "4) Get a foot in the door freelancing on places like rentacoder and try and build a portfolio from that to help me get a fulltime job."

    I'd be wary of offering your services for pay if you aren't confident you can deliver. You mention you have some Ruby, C++ and Haskell experience, but haven't said exactly how much. You should look at some of the jobs offered on those places for those languages and give yourself an honest assessment - Could I do this job in that timeframe? If you think so, give it a shot. But if not, you could just damage your reputation.

    "5) Actually try and start a startup myself - I have ideas and savings, but I'm scared I'll waste six months building something nobody wants."

    Welcome to the world of programming :) You need to take that jump and waste the 6 months, or else you definitely won't have anything anybody wants. There is always the risk that you'll work your ass off for nothing, but thats part of the game. Look at it like a gamble - a lottery. Or, like one of your underground chinese gambling rings, haha.

    6) - Never stop learning. Go out of your way to find things you don't know about, and learn them. Don't see the world as full of nails, and you holding the worlds best hammer. Languages and platforms are tools. Some are hammers, some are screwdrivers, some are measuring tape, some are glue, some are grease. Learn to see where things fit, and if you feel like the tool you're using isn't the right one, go out and find a better one if you can.

    Like I said, best of luck. I hope you do well out there

  • "5) Actually try and start a startup myself - I have ideas and savings, but I'm scared I'll waste six months building something nobody wants."

    This one. To see if your ideas are worth pursuing look up "lean canvas" and try and fill one in for each idea you have. Building something for 6 months before you see a customer is the old school way of building an internet business.

  • You said you have ideas and savings. Here's my suggestion:

    6) Keep your job and build your MVP in a few months. Then apply for Start-Up Chile in June. (http://www.startupchile.org/)

  • As already stated, do not get into freelancing until you know that 1) you can deliver a project and 2) you have a decent idea of how long it will take to do it.

    My advice is to keep your day job, quit reading hacker news all day, and quit staying up all night doing Project Euler.

    There are a million ideas for building websites, web apps or mobile apps. Pick a platform for now, whichever you're most comfortable with, and build a product. I don't recommend this product necessarily be a startup-type deal - it can be something simple. Easy even. If you like, you can pick something you don't have much experience with and focus on shoring that experience up. Don't know how to work with REST APIs? Build a twitter client. Want to expand that knowledge? Build a dashboard for a random project (like this) that pulls in from Github, Stackoverflow, Twitter and Reddit APIs.

    If you want to do the world some good, make it so that I can go to a page that looks like that Ember dashboard, type in the name of my project, and get a dashboard out of it.

    After a few of these, you'll know what you can do, and have an idea for how long it'll take. At that point, you'll also have a code portfolio. Open source the code on Github (free if it's open source). Then come up with something more ambitious. Maybe a two or three week project. Figure out how long you think it'll take. Work on that and track your time diligently. When you're finished (if you finish), you'll know how close your estimation skills are. If the app is worthwhile, it can be a startup.

    Whatever happens, by this point, you should have a public-facing application that solves a problem, and a couple of utilities or libraries or gems that have gotten you some credibility as a developer, and a code portfolio at the very least.

    Finding a job at this point shouldn't be terribly hard if that's what you want -- you should at least be able to get a junior level position somewhere within a few months. They may not pay relocation, but anybody that can prove that they can build an application from zero to completion should not have a problem getting a job.

    You can of course freelance at this stage if you want, but I think it's harder to go all in on while depending on a regular paycheck and clients can be much more demanding than you might have time to fit in on nights and weekends.

    Regardless, there will be open doors by this stage, and all it will have cost you is your 'screwing around' time. Best of luck, whichever route you choose.