If you know (not just read, know):
http://bonsaiden.github.com/JavaScript-Garden/
http://eloquentjavascript.net/
And you can demonstrate it by sticking something on github (fix a ticket on stylus/express/some other node.js project, write a jquery plugin, help out with the django admin) then go to some meetups in SF and talk to people who say "we're hiring frontend developers" which is pretty much everybody. Being able to design entire applications isn't generally required since what people are usually looking for is someone they can say "go make this new dialog" and you go do it using their established design patterns. It is crucially important, however, that you can demonstrate knowledge since I have yet to meet a developer who doesn't "know" javascript.
If you do this and want to work in NYC, shoot me an email. I'll at least give you feedback and probably give you a referral for contract to hire. Nobody cares about your education/work background as long as you can get the job done.
This assumes, of course, that you actually like front end development since quite a few people don't.
Now, the context in which you learn javascript and demonstrate it is up to you. If mapping/gis is your passion, then go with that. There are plenty of good mapping projects in the browser on github that could use help. If you would prefer a personal project you could, say, do some d3 visualizations using the geo facilities and have a great demo piece.
Learn how to interview well. Knowing what github is, having actually launched a site, and wrangling some freelance work together puts you ahead of 90% of the people I worked with at my Big Co. job, you just need to be able to prove it and convince people of it. The competition for most positions consists of bored CS grads from Java schools who never learned how to use version control and for whom programming is just a job. You have passion it appears, and that can't be overrated.
I was willing to be aggressive with my first interview, noting that I would be able to accept a lower-than-market rate if they would do a salary review shortly after I started. Not everyone is in the position to do so, but I took a 'whatever it takes' attitude to get started, with the confidence in myself that once people saw how effective I could be, things would get better. Programming is as close to a meritocratic profession as exists, so get in a position to prove yourself.
But I agree with this thread -- keep pushing on JavaScript. CouchApps are a great way to learn front end while having the back end more or less taken care of for you, but most apps are gonna require an extra degree of freedom on the back end. You'll find that your JS skills travel well, especially now that node.js is viable.
If you haven't read this article yet, read it an grok it: http://javascript.crockford.com/remedial.html
If you know this stuff cold, then the only thing standing between you and a well paying developer gig is personal networking and a bigger open-source portfolio. Go to node.js and Couch meetups, they are vibrant welcoming communities that value beginning coders as much as veterans.
Having a github is a great start, that's one thing I want to see before I bring you in for an interview. andrew_k has good advice as well.
I went into programming, as it was a good fit for me. Since I too had no formal experience, I got involved with open source as a way to gain experience and learn from people who were more experienced and knowledgable. Getting involved in open source, was probably the single best move for my career that I ever made. It opened opportunities I would have probably never had, allowed me to talk to really brilliant people, and gave me visible experience that has helped me land all of my employment. I highly recommend contributing to an open source project as a way to get experience and exposure.
I started with the front end because I had a decent design sense and attention to detail. If you can care about pixel perfection, I think it's a good route. JavaScript, HTML, and CSS aren't the most difficult technologies to start with, and you get a little more leeway to make mistakes or write sloppy code in the beginning, learning as you go.
It's a good time to be doing this. There is need for developers enough that if you can prove that you're smart, a mid-sized or smaller startup may take a risk with you.
Try putting up a personal website. Set up your own server if you can, write your own code, and get something up showing what you can do.
At this point, do whatever you can to show that you've taught yourself a decent amount. You want to prove that you can learn, not so much that you're already a pro.
What I did was start low as a jr. system admin for linux systems. I'm not very social so I never made 'connections' so I hade to improve my skills. So from jr I went to sr, and within a couple of years got my first job as a jr. dev for a small company.
It's at these kinds of jobs that you will learn the essentials:
MVC Databases HTML/CSS/Javascript Message Queues
From here, it's up to you to keep improving your skills and building projects. Managers don't like github profiles, so I highly recommend you have your own app (not just a website.)
From there you can move on to things like: Mobile Apps Function Languages Socket Servers Low Latency Systems
Of course, always make sure you study and learn the basics. Such as basic sorting algorithms, working with bits/bytes, etc.
And so on.
The best way to demonstrate your python and django expertise is to create a web app using that stack. Find some cheap hosting and you're set. Who knows, your app might even be a hit and you can skip the job seeking routine altogether.
You say you have been getting freelance work. Put all that on your CV if you haven't already. And work on building a proper online portfolio using your current skillset. The benefits of doing this are thus:
1. Professionalism. You're a bona-fide freelancer ostensibly running a business under your own name. Taking advantage of this shows you mean business.
2. Publicity. Potential employers can find your website (after pimping it out everywhere and making it known wherever you can) and have all the information they need to consider you as a candidate right there. It also helps for contracts until you find full-time employment.
Speaking of your site/portfolio, it's dreadful. Setting a proper site up for yourself and identifying what makes a good portfolio would be a good thing to do.
Finally, and being totally honest, the last thing I would do when looking to hire a developer is trawl through a potential candidate's github account, finding out what sort of contributions were made to the JS flavours of the month. I'm not interested in seeing code samples right off the bat, I'm more interested in seeing how you sell yourself - how your website and portfolio and demonstrable skills* paint a picture of the sort of person you are - and how enthusiastic you are about getting a job.
I'm interested in you, the person, and the specifics of your work (eg. the code samples) and other contributions would come up later in interview.
I don't mean to be overly harsh but your online presence and how you present yourself/your work are, in my opinion, key to better finding the work you want.
*demonstrable skills not as in bug fixes on github but as in the work put into your website.
Once you've built some useful projects (I built Backbone Todos amongst other things), people are going to find you through them and contact you with opportunities all the time.
You've already started putting your work out there on Github, now you just need to market yourself a little better. a Github account isn't enough. Blog about your experience, build a Twitter following and other promotion techniques.
Maybe extract some smaller bits out of your bigger projects. Those are usually more useful and get more popular quickly. Abstract some of that application-specific code and release it. It's both an exercise in programming and marketing.
I'm a big believer in public portfolios. When I've been on the hiring side of things that's the first place I look. Now it's just a question of improving the both the quality and quantity of projects you're showing off.
How about getting a mentor to review your project(s)? You're not in an organization yet, but you can pretend you are--request a code review from a programmer you look up to.
Teaching others has helped me learn myself in the past. You didn't mention activity on stack overflow--answering questions there can improve your skills and visibility since SO is integrated with SO Careers as well.
Great luck to you!
That probably means an online portfolio with tools, summaries and screenshots. It's not hard to put one together, but here's a really simple "step-by-step" one that you can push to Heroku within about 15 minutes: https://github.com/noahgibbs/bobfolio
ETA: My own portfolio is here, for comparison: http://angelbob.com/portfolio
You might work as a programmer and do only that but software development is much more than just programming. There are framework, libraries, and architectures. Not just fancy words but ways to do more in less time. And of course: testing, debugging, and rewriting. The last three make good programmer great.
I come for humanities and I can say that programming is not much different than writing a book: read a lot and write a lot ... I think Stephen King said that.
It's a Django gifting platform that will be pretty well-trafficked once we launch it in a couple weeks, that we hope to turn into a full-blown alternative economy platform one day soon. We could use dev help and have lots of people down here who could offer pointers for dev job opportunities to good coders. We're on irc.freenode.net #nycga-iwg. Best of luck!
If anyone is looking for a jr. front-end Dev., Wordpress Dev. or beginning Rails Dev. drop me a line. I'd appreciate it :) Languages: JS, Python, Ruby, PHP
I'm self-taught and found learning HTML, CSS, JS and a bit of PHP and MySQL was more than enough to get a job in the UK.
Build some sites, get some experience.
There was some level of pre-created trust purely because I had a business operating in the field.
It's not hard to put a nice looking website together, choose a business name and start operating on the side.
It might make it easier for you too.
Goodluck!
Make something good, keep learning. Then show you are doing both of these.
Hired.
The main problem I'm having is not even being able to land an interview. Where should I look for a dev job in Australia?
I would recommend you either make a Bible app, or a Menstruation Calendar app. Those would both not require any server-side programming, and they are proven ways to make money.
I believe that anyone who works on an iPhone app in their spare time for a year, and who picks a known winner category (GPS tracking, bible app, free book downloader, offline city maps, etc.) can make a living.
Remember - most people who try at everything fail. Right now, the mobile market is red-hot, and it's a good way to make a living. It's got to be the easiest way to sell software and make money, with a much higher success rate than making a website or a Facebook app.
Moreover, you can command ridiculous rates as a contractor right now for iOS expertise - much better than for JavaScript programming on average.
Feel free to send me a message with this info and I'm happy to give you feedback. Good luck to you!
Admittedly, this is not an exciting path, nor a fast one. But it is an effective one.
If all you care about is startup work, yes this is bad advice. If you want a solid career in technology, this is a viable path. You don't have to agree, and I don't expect anyone to like it, but denying its viability is just short-sighted.
Step one is getting grounded, for me, that was understanding the basics of web development, how web pages work, and how to get them onto the web. Full stack development even with static sites can be very valuable: know how to bootstrap a brand new project, add it to version control, set up a production stack(e.g. Apache/passenger), have a basic workflow set up for yourself, do diverse things and solve stupid problems you're having for yourself. Got freelance clients? Give an invoicing app or client portal a go, it won't hurt for people to see you fix problems and don't dally with newnew technologies for now.
Try to stand out, for me, a lot of developers I meet don't grok photoshop and basic UI/UX, so I made it a months long focus to be able to design static mocks and live sites from scratch, and trying to make them as elegant and experience friendly as possible. Knowing HTML and CSS extremely well also has helped, for every programmer I meet who is a DOM wizard with JS, they don't understand modern HTML standards or how to write elegant CSS. I also understand photoshop as well as most graduates from Ringling(I know, I'm marrying one) and took serious time to grow my tool set(like using bash and vim effectively). Make yourself stand out, grok shit engineers aren't interested in or don't have the desire to fully learn(JavaScript is a fair example) you'll be thankful for it come interview time.
Finally, be modest. Once you have a professional looking online presence, you've done all you really can to make a good first impression. The rest is all desire to make shit work, to do something you've never, ever done before. Don't act like you can be put in over your head, know that the nights and weekends for many young people in technology are when you catch up to senoir peers.
I tend to agree somewhat with the 'get Into the community' observations people have made, but am employer has never asked me 'which meetups do you enjoy?' or 'what kind of open source things have you contributed?' - they honestly largely do not care in my experience, it can help you get a strong recommendation from someone inside the company, but this is unusual so don't lean on it, look at it as a badge or ribbon to accent your developer coat.
Which leads me to my last point, my best opportunities so far have come from very strong software engineers who appreciate my attitude, attention, and willingness to ask Smart questions while trying to explain what I do understand. They go to bat for me when they have an opening in the company, and that's huge for me. Something insane like 80% of professionals received a recommendation from family or a friend to land their position; in fact just a few weeks ago there was a forrst post from a UK kid who needed a rails job, he had a so-so online presence, but a bunch of people went to bat for him, saying that he showed real competience and that someone should really give him a chance; within the same day as the original post, he was employed( p.s. he had a compsci degree).
The market is starving for competent developers, I must get 5-10 hits every month from recruiters for all kinds of positions in San Fran and NY, so there's hundreds of people looking for new talent. Ask yourself why they haven't called you for an interview yet, and take example from the people you admire who are getting those calls.
Addendum: Just for the sake of clarity; these tips aren't necessarily the way to get into an entrepreneurial company, or one that's particularly very small. A lot of those opportunities, in my experience, come from open source visibility. Engine yard really nailed it here(http://www.engineyard.com/blog/2011/the-number-one-trait-of-...) -- but some companies _want_ a Jack; decide which one fits you better, though, because it's difficult(impossible?) to be both.
The comments below are pretty accurate, this is kind've a terrible (mostly design) site. If you're not a retarded strong developer(read: compiler tweaking or core lib contributions, etc.), this kind of lapse in design and usability really stands out. Do you know enough about CSS to remove the underlined text decoration property from an anchor wrapped in H1? Why didn't you? Lets take a look at a pretty strong vanity domain for a developer (who needs to update their shit, but that I follow on Tumblr) not seeking employment: http://matthewmachuga.com/
Did you notice some instant difference? Did you notice his site design is a template from Tumblr? Was it easy to read and scan for information? Check out http://www.tumblr.com/spotlight/developers for some more examples of easy, but strong, blog examples. Detest the idea of using a service for this kind of thing? How about http://zachholman.com/about -- pretty strong site, compared to yours, don't you think? This kind of stuff is /just/ intended to get you in the door, to show that you're serious and that you're not coding only for a job, you're coding because you have a passion for the web/mobile/whatever-device-your-potential-employer-is-producing. Don't over think it, but don't produce design like http://ropeadopeandwink.com/steven-ciraolo/ or http://courseslate.com/ -- it's hideous, hard to scan, and people will have an extraordinarily hard time getting over those facts to try and give you a chance(especially if they need their developers to wear UX/UI or design hats from time to time). If you need to use things like Twitter-Bootstrap, do it, but don't be a capable coder who does not understand shit about design or user experience; like I said above -- stand out.
You say you learned Python and Django and I think that's a great place to start. Add on to that with a solid font end knowledge and you're good to go until you get hired.
If you're in the Chicago area you should get in touch with me as I'm looking for help as we speak.
It's what I did and I never looked back.
Oh, and don't worry. If you go this route you will find a niche which will challenge you, stretch your skills, and so forth. I never knew when I started that I'd become the primary developer for an open source accounting package (LedgerSMB).
Happy hunting, and may fortune smile upon you!