

Ask HN: Possible to become employable in five months? - blairbits

Hey guys,<p>Just a quick question. I would say I have a fairly deep technical background for a non-programmer: I'm twenty years old. I worked for three months at a startup doing basically odd jobs; no programming, though. I took care of some networking tasks, technical support for the parent company, I completely rewired an office and warehouse, patched holes in the wall, cleaned toilets... Etc.<p>I don't have any post secondary education. I've been learning the basics of programming over the last week or so with Python, and have picked up the basics quickly.<p>Do you think it's realistic for me to become employable as a junior developer within five months? I'm more then willing to put in forty hours per week of solid study and coding.<p>Thanks for your input guys; sorry this question is kind of vague, I know there's lots of variables.
======
drostie
If you wanted to get to that rather ambitious destination from your starting
point, I would suggest that you would have to build a (very basic) product
idea from scratch in JS + PHP + MySQL on month 2, or at the latest, month 3 --
just so that you know what the Web 1.0 technologies were. It would be one heck
of a rush, but thankfully, you wouldn't necessarily have to market it.
(Although you should spend a couple days learning XSS and XSRF and guarding
your site against them, salting and hashing passwords against database
compromise, and so on.) If you know that many-to-many relationships require a
new table then you've at least got the basics down. If you can JSLint your
code and understand which of the good parts of JS are good and why, then
you've got those basics down, too.

As for the first month, it's worthwhile to learn two programming languages at
once, so that you don't get "locked into" one particular way of thinking these
things. Python's generators represent probably the prettiest iterative
programming I have seen, so you might want to go with a functional language to
balance it, so that you're forced to think recursively. If you're really
ambitious you'll do Haskell, but that's a bit crazy, and more conservative
would be to take the Abelson-Sussman lectures, crap though their audio might
be, so that you learn a Lisp:

    
    
        http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/
    

Okay, so assuming that you've spent your first month learning two languages to
tackle problems, then your second month learning the core web languages and
getting some project done, what would you have to do your third month? There
are a couple of options for an aspiring junior developer. One would be to
write a totally new application in some other language, so that you can see
what the other ones are thinking. You could go with the language that you
started with, and code in Python's Django, or the confusing language that you
only half-know, called JavaScript, by developing chat rooms in Node.js -- but
those are probably boring, and you might want to spend a whole month learning
Ruby and developing with Ruby on Rails. (It could make you much more
attractive to a random employer.)

If you have done all of those and have not passed out from exhaustion, then
you might start to refactor a project. Figure out the ugly stuff you did in
month 2, and how to make it not so ugly. Ask people on IRC to look through
your code. There is a central principle of writing good essays and novels:
"There is no good writing, only good rewriting." If you come back with fresh
eyes you can actually learn a lot. What library functions did you accidentally
forget to use when you were writing PHP? (PHP has huge libraries and if you
try to code something on them you're liable to end up on TheDailyWTF.)

And your fifth month, after all that work, should be devoted to some wild
project which strikes your passion after the past four months. I imagine that
you'll be lost and confused by month 3 and that month 4 will be a breather,
then month 5 is to really take a new idea that's way out there, and make it
shine a little.

At least then, you might have three projects you can point to with an employer
and say, "look, here's a portfolio, it's not as visually polished as you might
like but I was focused on functionality and it all works.

If you could really stay committed, then I think you could have a quite
spectacular resume for applying as a junior developer in 5 months of full-time
work.

------
gtani
Don't think of yourself as junior, think of yourself concretely as a test/QA
engineer in training or maintenance programmer (yeah it's not glamorous, but
people are grateful to have them around), and as a specialist in something,
Jquery/node, Firebug, selenium, Solr/lucene, hadoop, Postgres.

Get a book on ruby and learn to read/edit other people's ruby, python and
javascript. And then you can clone django and rails repo's off github and
modify them to do other stuff.. in les than 5 months.

(the only reason i recommend ruby over python is that Jruby is actively
developed, where Jython just doesn't get mentioned much, and it's good to get
familiar with JVM: everybody uses hadoop and SOLR, and they're tuning heap,
GC, maxInlineSize, all that. It's worthwhile to learn PHP eventually, but
that's a lot of backend languages (and I'm probably forgetting what it's like
to learn your first language

------
michaelochurch
You're employable now. If school's not your cup of tea, just find like-minded
hackers and work on something together. Keep writing and reading code and
you'll get better with time until companies with formal processes are pretty
easy to get into.

If you want $80k+ at the entry level, though, you pretty much need to be
coming out of a solid college.

