Hacker News new | past | comments | ask | show | jobs | submit login
How I Learned to Code (viniciusvacanti.com)
71 points by suneel0101 on July 30, 2013 | hide | past | favorite | 34 comments



This is almost offensively linkbait-y. In the "most popular posts" sidebar you have "Everyone at Yipit is Now Learning to Code". Why will I never learn to code? You never get to that part.

By the way, I decided to "learn to code" at age 30, and I find it interesting. Then again, I was also full of platitudes when I was in my 20s.

edit: the submission was retitled to something actually pertinent to the article's content, rather than the title of the article "Why You Will Never Learn to Code", which is shit IMO.


Exactly. I share a very very similar story with the author, execpt that I am not successfull yet. His story had everything to inspire me, someone who followed my exactly same path and made it.

Then, after reading it, I feel that he is more interested in creating a brand, building an audience, than sharing his story and inspiring people. I think I will have to find out some other "learned to code and created a company" role model.


Doing "whatever it takes to make it work" creates profoundly different results as opposed to "learning how things work".


This is so true. I did an apprenticeship as software engineer (but already coded for 3 years before that). In my whole class at vocational school there was not a single person who was genuinely interested in e.g. the data structures they were using.

Most people used java.util.ArrayList all the time but they couldn't answer why nor did they want to know why a LinkedList, Map, Tree etc. would be better for a specific case. While it is nice to have all those high level types and classes available it's kind of sad that most people aren't interested in the inner workings.

Edit: The various Java collection implementations aren't really "low level" either, but you get the idea.


Pity they used ArrayList, it is kinda a shitty data type for a lot of use cases. I would say that something like the Lua "map" (essentially, a resizing associative array with some optimization to make array-like access efficient) is more optimal as a "use this for everything" data type, due to greater versatility.


As someone who writes for a company, I understand the goal is to get a person to read your article, but I feel uncomfortable by the disingenuity of the title. It tells me one thing, then the article ends with the opposite conclusion.

Sure, you got me to read it, but it felt too forced/contrived and salesman-like.

Anyway, I'm a beginner in programming/coding/scripting. I take courses online. After work. On the weekends.

I'm sure there is certainly a group of people for which what Vinicius says is true, so in terms of that, it's good to have someone write this out. However, it is more important to see/analyse if what he says applies to you.

What he says does not apply to me. I am 30 years old, have just started learning to program, and my birthday is a week away.

I am genuinely interested in it. My mind always worked in ways which help when programming. While I spent most of my life in the (liberal) arts, I think there is a strong correlation between my excelling in my previous endeavours with my capability to grasp programming concepts. I can't say my approach is the only way to do extremely well in it, because, as they say, there is more than one way to skin a cat. But I guess this middle-ground type of writing is not very good copy.

All that aside, congratulations to Vinicius for learning to code.


The biggest problem with this article is that it is -- and this is non-obvious until you've read through the whole thing -- written with a very specific audience in mind. To wit, the audience the article is directed to is people similar to the author in his earlier circumstance while he was still working in finance.

It is assumes that whoever is reading the article is similarly situated to that earlier version of the author both in terms of career circumstance and interests.

This is particularly clear in this excerpt:

I found that there are two types of people that power through the frustration [...] [t]hose that are really intellectually interested in learning to code. If you haven’t learned to code by now, it’s highly unlikely you’re one of them.


All the good coders I've ever met had already taught themselves to code before the age of 10. (Most of them were so passionate about it they went on to do computer science degrees which polished their raw skills and taught them rigor.) The question isn't how to learn to code: if you have the innate ability you can't STOP yourself from coding the first time you encounter a computer. I'm all for people learning new skills later in life, but to force yourself to learn something you have no passion for just because you want to 'do a startup' is ridiculous.


Indeed; coding is akin to music, art, etc. in that it's not so much you learn to do it, but it's just what you do as a result of you being you. Sure, learning is necessary to grasp the tools and make them do what you want, but once you have enough tools to get started (editor/compiler, guitar, paint & brush) you just run with it. At age 10 Dad brought home a terminal and had me type in a 3-line program; ran it once, and immediately wanted to change it, already grokking loops and output formatting. Programming as "work" isn't so much a means to an end as someone funding my needs so I can do what I can't stop myself from doing: code.

I half expected the article to consider the sheer scale of the programming stack: today, the conceptual layers from NAND gates & machine code to graphical resource editors are so numerous and complex that I can scarcely comprehend how any student of programming starting out these days any later than grade school can absorb the material in any sensible timeframe.


> Indeed; coding is akin to music, art, etc. in that it's not so much you learn to do it, but it's just what you do as a result of you being you.

That's pretty easy to say for someone who's dad seems to have had the same interest. I was brought up by a mom that can't tell a bass guitar from a guitar and a dad who doesn't really have an interest in music other than a music 'collection' of 8 CD's from the sixties and who probably does not have a sense of rhythm. Thankfully I had some peers who played music and parents that bought me my first instrument, but actually practicing and getting good at an instrument is (to me) a very tedious and deliberate form of practice that can take a very long amount of time if you happen to be mainly interested in a type of music that happens to be challenging to play - like what I was interested in. Practicing programming for four hours is more fun and less draining than properly practicing an instrument for one hour, for me. To keep it short; low self-esteem, and especially a lack of social self-esteem, and lack of discipline when it comes to practice; if my so-called "passion" for music wasn't able to help me battle through those things, I guess it wasn't much of an interest or passion to begin with, eh...


I'm not a half-bad coder, and I didn't start until I was 15. I don't necessarily think there's an age limit (and it's definitely not 10!) but, as you say, there is a certain, innate wiring that seems to be required. You need to be the kind of person who likes to understand what makes things work. If you've got that, the rest will come with practice.


I don't buy this. To be peerless in this profession probably this description makes sense. But I know a lot of physicists that came to programming because of the paucity of jobs for BS Physics, and they were, at the worst, very competent, up to extremely good. I know plenty of others for whom programming is a means to an end - they want to make robots, gather data to answer social questions, or what have you, and the programming is a means to an end.

With that said I did find myself wondering whether the author is a programmer, or slings code around. If you have the right kind of mind its not so hard to figure out how to tell the computer to do something, especially with a powerful SW stack; it's another thing entirely to deliver, say, 300K lines of code that is readable, robust, maintainable, extensible, and somewhat future proof, or to make the stack itself from the ground up. Of course, many of the "I've been programming since the age of 10" can't do that either.

And, with that said (:)), I probably share your suspicion of wanting to 'do a start up'; it's hard to throw a stick here (SV) without hitting somebody yacking about a start up. Problem is, 'start up' is so often the idea. It's rarer to hear "I want to build a device to help the blind, I reviewed my options, and VC money turned out to be the best choice for me because..." (VC money is often a terrible option, it depends on your business situation).

But I am straying off the subject, which is the blog said to learn to do something, dive in and actually try to accomplish something. I am wholeheartedly behind that. I'm trying to learn a topic for work, and am reviewing some Coursera courses. And, not getting far - I need to immediately try to apply the ideas to a real problem to get traction, I think. I think I will succeed just fine, despite not having tried to do this particular thing (Machine Learning/AI) since the age of 10.


Ridiculous just like doing anything else you don't have a passion for is ridiculous? Like paying bills? Accounting?

He wanted to start a company. That implied, in his case, learning to code.

