Hacker News new | comments | ask | show | jobs | submit login
Ask HN: Best way to learn to code?
6 points by itake on Oct 12, 2015 | hide | past | web | favorite | 7 comments
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.

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:

* Code school in my city (Atlanta) so like Iron Yard or Tech Talent South. But I have very mixed reviews.

* Code school in Silicon Valley, like Hack Reactor where I can really be in the roots of it all.

* More immersive program like Camp Code Away or Ruby on the Beach.

Thanks for your help!

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.

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.

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.

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.

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

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

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.


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

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact