

2012, My Year of Code - Alex3917
http://alexkrupp.typepad.com/sensemaking/2013/11/2012-my-year-of-code.html

======
mech4bg
I didn't quite understand this bit:

"Going into this I already knew HTML and CSS. I had also already taken AP CS
in high school, and CS101 in college. I did well in both. But despite this I
basically wasn't able to code my way out of a paper bag.

Why?

Firstly, C++ and Java aren't commonly used in (successful) web startups."

Are you saying you knew C++ and Java prior to this? I would have thought this
would be a great jumping off point into other languages - I found the switch
from C++ to Python to be surprisingly easy.

Also while start-ups may tend to stick to Ruby or Python, many web companies
use Java or Scala (Twitter is probably the highest profile company I can think
of). They tend to be higher scale though and it is probably harder to get
started with them than with Python or Ruby.

------
steevoyang
Thanks Alex, this is great. I think a lot of people have the inspiration and
understand the "why" behind learning to code, but the issue most of the time
is where to start and having a roadmap for getting there. This is a great
resource for that. How many hours per week were you spending on this material,
how did you keep yourself motivated, and did you have any people you could go
to for resources when you got stuck?

~~~
jaynos
I'm also interested in how many hours. Additionally, were you employed full
time or taking some sort of hiatus while learning?

~~~
Alex3917
I was working on a startup. But then one day I saw a post on HN about Udacity,
and that it was starting in a couple days, so I signed up. I never thought I'd
get anywhere near as far as I did, and certainly I didn't even intend to, but
I just kind of got into a groove and kept going. Eventually I had to do the
startup as a side project and get a job, so I was applying for mostly
marketing jobs. But then I also applied for a couple coding jobs on a whim,
and discovered it was actually much easier for me to get interviews for coding
jobs even though I'm much more talented as a marketer. Go figure. So that's
partly why I decided to go that direction as well.

------
sblawrie
This is a really good outline of the steps it takes to bootstrap a software
development career. Succinct and useful.

"My initial plan wasn't to work as a developer indefinitely, but rather to
stay on the tech side for at least two years and treat it as my own personal
TFA-style program."

I had a similar plan when I first started but quickly realized that coding was
exactly what I wanted to do - that I never wanted to go back to the marketing
side.

I wrote an article like this one about my own story:
[https://medium.com/a-programmers-
tale/a3f7aa8d9bdf](https://medium.com/a-programmers-tale/a3f7aa8d9bdf)

~~~
mailshanx
I read the article, and am suitably impressed!:)

------
whiddershins
That was a great read, the clear thinking about needing to know "why" before
"how" is very insightful.

I would be curious to hear any views on taking a purely javascript approach to
this same process.

I ask because I love python but often think it may be silly to take the time
to get really good at it.

Ever since node.js became a real option it has been possible to do full stack
development using javascript. Why not take that approach, thereby only
learning one language, reducing the number of new things you have to
assimilate all at once?

~~~
Alex3917
My thinking was that the documentation isn't nearly as strong for Node as it
is for Django. And also JavaScript doesn't have all the same libraries for the
backend. But certainly being good at JavaScript is very highly valued in the
marketplace right now, so if you have other technical friends who can help you
then this might make sense. But they might literally need to be willing to
spend a couple dozen hours sitting next to you while you're learning Node,
which isn't always trivial to set up. But in general I'd still recommend just
learning Python, because I think the advantages of knowing you'll be
successful outweigh whatever extra work there might be.

~~~
nutball
Woah, I followed pretty much the same roadmap as you, except I took the
(Python-based) CS600 class at OpenMIT instead of Udacity's CS101. And my year
was 2013. I really enjoyed Udacity's CS253 on web development, even if the
particular technologies introduced in the course aren't very popular.

Since then, I've been switching gears from Python to JavaScript by learning
Node and Angular. I don't view Python as a waste of time, because I think it
is a great first language to learn particularly for CS fundamentals. Starting
out, I may have been discouraged learning JavaScript as a first language. OOP
isn't so straight-forward in JS, and there aren't as many learning resources
for algorithms/CS-theory stuff in JS as there are in other languages. Also,
learning server-side web development fundamentals with Node.js may have been a
struggle, perhaps because there aren't as many resources devoted to beginners
and docs as there are with Python/Django. Plus the asynchronous stuff. I'm
struggling to learn AngularJS, although it's just straight up difficult I
think.

I still need to figure out how to interview well. I have a decent
GitHub/portfolio, so I'm generating a good number of interviews despite having
0 professional experience in the field and no CS degree (I have a math degree
though). I've had about 20 technical phone screens/interviews not including
take-home assignments, and I'm getting better at them. But I'm clearly not
there yet, since nobody has offered me a job.

------
abolibibelot
An interesting retrospective. What would be interesting would be to know the
challenges you've encountered once you started working as a developer. I have
two questions though: I'm curious to know why you state that

"Ruby is probably the best platform to learn if you're a designer and you want
to learn how to code to add value for your clients."

and also I'd love some more details on why "Python is fairly mediocre in a lot
of ways" (not starting a language war here, I'm genuinely curious)

~~~
Alex3917
In terms of Ruby, I'm saying that partly because of the omekase-nature of
Rails, and also partly because Ruby doesn't have the same level of libraries
for some of the tasks I mentioned. It seems like for all intents and purposes,
the possibility space in terms of what you would want to use Ruby for is
smaller, with the sweet spot being CRUD sites.

In terms of the downsides of Python: speed, lack of tail recursion and real
threading, many libraries outdated, lack of some features of other modern
languages, etc.

~~~
abolibibelot
In terms of threading, Ruby and Python are in the same, sad, GIL boat. The
speed issue is the same, but the C libraries alleviate this somewhat (Numpy,
scikit-learn and lxml come to mind). Tail recursion is really needed when you
have a functional language, and since Guido van Rossum, and therefore Python,
has a bias against FP, the lack of TCO is not that glaring when you write
pythonic code (which is kind of a circular argument, I know). When it comes to
libraries, the old "batteries included" argument gets old, and the standard
library shows its age, but it's usually addressed in external libraries...
...which brings me to my real gripe about Python, the ever changing way you're
supposed to manage packages (use easy_install, wait, no use pip and
virtualenv, wait you should take a look at wheels too, and so on).

------
bb0wn
Thanks for posting this Alex. I really love hearing the others' tales of code
enlightenment, and with yours being very similar to my own story, it's
especially nice.

------
dsshimel
I noticed at the bottom of the article it mentions that "Amazon affiliate
links benefit Erowid". I think Erowid is a magnificent resource and I'm a big
fan. What motivated your decision to support that site?

~~~
Alex3917
The fact that drug use and misuse kills at least 1 in 4 Americans, if you
count legal, illegal, and prescription drugs. Supposedly eating healthy and
exercising are the most important things for health, but these are difficult
because you need to do them every day. Whereas with drugs, if you just sit
down and read 10 books on drugs, or at least 10 books worth of information,
then you're pretty much set for life. So I generally think the ROI from
investing in teaching people about drugs is probably easily higher than the
ROI of any other health-related programs.

Also, they're the only non-profit I know of with an affiliate link generator.
And it seems like a waste of an opportunity not to use affiliate links, but at
the same time the trust of my readers is obviously worth hundreds of times
more than the 12 bucks or whatever I'd earn from redirecting them to myself.

~~~
dsshimel
Thanks for your response. Your 1 in 4 figure seems plausible, but I'd be
curious to see a source (perhaps it's in your mind map? I read that article of
yours and immediately downloaded FreeMind; I'm looking forward to trying it
out!). I agree that basic knowledge about drugs can go a long way in terms of
harms reduction, like knowing why it's bad to take excessive prescription
opioids that contain APAP.

~~~
Alex3917
There are about 443,000 annual deaths from smoking.[1] This is about 1 in 5.

Plus another 35,700 deaths from alcohol and alcohol-related automobile
accidents.[2] Plus another 7,600 from NSAIDS.[3] Plus another 27,500 from
accidental overdose of prescription opioids or illicit drugs.[4] Plus another
8,400 overdoses ruled suicides or where intent was unknown. Plus another
106,000 from fatal adverse reactions to drugs given in hospitals.[5] That's
roughly 26% of the 2.4 million annual U.S. deaths right there. (These numbers
are from about ten years ago, so I'm using the death rate from about 10 years
ago.)

These numbers don't count: deaths from the longterm consequences of
prescription drug use, e.g. someone who takes Accutane and dies of liver
failure 20 years later. Nor do they count someone who gets AIDS or hepatitis
from drug use, someone who develops a mental illness from stimulant abuse,
alcohol-related homicide, etc. Sources:

These numbers also don't include benzodiazepines, for which the excess
mortality estimates range from almost zero to over 500,000 per year:
[http://www.medicaldaily.com/sleeping-pills-linked-
premature-...](http://www.medicaldaily.com/sleeping-pills-linked-premature-
death-and-cancer-239855)

Sources:

[1]
[http://www.cdc.gov/tobacco/data_statistics/fact_sheets/fast_...](http://www.cdc.gov/tobacco/data_statistics/fact_sheets/fast_facts/)

[2]
[http://www.cdc.gov/nchs/data/nvsr/nvsr58/nvsr58_19.pdf](http://www.cdc.gov/nchs/data/nvsr/nvsr58/nvsr58_19.pdf)
[http://www.nhtsa.gov/people/injury/research/alcoholhighway/2...](http://www.nhtsa.gov/people/injury/research/alcoholhighway/2__overview.htm)

[3]
[http://www.annals.org/content/127/6/429.full.pdf](http://www.annals.org/content/127/6/429.full.pdf)

[4] Leonard J. Paulozzi, Richard H. Weisler, Ashwin A. Patkar. A National
Epidemic of Unintentional Prescription Opioid Overdose Deaths. The Journal of
Clinical Psychiatry, 2011.

[5] Lazarou J, Pomeranz B, Corey P. Incidence of adverse drug reactions in
hospitalized patients. JAMA. 1998;279:1200-1205.

------
Misiek
Any code examples? What did he build?

