

When and Why to Learn to Program - kylebragger
http://spencerfry.com/why-and-when-to-learn-to-program

======
tweiss
Another business guy turned programmer here. It's good to see that there are
more of us out there and that I'm not the only crazy one. Some advice I would
give to anybody who wants to learn to code from scratch:

\- Focus. Don't do it on the side, it would take too long. Treat learning to
code as if it was your regular job(I tried to do 40-60hrs per week, I did
about 2000hrs of coding in my first year)

\- Don't hurry. Don't obsess about efficiency and how you use your time. You
will waste tons of time on stupid bugs and knowledge you don't really need,
that's just part of the learning process. Focus on putting in those hours week
after week and you will see results.

\- Work on a project. The only way to truely understand how things work is to
actually use them. Don't hide yourself behind books, try to apply everything
you learn asap.

\- Give yourself permission to suck. This is really hard if you're older (I
was 30 when I started to code). If you already have a career, you're not
accustomed to be utterly clueless anymore. I had already forgotten how slow
and painful it is to learn something from scratch. So give yourself a break
and judge yourself the same way you would judge a stranger. Don't expect to
become stellar in a matter of months just because you're smart. Hint: so is
everybody else who is coding for a living.

------
cpilegard
This was great to read - I'm the same age as you and changed majors away from
CS about 10 years ago because of similar reasons to what you described. Being
young and not knowing much about the world meant that I didn't have any
passion for what I was building, and after getting some real life experiences
under my belt, I've come back to learn programming again because, well, I just
can't help myself.

I've thought about trying to learn programming again for the past few years,
but gave up on the idea by telling myself it was too late and that I could
never really succeed without a structured learning environment. But once I
started looking into it, I'm dumbfounded by the amount of resources out there
that not having access to knowledge is simply not a valid excuse. These
massive open online courses out there are revolutionary and having just
finished one, I felt much more passionate, thirsty, and focused than I ever
was as an undergraduate.

And to echo the point in your article, what has kept me learning is a project
I want to build. Learning backwards by figuring out what I want to do then
researching how to do it works great for me. But, what's been challenging is
staying grounded to the task of building the product rather than letting my
mind wander off into a daydreamy state of wondering how I'm going to
manage/promote/monetize the product once it's finished. Baby steps...

~~~
spencerfry
We have similar life experiences it seems. I'd suggest putting off all
thoughts of managing, promotion and monetization when you're learning to code
by building your first project. If that stuff happens. Great. If it doesn't
happen, then you'll at least come away with an awesome understanding of
programming and then the next time around you can focus on the other stuff.
It's a win-win.

------
fusiongyro
This is very good advice: "My opinion is that if you're fortunate to have
friends that know how to program then you should learn to program in the
language they're best in."

------
apapli
Couldn't agree more - you absolutely need an idea that you are passionate
about enough to turn into a project, loads of drive, and long chunks of time
to yourself.

I taught myself the basics of rails in about 2 months using Lynda.com because
after numerous failed attempts I realised I would struggle to get anything off
the ground - mostly because it is extremely difficult to transfer passion to
another party.

I tried what I believed was a good idea with my one and only developer friend,
but he just didn't have the drive that I did, and months slipped by with
little or no progress (I gave him 50% share of the company, I wasn't paying
him - a mistake with hindsight).

The challenge was I couldn't outsource the build on Elance (etc) because I had
no idea what to ask for - and mocked up screenshots simply don't portray a
vision of where you see your product going, and I didn't have the technical
nous to judge whether I would be getting good value for money.

After "learning" Rails my first creation is still going strong, it's a free
site but one that has taught me so much and I'm super proud of it.

Moving forward my basic skills in Rails can mostly get me to MVP for testing
my second project, and if it's successful I'll source a developer for short
projects via Elance until I can afford a full time dev.

So in a nutshell, you either have to be completely cashed up, or you have to
get your hands dirty to MVP status by cutting code, even if you consider
yourself primarily a biz dev guy like I do. I prefer the latter solution -
it's just too difficult for me to predict everything you need to build until
you start building.

------
richardofyork
I recommend any new programmer interested in developing web applications or an
internet startup should learn JavaScript first. Here is a blog post on How to
Learn JavaScript Properly: [http://javascriptissexy.com/how-to-learn-
javascript-properly...](http://javascriptissexy.com/how-to-learn-javascript-
properly/)

------
ignostic
What about the suggestion to learn Ruby? I've been trying to decide which
language to start on... I thought JavaScript, since I know nothing about Ruby
on Rails.

I definitely also have a project in mind, but I don't know where to start
aside from the HTML and CSS I've learned.

~~~
scoofy
I think that python is the easiest and best for random english speaker to
learn. The syntax is presented in a way that is extremely intuitive i.e.
english everywhere -- not brackets everywhere, and the fact that you are force
to write with proper indentions creates good habits. (full disclosure: i
learned with python and really only know javascript well, and some ruby)

------
danso
I'm of the belief that while not everyone may be able to code in a way that
contributes to their startup's codebase, knowing the _point_ and _power_ of
programming can vastly help the direction you pour your resources in.

For example, understanding how loops and iterative tasks work will help you
understand why changing the text on one specific product page (out of a 1000)
isn't as easy as popping open the text-editor and changing that page's text.
It helps you figure out a sensible data-model on the back-end (so that your
frustrated coder isn't writing a special if-statement that breaks on the next
iteration of the site)

~~~
spencerfry
This is so true. I've only been programming for around a year, but I now have
a much better understanding of what goes on under the hood. In the last few
months, I've gone from doing 100% to 20% of the coding as I'm now working with
a better developer than myself, but the understanding alone has given me a
huge leg up on other CEOs/product people who have no experience programming.

------
maeon3
The rivers of nonsense questions coming into stackoverflow from well meaning
people who are not able to describe the difference between a variable and a
browser and who don't have the capabilities to care unless it solves their
immediate problem at hand leads me to believe that not everyone should
program. in fact, many people who do program should be politely asked not to.

Stackoverflow needs a "entrence barrier" test where if you can't communicate
or have no ability to think rationally about the words being typed there to
solve problems, your question goes to the "dumb" section of the site.

point is, stop encouraging everyone to be programmers. You're slowing progress
by doing so.

we've got 4.4 million questions, 90% of it from novices that should be asked
not to program. you can go take a look at them, they are little better than
"how is babby formed" type questions. These people are trying to program when
they should be told that it's too hard.

~~~
SiVal
You must be kidding. The _worst_ thing about stackoverflow is not the naive
questions but the obnoxious answers. Ask a question on SO, and the first
priority of the Red Guards isn't to find an answer for you but to find a
reason why your question doesn't even deserve an answer.

I've made good money over the decades as a programmer, but the technologies
come and go like presidential administrations. I'm always a newbie at
something. That's part of the fun. I'm always the guy who "doesn't know the
difference between a variable and a browser" in something despite
simultaneously serving on an "experts committee" in something else. I've lost
count of the number of times I've spotted a "related question" on the SO
sidebar while grazing for useful info, thought, Oh, yeah, what IS the answer
to that one?, clicked it, and been informed by SO that they won't allow it to
be answered because the question is "not constructive". Hunh?? The answer
would have been constructive. Stopping people from answering a question that
others are wondering about: THAT's what's not constructive.

Oh, but what if people are allowed to ask dumb questions, where dumb means
questions that you already know the answer to? Well, then, it might be hard
for you to find answers to your "smart" questions, right?

It sounds to me as though the solution is to worry less about dumb questions
and more about the dumb search technology they have for matching incoming
questions to their answers. With better technology than a bunch of tags and a
1980s-quality search engine, they wouldn't have to put so much effort into
blocking questions and could put that effort into providing more answers.

------
zeffr
Good article about finding out how to get motivated to learn something, but
this has very little to do with coding aside from the context of the goal.

Aside from that, stuff like:

"Here's why I finally learned to code: I've been a web entrepreneur since I
was eleven years old — for over sixteen years now..."

Makes me discount just about everything that was written. I just have a bitter
taste left over from this massive ego leak.

~~~
spencerfry
Wasn't meant as an "ego leak" as you say. It was only meant to emphasize that
I've been doing this for a long time and had many stops and starts. I was only
really able to start learning when I figured out the when and why for me.