Just like finishing my degree implied long days working to pay it (wasn't very passionate about cleaning barracks I can tell you ;-)

(Btw, I'm one of those who started coding at age 12 by picking up the c64 manual.)


Coding is not in the same category of skills as other "things you must learn to start a business". It's a hundred times harder. I don't think, as a person who started coding at 12, that you have the perspective to appreciate that. It's a long, tortuous, winding road to building something reliable with code.

I started coding at an early age too, I didn't understand just how hard it was until I started rubbing elbows with a lot of business types and trying to show them technical stuff. The knowledge gap is so wide and gaping that yes, you need a long time immersed in technology before you can understand it enough to build with it. If you're really bright, motivated and lucky, you might manage something in 6mo to a year. And those months will be the hardest of your life.


Young minds certainly have more plasticity, and I agree that people with the requisite level of interest tend to discover programming young.

But I think there's another factor that's at least as important: time. A ten year old has a much bigger time budget for learning programming than a thirty year old.

And it takes a vast amount of time to truly master it.


I never guessed what programming was like before I started my introductory university course on it. All those years of using computers had never really given me an inkling to try it, but when I did, I really liked it (it was also very frustrating at times).

I guess I'll never be a good, passionate programmer, but it's the only thing that I seem to like that also brings with it a paycheck.

EDIT: I have spoken one language since I was three, two languages since I guess I was 14, but it wasn't until I started learning a third language that I realized that human languages in themselves are pretty interesting, with all their different grammatical constructions and peculiar ways of expressing semantics.


What a load of crap. Coding is a skill, and like nearly every skill you can learn it on the side. It's like saying that you'll never learn to play the violin unless you quit your job and force yourself to play violin for your supper. Indeed, it's even more of a silly assertion, because you can be "pretty good" at playing the violin and still not be good enough to make something out of it, but you don't even have to be that good at coding to do something useful with it.


Yet another reason for teaching programming at high school. This is not about learning programming, but about gaining a mindset that is not easily learned unless you really need (or want) to get through it.

And people who does not understand how systems so central in our society work is in the core of several recent political problems and conflicts.


Yes, granted, the title's intention is to inspire controversy, but it's still worth pointing out that the author's two concluding avenues to 'learning to code' - all-or-nothing desperation and irresistible intellectual attraction - are baseless. I'm confident that they're entirely false. Just more evidence-free platitudes dreamed up by a fellow twenty-something. I'd wager that these two extremes represent a very small percentage of real coders.

To answer anecdotal proof with anecdotal proof, I studied finance and taught myself to build web apps. I didn't do it because I had to. I didn't do it because I couldn't stop myself. I just forced myself to do it the same way I force myself to memorize Chinese characters, the same way I force myself out of bed every morning. Willpower isn't some mythical ability granted to the anointed few. It's just asking yourself, what am I doing right now? Is it what I want?

There's also a troubling perception of what 'coding' is behind this post and many others. I write code for a living and I'm under no illusions about my abilities. As James Somers pointed out in Aeon, I'm a kid playing around with tools given to me by adults. Nobody like myself or the author is going to build a Rails, a V8, an Ember, a Heroku. If I learned how to use a brush I wouldn't call myself an artist. It's fine that we're becoming more abstracted from the machine's reality - thank God DHH didn't have to use punchcards - but with that abstraction should come a bit of humility about what we've actually learned. Because for web development, at least, it's mostly syntax.

I'd better stop before I exceed than the original post length. If you'd like a tl;dr, it is: fuck the author's position, my experiences contradict it, and the author is confused about what 'real' code constitutes. (However, I wholeheartedly agree with his suggestion to learn by building something you yourself want.)


Author of the post here. Agreed with the general criticism of the title and have changed it to "How I Learned to Code".


In writing we call this "The Genius of Desperation".


That is an interesting expression. If it's very established, do you have a reference where I can read more about it? Google turns up nothing but a quote by Disraeli.


I heard it from an old colleague and mentor of mine who is now long dead, having lived well into his 90's. I've used it ever since. I'd never heard the Disraeli quote before. Good stuff.


Thanks for sharing that.


The time investment is key and the OP is dead on. I can speak to trying to learn Objective-C last year on nights/weekends and not really learning the fundamentals behind I was doing, despite being able to follow along with the books I was reading and the rudimentary apps I was building. It requires a full-time commitment, which is why so many of the development "intensive" programs and workshops are time intensive (at least 8 hours per day) over anything else.

Unfortunately, the time commitment becomes prohibitive to those that have to keep running the job/consulting treadmill and can't fall back on an investment banker salary (or similar) to fund their creative ambitions for a year or more. That unfortunately is the real answer to the post's title.


As an investment banking analyst who was learning to code "on the side" for 6+ months and then finally decided to quit my job and learn to code full time in January, I can't agree more with this article. Learning to code part time doesn't work. You need motivation, and you need to dive into coding head first. Zach Shapiro has some great tips related to learning to program similar to this article:

1. Nights, weekends are bad 2. Forget codecademy 3. Have a real project you want to build

Check out the full article here: http://blog.zackshapiro.com/want-to-learn-to-code-start-here...


Maybe this depends on your age. A lot of people learn to code as a child, and at that stage you're really not doing anything full time.

Starting as a 10 year old, I began learning to code and spent maybe 20-30 hours / week on it combined with school and friends. All of that time was during nights and weekends.

I think having a real project you want to build is a good start. I also think that a keen interest in the topic and a passion for learning will overcome most other obstacles.


I didn't really start learning to code, even though I had a year of CS under my belt, until I found a problem that I wanted to solve. I was using Audiogalaxy to download music over a 56.6K modem and I wrote a program to monitor the download folder and move any file after it was completed in order to prevent automatically sharing/uploading it to other users.

It wasn't as technically difficult as most CS homework, but it was the first time I started thinking about programming as a tool to solve an actual problem I was experiencing.


A LOT of people learn to code on a need to know basis. It may be a common practice too but i really do not think it should be propagated as the thing to do. This is a really horrible approach to coding. Searching for stackoverflow will only lead to you getting a solution to the problem without having any understanding of the problem itself. There is a good chance that if you learn this way, you will find yourself heading back to stackoverflow when the problem arises again and you forget what you did last time.


[Insert obligatory gripe about title/writing style here].

Moving on...

I'm a software engineer. That is, it's not just my job, it's a very strong part of my identity. I learned to code before I was 10, and in some respects I still haven't finished. However, I've had the honor of teaching a handful of people to build software, and it's taught me a thing or two about how people tend to pick it up.

If you're grabbing a "Learn [language] in [X time]" book, or similar, you're not going to succeed. These books market themselves in the same way as fad diets. Your expectations should be similar. That is, you'll probably make some early progress, but without loads of discipline [1] it won't live up to your ideals.

If you're like me, you know this already. You probably have a few of these books on your bookshelf, but they're collecting dust as you devoured them years ago before quickly moving on to better materials.

But most people aren't like me. Most people don't look at code as a thing which holds intrinsic value. Most people don't feel an emotional response to a clever quine or well-thought architecture. Instead, most people (rightfully) view code as a tool. It's something that helps them achieve their end.

If you're like most people, you need a goal first. But not just any goal, a goal that you really care about. A master carpenter can show you you all of the ins-and-outs of joinery, but that will (almost) never help you write a book, mow your lawn, do your dishes, or achieve any other goal that doesn't involve sticking two pieces of wood together. The same is true in software. If you have no intrinsic motivation about the process (coding), and you have no intrinsic motivation about the outcome (the thing you're building and its purpose), then you won't succeed.

Extrinsic motivation isn't good enough. Writing code is really, really boring when you don't care about anything to do with what you're doing. Saying "this will somehow make me money someday" isn't going to get you there.

So to borrow another metaphor, if you don't care to swing a hammer and you don't want to drive nails, why would you ever go searching for nail-shaped problems when you don't even have a hammer anyway? Further, why would you bet your livelihood on them?

1: If you had loads of discipline, would these books be nearly as appealing to you?


This piece is bound to push you back yet another time to see whether you really have the guts to learn coding. The author simply shares his experience and some advices. I think it's pretty straight and consistent actually.


Never and ten years[1] feel pretty similar in month two.

[1] http://norvig.com/21-days.html


TLDR - Don't just read books, build something that interests you. Some people need large external motivation to learn to code.


Developing software != 'coding'.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: