
Ask HN: It's 2015 and I still can't program - shire
What I&#x27;m doing wrong? Where can I learn to program besides codeacademy that site bores me I want something more interactive and engaging. I want to become a Web developer or Software developer I have free time to study and learn.
======
hitsurume
OP, I know you've been asking these types of questions for a long time, but
there is no magic way to learning development and getting a job right after.
From your past posts it sounds like you've went through the school route and
can't even complete your courses. There is no quick and easy way to become a
developer, it takes hundreds of hours working at it and even then not everyone
gets it.

Thankfully the internet is full of resources on how to get started without
asking Hacker News every few months. Many people are self taught and have done
it without asking for help, usually they just learn to figure out the answers
for themselves.

Lastly, if you really are serious, you might just want to look into coding
bootcamps that have sprung up all over the place. And please don't give me
that crap about not having money, many bootcamps provide financial assistance
and if anything, you can take out a loan, which if this is what you really
want to do, will be well worth it when you succeed.

~~~
veddox
Good comment, @hitsurume!

OP, I've been browsing your previous HN submissions and I think your biggest
problem is a lack of self-discipline to actually get some work done. You've
already received tons of really good career advice here, but it won't help you
if you don't do anything with it.

What you need to learn is not so much programming, but self-discipline,
determination, and the grit to see things through to the end once you've
started on them. Unfortunately, we can't really help you with that. The ball
is in your court now - go and do something with it!

Good luck.

------
T-A
I can tell you what works for me (and others, I hear): pick a project. Decide
what are you going to create; a site or program which does X. Write it down,
in detail.

Then do it.

Of course, you don't know how to do it. That's the point. Your project goal
will guide you to learn the things you need to know in order to accomplish it.

When you succeed, pat yourself on the back, then pick a new, harder goal and
repeat.

~~~
dorfuss
The problem with your advice is that when you don't know how to code, you
don't understand how big the task is. You have a great idea, you try, it's too
complicated, after 1 year (and even that requires a lot of determination) you
have not completed anything, and you actually have not mastered the
language/technology.

It's as if you tried to acquire fluency in ancient Greek by jumping right into
reading Aristotle.

The point of entry is always very difficult, for any skill, and learning curve
is most often steep and frustrating.

My advice - find someone who lives near by, someone whom you could call at any
moment, and discuss your little project with him/her. Choose
language/technology, and start working through some tutorials with your
project in mind. Your friend should help you downsize your ambitions and limit
the scope of the project to something you can actually execute.

You should be done with the basics in about 3 months (that means - no GUI).
After that - try to limit the scope of your project so that you think you can
make it in the next 3 months. (We know it will take you at least 6-9 months,
but still, try to be on the schedule). Only then you will understand what it
actually means to be a software developer.

(please note: software engineering is much more than you think when you're
just starting to learn computer programming. Coding is not just giving
instructions to computer to perform simple calculations. There are design
patterns, team work, efficiency, doing things on time, math, frameworks,
keeping up with super-crazy pace is which everything changes, there is network
issues, and mobile devices, security, scalability, and much more. In short -
it's a really complex trade and only few people will be able to do it).

------
atmosx
At some point in time, there was this guy called 'Euclid'. He was a
mathematician, of sorts. So he wrote a book called "Elements". Pretty famous
book. There were tons of Geometry. The kind of Geometry you could build
temples for kings, find the shortest road or just show-off your math skills by
proving that prime numbers are infinite(!).

Since the book was so famous and deemed _important_ , the Farao tried to read
the book. But it was a difficult book. He had to go back and forth more than
twice. He was struggling to understand the first chapters. Eveything was so
complicaed and soon he got bored to death. So being a Farao (a God among
humans) summoned Euclid and asked if there was a shorter path to learning
geometry than reading the book. Euclid turned to the royalty and replied:
"There is no royal road to geometry."

So, that's the problem: There's no royal road to programming. You have to put
the in the hours and patience. If you're really going to do this, stop
pressing your self to learn _fast_. Just choose a language, buy an
introductory book and jump in.

~~~
monknomo
Excellent anecdote and encouragement - I think it's spelled "pharaoh" though.

------
saluki
Start with HTML and CSS.

Run MAMP or WAMP locally with Sublime Text . . . learn basic html/css

This book is great for getting your feet wet.
[http://headfirstlabs.com/books/hfhtml/](http://headfirstlabs.com/books/hfhtml/)

Once you make it through that one move on to PHP/MySQL
[http://www.headfirstlabs.com/books/hfphp/](http://www.headfirstlabs.com/books/hfphp/)

Once you have those two completed you'll be ready to create a simple app,
maybe a to do list or tracking something you collect.

After a few simple applications, even doing the login/authentication you'll be
ready to move to a framework.

I'd recommend Laravel or Rails (laracasts.com/railscasts.com) are great
resources. But don't skip laying the framework with the books above.

TeamTreehouse.com is a great resource too, but I think the books are better to
get you started.

Good luck.

------
veddox
Find a book. Seriously. I find books a lot better than the Internet when
reading a new language. For one thing, reading on paper is a lot more relaxing
than on-screen, secondly, studies indicate that we actually do remember more
that way. Find a good book (the Head First series is a great place to start)
and get reading. Do the examples and exercises. If you find something that
sparks your imagination, give it a shot as a first project. Stay simple, the
3D multiplayer shooter game can wait. If you don't understand a section, read
it again. And again. Skim through the whole book, then read in more detail.

Yes, it will take time. You are learning a new language and a whole new way of
thinking. Don't think it will be easy. Don't expect to be able to get a job
programming after a month's practice. (Peter Norvig wrote a great article on
that: [http://norvig.com/21-days.html.](http://norvig.com/21-days.html.)) But
keep at it. Practise, read, practise, read more. Start reading open source
code. Increase the complexity of your projects - make sure every project
contains something new, but avoid projects that are way too advanced.
Eventually you'll get capable enough that somebody might even consider hiring
you.

Be committed to making it work, but most importantly: don't forget to have fun
along the way :-)

------
brudgers
Edx and Coursera have a variety of software development courses. Classes that
run on a schedule offer the benefits of a cohort of peers versus being on your
own with a resource like CodeAcademy. Edx's _Engineering Software as a
Service_ is beginning now. Edx's _Systematic Programming Design_ series uses
Racket and is a sound introductory course.

Another approach is via printed books. I am a big fan of O'Rielly's _Head
First_ series. In particular, _Head First Java_ not because Java is the wind
beneath my wings but because Kathy Sierra is an excellent author and the
series is based to some extent on her work.

Good luck.

------
Mz
Your mind may work differently from the sort of mindset that codeacademy works
for. You may have a learning disability or just a different learning style.

It might be worthwhile to get checked out for a possible learning disability.
If you have one, once it is identified, you can look for resources on how best
to accommodate it. Specific disabilities respond well to specific approaches.

You can also look into learning styles. Your mind can just work differently
from the norm without it being a disability per se, but it will impact how you
best take in information.

You might try going to Hacker Events or networking or looking for a tutor.
Sometimes, someone can explain something in person more effectively than any
book. Or you might try going to the library and trying different books to see
if different approaches work better for you, etc.

Try things you haven't tried yet, things that are different in some way from
what you have been trying.

------
apryldelancey
I agree that coding bootcamps are a great source. Most of them are incredibly
supportive and have instructors, mentors and TAs that are generous with their
time. I've seen a few also have free meetup groups that are open to all, not
just students, to learn a quick project in a couple of hours.

Also, to echo @hitsurume the coding bootcamps do have easy ways to pay, most
have flexible payment plans. @saluki has a great point as well to start with
HTML and CSS. I agree.

Other than that, what works for me is practice, practice, practice. I practice
in the programming language and actually writing out code with pencil and
paper.

------
France98
I've found the tutorials on Lynda.com to be very engaging. The videos are very
thorough, and it's definitely worthwhile coding/making notes as you watch the
video. I started with James Williamson's Essential HTML Training, then moved
on to Simon Allardice's Essential Javascript. Once you have the basics, try
and come up with a little side project of your own and just go for it. If you
get stuck, there's lots of help available on places like StackOverflow.

------
mliq
I have found teamtreehouse.com and codeschool.com both more engaging than
codeacademy, but it can be tough to stay focused unless you really want to
build a particular thing, or, you have a group / class that you are working
with to keep you focused and motivated.

------
NumberCruncher
You ask the same question here since years. Maybe web development is not the
right thing for you...

------
mrits
I certainly wouldn't try to build a website like some of these suggestions.

Build a text adventure game. It shouldn't take more than a few days and you
can actually say you finished the project.

------
kelukelugames
[http://www.freecodecamp.com/](http://www.freecodecamp.com/)

Also try to find a local support group and/or a mentor.

------
shire
I just wish I had something that goes through me every step of the way to
landing a job as a Web developer

~~~
meric
Here it is:

1\. Build a website using Node.JS. It has login, connects to a postgres
database, user can register, receive confirmation emails, login, do something
that's persisted (e.g. creating a shopping list and come back and see it's
still there.). Hire a graphics designer to give you a minimal design that
looks decent, and make your website conform perfectly to his design. Put the
site online with a domain name, using AWS EC2. Make it a site someone can
legitimately use. Spend $50 on Adwords so some one signs up and uses it to get
your first few users, make sure you have analytics installed, later you can
tell your clients people really used your site and you can prove it to them.
Use Google to find all the information you need, every step of the way.

2\. Once you've done the above, maybe months later, ask yourself, now that you
know what you know, would you build it much differently? If yes, then rebuild
it to incorporate what you know. Repeat until the answer is "I would do it a
little differently but not much more than that."

3\. Months later again, scour upwork.com or freelancer.com or your
university's job board. Find jobs with the technologies you learnt with
Node.JS & your choice of database. Take whatever job you can get at whatever
price offered (even if it's $5 or $10). Do everything you can to make your
clients happy. Grab testimonials. Once you finished up job - ask yourself, did
you learn a lot with the project? If yes, raise your asking rate by 25 to 50%
and find your next one.

4\. When your rate gets up to $100, it's time for you to take your
testimonials, and portfolio, and look for a full time job. Optionally you can
also take any intern full time positions on the way to $100.

5\. Two or three years later from (1.) if your salary has 6 digits then
congratulations you've followed the plan to the tee.

The whole process can take two years or more. I followed these steps, except I
used Django instead of Node.JS. Django was new and all the rage in 2010. In
2015 it's Node.JS so I changed the formula to that.

Good luck.

------
dwhitworth1
I started learning to code in mid-2013 (I knew some HTML, but no real
programming language at the time). I have been a professional web developer
since mid-2014. While learning, I was working full time and have a wife and
young daughter. It takes a lot of perseverance more than anything. If you have
gotten bored with CodeAcademy, you should try other resources and find a track
that suits your learning style. This is kind of cut-and-pasted from a previous
comment I made to another poster, but this is the track I took:

1\. Code Academy - Finish completely the HTML, CSS, JavaScript, jQuery and
Ruby tracks. I like Ruby because there is an incredible support structure
(both online and in person) for those new to programming. 2\. Read (and do the
exercises in) Chris Pine's "Learn to Program" 3\. Read (and do the exercises
in) Command Line Crash Course (easily found via Google Search) 4\. Read (and
do the exercises in) Learn Ruby The Hard Way 5\. Go through most, but not
necessarily all of the courses on RubyMonk.org 6\. Do all of the exercises
from Test First Ruby (testfirst.org/learn_ruby) 7\. Do a lot (but not
necessarily all) of the HTML, CSS, JavaScript, jQuery (and jQuery AJAX), SQL,
and Ruby courses on Team Treehouse. If you're interested in design, go through
those courses as well. 8\. Do a lot (but not necessarily all) of the
JavaScript, jQuery and Ruby courses on CodeSchool.com 9\. Learn about version
control through Git and Github (there are many online tutorials, as well as on
CodeSchool and Team Treehouse) 10\. Read (and do the exercises in) The Rails
Tutorial (www.railstutorial.org). Do every single thing in this book step by
step. Then do the entire book again. Then do it again. 11\. Build stuff using
the knowledge you have gained. Use Google and Stack Overflow to help you when
you get stuck. 12\. Attend as many local meetups as you can find that are in
the topics you are studying.... you'll find lots of nice people willing to
help. There are even learning meetups for specific languages and frameworks.
13\. Attend a 10-12 week bootcamp. Research the hell out of them before you
decide to go to one. Chances are if the interview to get into them is easy,
the bootcamp will probably not provide you with enough ammunition to get a
real job afterwards. Most of them that are worth anything will have probably
wanted you to have a lot of the knowledge that I've described above before
attending.

That was enough (barely) for me to get a job as an entry-level developer. I'm
kind of doing it backwards, but I've also gone back to Uni part-time to get my
degree in CS. I've now finished courses in C, Java and some semi-advanced
mathematics.

After almost a year and a half as a developer, I know 10x as much as I did
last year, and I still don't know squat :) I think that's a big part of the
reason I love it.

