
Ask HN: Best way to learn to code? - itake
I am 24 and finished college with a ME degree.  My first job out of school was designing trash cans and I am really just not happy with my options in ME. I want to switch into tech.<p>What do you think is the best way to pick up programming?  I did some coding in college, but I feel like I am not good enough to dive straight into a full time job.  I am trying to decide between:<p>* Code school in my city (Atlanta) so like Iron Yard or Tech Talent South.  But I have very mixed reviews.<p>* Code school in Silicon Valley, like Hack Reactor where I can really be in the roots of it all.<p>* More immersive program like Camp Code Away or Ruby on the Beach.<p>Thanks for your help!
======
partisan
One of the main reasons you go to college is to learn how to learn. Much of
what you actually learned goes out the window. What stays with you, if you've
exercised it, is your ability to approach new topics and problems and find
solutions to them.

So I guess what I am trying to say is that you should pick a language or
technology stack and teach yourself. The resources are everywhere. Start
somewhere, impress yourself with how you pick it up and then repeat the cycle
by learning the next topic.

------
angersock
First, don't think that you're behind because you have a degree in ME and not
CS (I too have a ME degree, and that's never stopped me). So, be excited!

Second, I would suggest maybe not going the code bootcamp route. Sometimes
they're really good immersion training in web development, but sometimes they
can end up basically as developer puppy mills.

Instead, you may want to consider finding ways to use your mechanical
engineering experience to find things code might make better. Cross-
disciplinary work like that is really valuable.

------
rnovak
Some of the best engineers I know don't have their degree in Engineering even,
but in Mathematics or Physics, but they have a passion for learning and
bettering themselves, so don't let the lack of a degree in CS/CE discourage
you.

that being said, I'll diverge here and say you should learn a lower level
language (C, C++, Assembly, ADA).

You'd have a world of opportunity in more regulated industries, such as
Vehicle Manufacturing, Industrial Controllers, Aviation, weapons, etc. You'd
have a leg up on anyone coming directly from CS or computer engineering with a
background in Physics/ME.

And in that case, I'd say get yourself a Raspberry Pi and jump-in to the world
of Embedded controllers & OS. It will be a very steep learning curve, but
you'll develop great chops and a lot of knowledge.

and, on a side-note: People still get paid to develop new trash-cans? I
thought that was like... a solved problem.

------
chriswere
Here are my tips I posted on another forum recently Hopefully they're helpful.

Learn JavaScript. It's a powerful language and will be required for any front
end work, but increasingly is used on the server side as well.

Learn about databases, both SQL and NoSQL. Almost every project comes down to
having a sound understanding of data concepts.

Work on some Open Source projects that interest you. It will be an opportunity
to learn from more experienced developers, produce something of value to our
on your resume, introduce you to source control and help you understand how
developers communicate around software development.

The most important is not technical. If you can't effectively communicate and
prioritize any technical ability loses value rapidly.

~~~
Rainymood
Also learn Python will you're at it to be honest ...

(1) Build stuff (2) Show people (3) Improve it

Rinse and repeat ad nauseam

------
textread
In the recent AMA Sama mentioned this: step1. Initially it is better to start
with self studying step2. Once you are at a certain level, find a good mentor
to learn from

Based on above, I think you should delay joining school etc and complete step1
first

------
saluki
I moved from CE to programming.

Skip the boot camps and keep your ME job while self learning along the
following path.

Picking up the skills you need is a long process, I don't think you can pick
it up in a camp, plus it would be tough to go through a boot camp and land an
entry level job and have all the knowledge you need.

I would recommend learning HTML and CSS first. (Use MAMP or WAMP and sublime
text for your workflow)

The Head First Books on HTML/CSS and PHP MySQL are good starting points.

[http://shop.oreilly.com/category/series/head-
first.do](http://shop.oreilly.com/category/series/head-first.do)

teamtreehouse.com is also a great place for self learning.

Buy some domains and setup a few websites. You can just use hostgator for
hosting, learn about name servers, DNS, FTP, etc.

Then learn PHP and MySQL. (Head First book)

Your engineering degree will be valuable, you could also think about taking
some CS courses or do some self study to pick up some CS knowledge.

Then learn Javascript and jQuery. (Head first books, then team treehouse)

Once you have experience with basic web applications in vanilla PHP and MySQL
give Rails or Laravel a try.

It's tough to jump to a framework without learning to do some basic web
applications in PHP/MySQL so you have a better idea of some of the magic a
framework takes care of for you.

Check out laracasts.com and railscasts.com

Setup a server from scratch on digital ocean, just so you have that
experience.

If you use Laravel there is a great deployment tool, Laravel forge, that
configures the server and deploys your app for Rails you can use Heroku for
easy hosting.

There are Laravel jobs out there, but Rails jobs are more plentiful and
probably have a higher salary ceiling. See what you like and what you enjoy
using.

Once you are using Laravel or Rails get some experience with React, Vuejs or
angular2.

Once you have the basics you could look at a bootcamp that has a high success
rate at landing graduates jobs.

As you're learning setup your own websites, then when you get in to PHP MySQL
setup some of your own web apps.

You'll learn most when you're trying to do something on your own. Creating an
app that tracks something you collect, tracking your budget, a messaging app
for you and your friends, or a private facebook for you and your family.

when you're learning look for stackoverflow in your search results if you
haven't discovered it already.

Setup a github account, you don't need to use it initially, but you'll want to
build your account to include your best work along with a portfolio.

bitbucket is nice for free private repos.

Use [http://getbootstrap.com/](http://getbootstrap.com/) for your own
projects.

Once you learn the basics you could build websites for local businesses on
nights and weekends, and build up clients/more and more complex
projects/clients. Avoid the online freelancing sites where you're competing
against the lowest price.

You should also check out
[http://startupsfortherestofus.com](http://startupsfortherestofus.com) and see
if building your own company would be for you.

Also I wouldn't go to the valley unless you get a job there and they assist
you with relocation expenses.

Good luck with your transition, remember it's a process so set goals
incrementally and keep at it.

