

Where do I start? - ukoki

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?
======
manuscreationis
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

------
ianpurton
"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.

~~~
manuscreationis
This is good advice, but I think no matter what, you will always have that
risk of wasting your time building something people won't want.

But you should definitely use an approach that sorts the wheat from the chaff
when it comes time to pick an idea to work on.

------
boolean
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/>)

------
bmelton
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.

