I've done this myself - I've been programming as a hobby since around 5th grade, but never did anything serious with it. I'm now 27, and am in my 3rd year at my first "professional" development job. My career before that was as a Paramedic ($14/hr).<p>Some quick advice, in no particular order:<p>1. Get on GitHub. Look at the source code for libraries/programs that you like and use. This'll show you how other people do things. Look at the "issues" tab and help fix some projects or add new features. Also, most places use Git for version control. It can be a beast to wrap your head around at first, but it's not that difficult once you start using it.<p>2. Look on employment sites and see what kind of requirements they have. Do you want to be a JavaScript developer? You'll probably want to know Angular, Knockout, etc. Want to work as a Python developer? You'll probably need to be familiar with Django framework. Then, there's all the other stuff for build automation and testing - grunt, composer, bower, phing, nose, etc.<p>3. Stay away from frameworks and IDE's while learning. Use a text editor, not Dreamweaver, NetBeans or Eclipse. Notepad++, Sublime text, emacs and vim are all common favorites. Learn the frameworks, but don't rely on them. It's easy to gloss over the details and just use the framework "as-is", but you really need to understand what's going on under the hood.<p>4. Learn Linux, if you don't know it already. Most developers I know are responsible for server administration stuff, too (to some degree anyway). Know how to tail an error log, configure the webserver of your choice, create a MySQL user, SSH to a machine, WGET a file, etc. DigitalOcean, Koding, and many others offer you a very affordable linux box to play with ($5-$10/month or less). (With virtual machines, you can screw up all you want, then just revert to a snapshot)<p>5. Learn how the internet works. This should go without saying, but it'll keep you from banging your head off the wall when your AJAX application isn't working because you didn't know CORS was a thing.<p>6. Look into "fizzbuzz" tests. They're short, simple programs that an employer may ask you to solve. These are good at weeding out people who know how to rearrange framework functions, but don't know how to program. <a href="http://blog.codinghorror.com/why-cant-programmers-program/" rel="nofollow">http://blog.codinghorror.com/why-cant-programmers-program/</a><p>You don't have to be a pro to get paid. Apply to jobs at small to medium-sized companies that don't have an HR department to throw away your degreeless resume. Check craigslist, freelance sites, etc. Build a portfolio.<p>As far as working from home, I'm still waiting on that opportunity myself. There are plenty of jobs out there that allow it (google is your friend), so just apply and see what happens.<p>Good luck!<p>See also: <a href="http://programming-motherfucker.com/become.html" rel="nofollow">http://programming-motherfucker.com/become.html</a>