Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
How I Became a Programmer in ~12 Weeks (mattdeboard.net)
239 points by mattdeboard on Nov 23, 2011 | hide | past | favorite | 173 comments


The amount of negativity in this thread is depressing. I think a lot of people either didn't read the article or just skimmed it. For those of you who are citing Peter Norvig's essay, I also thought of the essay when I read this; it's one of my favorites. I've read it several times because it is humbling and inspires me to rise to the challenge of really becoming a great programmer. If Matt reads it he might feel similarly (if he hasn't already).

But do you really think Norvig would suggest that someone at his level is not a programmer? By my count, he's done about half the things on Norvig's list already and could be within a tenth of the fabled 10,000 hours (12 wks * 7 days * 8-16 hrs = just over 1000 hrs).

I agree that the title might have been misleading given how much prior experience he had, but seriously, this is one of those "if you don't have anything nice to say" moments. If he received that many emails from some random comment on HN that means there are a lot of people reading this thread right now who are in the same boat as he was and as the people asking for help are. What kind of community are we (I mean we as programmers and we as HN) if we denigrate Matt's efforts and these kinds of blogposts?

There are going to be more and more programmers in the world as the pace of computing accelerates and people are exposed to gadgets and technologies that excite them enough to peek under the hood. We should be encouraging them and welcoming them and telling them "yes, programming is awesome!"


Agreed, the condescension is nauseating. It's extremely rude to tell someone who writes software as a day job and who is so enthusiastic about it that he is not a real programmer. Sure, he's closer to the beginning than the end of his journey as a programmer, but so what? He jumped in head-first, and just wanted to share that joy. I have to take a break from HN. Sometimes this community is a real downer.


Let's be honest and realistic for a moment.There are lots of young and very enthusiastic programmers out there but at the same time there are some older and more cinical ones too.My feeling is that when the older/professional programmers read articles that seem to oversimplify their profession, they feel threatened somehow at a very low level.And personally i can understand them and I feel the same sometimes. I feel that the programmers today are like a big suicidal herd waiting to be exploited by management people.I know that this will sound very awkward in US where the programmers may be at the same time entrepreneurs or self employed but in europe where the entrepreuneurs are crushed easily or have more dificulties, the view might be more conservative.How can I be happy when someone joins the profession, learns overnight some trendy technology and competes with me on some of the fewer and fewer jobs which seem to require less and less depth of knowledge and experience.Why are programmers so naive when all the other professions are restricting their gates through various tactics in order to mantain their advantages ?Again, this may sound extremely cinical and selfish but someone has to say it.Personally i feel myself betrayed by this profession which consumes my best but gives back less and less.Maybe it's just the crisis, maybe its like this only in europe or maybe not.


If we truly have senior members of the software community who feels threatened by a guy who picked up the basics of their trade in 12 weeks, they are perfect examples of why we should not have barriers to entry to our profession.

If you, after doing something for five+ years, isn't demonstrably a lot better at it than the guy who did it for 12 weeks, you have thoroughly squandered the opportunity given to you and, yes, you are extremely selfish for suggesting there should be external barriers raised to protect your advantage.

I, for one, am proud to work in an industry where the barriers to entry is only a cheap computer and an internet connection. Bring on the masses!


It goes the other way too.. If we truly have lots of software companies that prefer to employ and exploit juniors and put the quality and safety of their products on the last place for some bucks, companies that don't distinguish the capable from the wannabe's or simply don't want very capable people because of the fear that they will ask for better conditions, payments or promotions, companies that pay ridiculous wages while the enthusiastic geeks build platforms that will bring hundreds of thousands of $ to millions of $, then I think you will agree the programmers have to protect themselves somehow too.But they don't.Perhaps in US the demand for programmers is still high and u didn't experience the predatory software industry yet.But never mind.


Don't be. There are still barriers to entry in the profession. Sure one can cook up simple apps and google everything else after just weeks of learning, but if you sit down with somebody for a while you'll know and feel the difference. Which maybe the reason why more and more programmers are becoming entrepreneurs - management and other 'clients' usually have a poor eye on talent (esp. the young ones... you see the theme here), and to really make the most out of your expertise the logical conclusion is to build your own company out of what you know.


Of course management have a poor eye for programming talent. It's not their field.

Would you know a good mechanical engineer if you could only interview them for two hours and maybe see some of their past work? A good massage therapist? A good financial planner?


What if management included programmers? What hope do you have then? I was just recently at a company that never even gave me a chance to write one line of code.


I live in Europe and I don't see how it's different here than anywhere else. The great thing about programming is that it allows you to be an entrepreneur regardless of your geographical location. Nobody can "crush" me except the market if I'm not smart enough.


No irony or sarcasm here but I would love to get some links or directions towards startup hubs in europe.I'm interested in attending conferences for young entrepreneurs or events like this.If they are very few or almost none, then I see myself forced to conclude that europe it's a bit different (than USA at least). Sorry for running off topic.


My biggest problem with the article is that it's essentially a puff piece about how awesome the writer thinks he is, and how special he is for being able to learn the basics in a short amount of time. The post is entirely too hand-wavy about actual details; telling someone to read some blogs, Q&A sites and code doesn't help anyone.

Where is the substance? Were there any interesting ah-ha moments? What would he do differently? What guidelines would he give to someone else in a similar position? How did he find an appropriate mentor? What was he surprised to learn? What can he do now that he couldn't do when he started?

There's so many things he could have documented that would have been helpful. He didn't write any of them. Instead, he made the implementation details seem mystical and gives the opinion that "hard work" (whatever that is) is the only key.


>Were there any interesting ah-ha moments?

Yes, all of them. I have them every day. Today's was Solr's facet.limit/.prefix/.mincount methods as it relates to what I'm working on. Nothing stands out because it was a huge bolus of information.

>What would he do differently?

Nothing.

>What guidelines would he give to someone else in a similar position?

http://mattdeboard.net/2011/11/23/how-i-became-a-programmer/

>How did he find an appropriate mentor?

I was lucky. I answered this both in the comments and in this thread.

>What was he surprised to learn?

The level of apathy among a lot of programmers.

>What can he do now that he couldn't do when he started?

I can program now, so there's that.

You think it's hand-wavy because you think I'm holding something back. I busted my ass dude, I worked very hard. That's not hand-wavy, that's just really what happened. I taught myself a lot of shit by reading, asking questions and trying new stuff. There's no mystery or secret sauce.


I think you're misinterpreting my comment. I actually liked the article. I was simply explaining some of the reasons some people may have viewed it negatively. You could have done a better job of explaining the process. It's basically a black-box where you go in, work hard for 12 weeks, and then you're a programmer. You're missing a real opportunity to share (what could be) a better story.


What did you actually program though? That's all I want to know. What did you build and how did you decide what to build? How small did you start? What was the biggest project you undertook before you got hired?


It's all on github, that's why I linked to it in the post.


No, it isn't a puff piece, he's not going on about how awesome he is, he is just saying "Hey look, you can get a entry job programming without learning how to program for 4 years.", and then goes on to say how he does it. If he spent all of his time documenting everything so you could be satisfied then he wouldn't of turned up where he was, and in no way was he actually planning on writing that blog post until tons of people on Hacker News started messaging him after he mentioned it in a post.


He spent a substantial amount of time talking about his motivation to become a programmer. The other jobs he worked at, etc. Then once it comes to how he actually did it, he drops the ball and misses a great opportunity to tell an interesting story. I don't think anyone is asking for a day-by-day or hour-by-hour recap, or a step-by-step tutorial, but he could have done a much better job with adding some more substance there. I actually liked a lot of the article, but I thought it was a missed opportunity overall.


Ahh I misread into your post. Yeah, the article wasn't well written and could've gone into more detail about different things but honestly I feel that an experienced programmer would know a better route for someone to take, for example I know a lot of programmers suggest people start with SICP.


Starting someone who has no programming experience with SICP is idiotic.


The book was written for an introductory programming course at MIT. It is more rigorous of a book then most and may not be for everyone starting programming, but the right people will seek it out. It is also invaluable in that it teaches the programmer about programming more then languages.


Exactly -- the right people will seek it out.


Seeking things out doesn't just mean you read these things on articles or stumble upon them in libraries, it can also detail things like conversations with other people. Either way it is just an example that a guru might have a path that someone can follow that will get them somewhere quicker then a non-guru.


You're misunderstanding. I disagree with your fundamental premise, which seems to me to be that SICP will take someone from zero to hero quicker than more accessible methods.


My blog has comments. My email address is in my HN profile. If you wanted more information you could've asked instead of insulting me.


Try separating yourself from the content for a moment and you'll see he isn't insulting you, but finding holes in your work.

One thing you'll notice here is that the community is very blunt, and often comes across as rude, but as a new hacker myself I've grown to appreciate the honesty.


Buddy I was a Marine for over ten years and spent years in combat zones. There is a difference between bluntness/honesty and disrespect/rudeness, and I am well acquainted with what that line looks like.


And I was an Army Soldier in Afghanistan. That has nothing to do with any of this. It's clear your feathers are easily ruffled. I'd work on that.


"it's essentially a puff piece" Sounds pretty insulting to me.


I don't think he was trying to be insulting. From what I gather, he was trying to justify the negativity theme in the comments for this post, which was the subject of the original comment. I agree that the blog post was not detailed enough, and didn't talk enough about HOW you became a programmer in 12 weeks.


What kind of information do you mean? I programmed, asked questions, programmed, read source code, and programmed. There's zero magic. I learned in the same way all human beings learn.

We're knowledge workers. I gained enough programming knowledge to be a programmer. Where's the confusion?


Being a programmer myself, this is a bit theoretical but I think if I wasn't and I sat down to read an article names "How I became a Programmer", I would expect a couple of pointers to where to start, what to do and how to do it.

Besides from the point about learning a language rather than a framework, your post mostly says "It took me 12 week to learn programming" and that the way to do it is the obvious: read stuff, try stuff etc.

There is nothing wrong with this of course, but given the headline, especially here on HN, I can see why some might feel that they didn't quite get their money's worth.


Judging by the huge volume of emails and comments on the blog, retweets and all that good stuff the article generated, I feel pretty good about the article


Where's the content?


Did you read the article?



> I was a computer geek from way back, had a few BBSes in the late 80s (yes, I'm a child of the 80s & 90s), learned QBasic & VisualBasic back in the day, and tinkered with Python for a few years off and on...

In every single one of the "how I learned to program in X days" stories, the author had some previous experience. I wouldn't count running a BBS and learning 3 programming languages as "no previous experience".


Agreed.

Learning any programming language, especially as a youth, puts you in a completely different class from someone who has no prior exposure to computer programming and its core concepts.


I understand his perspective. I dabbled in programming as a child and teen, and then was an advanced user, running Linux on my desktop for years. At the time I started actual programming, I knew what a 'for' loop was, but not how to write one in any language - even Bash. I didn't know what an array was, or say, the difference between C and C++, to say nothing of functional and object oriented concepts.


"learned" was DEFINITELY an overstatement. I knew they existed is more accurate.


I "learned" Clipper and QBasic when I was 10. I can't write a single line in either today, but I'm 100% sure that experience made it a lot easier for me to become a developer. It's like riding a bike.

Knowing what a for loop is already puts you miles ahead of the pack. It implies knowledge of variables, counters, operators, etc. We take many concepts for granted that are not that obvious to most.


I'd argue that it still predisposes you very strongly. If nothing else, just in the abstract sense that you are familiar with the computer and don't see it as some scary or magical thing.


My college roommate ran several BBSes but ended up being pretty dumb with computers in college. It always made me scratch my head.


No argument there.


dont you think php would have been easier to learn than django or ruby for getting a site working ?


As I understand from the article, he didn't want to just get a site working but to learn how to program and picked, in my opinion, a good language to get started in.

Learning django was, I assume from reading the article, a way to build fun projects with the knowledge of python he had acquired.

Learn a language then how to make web pages with it is a better way to go in my view.

I


they used to say that php is the easiest language to learn for the beginners and get a site working,

may be the times have changed and thats not true any more ..


I was going to post something similar. Glad to see I'm not the only one who felt that line stood out.


Let me say that in my opinion, Matt DeBoard has certainly earned the title of "programmer." Welcome to the club, Matt, and you have my appreciation for the hard work you put in. It sounds to me like you're going about it in the right way; I encourage you to keep it up, and I encourage others to do the same (that is: find a way that works for them, not necessarily copy your approach). Please pay no attention to the negativity. As spacemanaki and others have pointed out, Matt is not a complete programmer yet, and he has more to learn. But I think he knows that, and remains open to learning, which is the important point. I've got more than 12 weeks under my belt, but I still feel like I'm learning all the time. My thoughts are summed up by the character of chef Gusteau in the movie Ratatouille: "Anyone can cook." This very pointedly does not mean "everyone can cook" -- it takes a combination of interest, aptitude, and long study to become a chef, and most will not make it -- but it does mean that there is no one route to achieving competence, then expertise, then mastery.


I envy that the author learnt programming and web development now as opposed to even a few years ago. Without devolving into "in my day I walked ten miles in the snow just to compile"; it's just so much more pleasant now. Stack Overflow, Heroku (and similar), GitHub, PDF Books. Obviously it takes time and effort to get better everyday but the learning curve is a bit flatter now.


There's also a lot more to learn and possibly more confusing. In 'my day' it was just CGI with MySQL, Apache and perl, then comes Java, then along came PHP then Python, Ruby, now there is JQuery and Redis and Hadoop and.. and on HN now you see a hundred new frameworks each saying 'we're great, use us!'. While I welcome that there are easier ways to actually learn all these things and the amazing communities, I'm not sure it's really easier to actually just get started. Oh, and you've got Reddit and Facebook and HN sucking up your time and a fast internet connection to procrastinate on Netflix and Youtube.. I could go on.


Very true that there are so many choices now. Easy to suffer from analysis paralysis before you even get started.

I answered a questionnaire for Manning in exchange for a free book recently. I wanted to learn something new so that cut out a few topics. However, I still sat staring at their catalog for an eternity before deciding on one that was interesting/potentially useful (Lift in Action).


I second this. Although my story is different. I would put my toe in the water and try to learn to program, but it all just seemed so absurd to me, so I pursued other areas of study.

Then earlier this year I started doing Hartl's Ruby on Rails tutorial and things just started clicking. Now I am teaching myself Ruby on Rails and I am looking for explore other more difficult languages (just for fun, I don't want a career as a developer).

For whatever reason, Ruby just got me more interested in programming. Now I am dipping my toes into SICP, which I would have never have guessed I would be interested in.

I think once you get your hands dirty with something relatively easy like Ruby on Rails, you start seeing the need for all the other computer science concepts and languages and that piques your curiosity.

However, I can say that teaching myself a little coding has really helped out in my day job, I notice I think differently about problems. My thought process is much more structured.


It's going to keep happening...


Congratulations, now do yourself a favor and read this:

http://norvig.com/21-days.html


I think the people who need to read that article and pay attention to its words are the ones getting teary-eyed over my use of the word "programmer."


I think this shows just how much can be achieved if you work hard and give something your absolute focus.

Call him a programmer or not, it seems he has learnt enough to program professionally and by most definitions, that makes him a programmer.


Thank you.


My mantra for the past 2 weeks has been that there's never been a better time to learn to code, simply because the resources are so abundant and available.

I'm self-learning web development right now. Between HTML Dog, W3 Schools and Google, I have more than enough information. I wanted to play around with WordPress-fired up a VirtualBox VM with Fedora, and an hour later had completed the 'famous 5-minute install.' When I begin to take on client work, most sites can be hosted on a cheap Linode or Bluehost.

Most of the information you need is free. Infrastructure (if you need it) costs peanuts. You have nothing to lose. Why not start now?


from me to you: http://developers.whatwg.org/ is an incredible resource you might put above w3schools, despite w3schools amazing google juice.


Or this... this looks like a great resource. Looks like I've got some reading to do.



HTML Dog is absolutely awesome for learning, but just make sure you follow that up with what's different in HTML5. It'll make your life a bit easier. net.tuts+ and webmonkey are great places to get up to date. I've been meaning to try out teamtreehouse.com too, but just haven't gotten around to it yet.

Right now I'm trying to learn Python using Zed Shaw's Learn Python the Hard Way and The New Boston tutorials. I think once I'm comfortable with the language I'm going to try to build something. It seems like the best way to learn how things really work.


> there's never been a better time to learn to code, simply because the resources are so abundant and available.

I felt this way in 2001 when I started to teach myself HTML. There were plenty of free resources available online to learn.

The free education available now is exponentially more abundant. I would expect a similar leap during the next 10 years.


Awesome attitude! If it's something you want to do, you'll make time to learn.


Exactly. As a 17-year-old I've been able to run my own little freelance business. The internet = opportunity if you use it right.


Awesome. I wish I was doing this at 17. Ten years later I'm making up for lost time. Congrats for getting after it early!


To offer a counter-point, I was running a consulting business at 17 (OK, a little later) went from hack to hack and didn't even know I was failing to learn and improve myself. Ran up debt, and went through what in retrospect looks a lot like bouts of depression. Now, I'm going on 30 in my first "real" job and I feel like I'm making up for lost time.

There's no magic right way to do it.


I don't do something unless the profits are clear. I once had $3,000.00 stolen from me, so I've learned early on to avoid anything too risky. And I'd rather make pennies doing something I love than dollars doing something I hate. It's absolutely different for everyone! But I'm confident you've probably learned a lot from your endeavors and have more respect for money. It's an interesting thing when you first start dealing with money...yikes...sometimes we have to learn the hard way.


Thanks man! And you're not making up for lost time :) Everybody's life is completely different.


I fundamentally agree with Norvig's idea about how long it takes toward being a programmer. But this approach sort of makes sense - or just maybe I am reading too much into the software-commodity angle.

Either way - I cautiously approve this. This is similar to how modern warfare utilizes recruitment-training-deployment to weed out the unworthy from the able. Adapt or perish. Nothing wrong with that. The worst thing that can happen is that the developer in question may realize that he is just not that capable and venture into some other areas.

I realize I am reading HN but sometimes programming is treated as too much of a sacred cow.


I did something similar when I got started and yeah it got me a job but that was just the beginning, now, about 2 years later, I'm still learning and pushing myself to learn lower and lower level things about software development (as I started with high-level, dynamic languages) as well as more about design patterns, etc. Its definitely true that there's always more to learn so never be complacent. Its definitely possible to learn and apply the basics of CRUD development in a few months but IMO this is only the tip of the iceberg to having a fulfilling career in software development.


Nice post, very inspiring.

I have been dabbling with Ruby and other languages for a year, but have never had this sort of discipline. For a couple years I have wanted a programming job but have always had serious doubts about whether I can really "hack it" as a professional. I don't know any programmers personally (well, one friend on the other side of the country in SF, heh), and I look at job openings and their requirements / desired experience all seem so intimidating. :-/


Oh John, I wouldn't call him a pilot, you know, he flies people in his small airplane and gets paid for it but he doesn't know how to fly helicopters or jets and he didn't study fluid dynamics, so he's a "Cessna pilot".


"You're more of a wing wrangler."


My experience is similar to his. I have a business degree and worked in accounting, but decided I'd like to get back into programming after dabbling in it when I was younger. I wrote some Rails apps as side projects and put them on Github, which ended up helping quite a bit.

What made the difference in the end was good social skills. I met the CTO of the company I work for at a Ruby meetup, and had a good conversation with him. I ended up applying for a position he was trying to fill, and after an interview and a review of my projects on Github, I ended up with a development job without having any formal experience. I've been at it for over a year now.

So, this is definitely doable as long as you're committed to learning a lot, and are able to sell yourself well enough to convince someone to give you a chance.


Snarky comments making me think people just got annoyed by the title and didn't read the post.

A lot of good advice for people who would like to program rather than be programmed but aren't in a place to take a cs degree.


Agreed! I am only about 5 weeks in to learning Python with no previous experience and doing it very much part time as I work full time but there are some great tips in this article. Don't let the title throw you off here.


I don't understand it. Some of the people posting comments on this topic are acting extremely pompous. The word 'programmer' on a resume does not mean you're in a elite club or society. It means what the job title implies: a programmer is someone who writes computer programs. There are all different variations of skill level though, just like in any profession.


I am very surprised confused and disappointed at the parochialism here.


It's probably because you scare them. Here are people who have spent several years in school to gain a certificate that shows they know how to program. You may never be a competition to them in the job market but the knowledge that someone spent close to 12 weeks (not even a semester) and was able to land a basic job programming is probably rubbing their sense of entitlement the wrong way. Me personally, I have a M.S. in Computer Science but I work with a group of people, who, with sheer will and hard work, are in much better programming situation than I am. Not everybody gets to, or needs to, write a compiler or an operating system. Most of the applications are crud applications. Just because you are not of Linus Torvald's caliber doesn't mean that you are not a programmer.


I share your sentiment. It's disrupting their entire way of thinking regarding the programming field.

It would be amazing to get to the level of programming enlightenment to be able to create a compiler or kernel, though. That's a goal of mine with-in a decade.


I am certain most HN readers who are expressing negative sentiments here and who have spent several years in school feel very threatened by a Django coder.


I don't want to get too personal but do you go about your life this negatively and sarcastically all the time? How sad it must be.


Pretty much, yeah. I'm sure it would be much more fun if I could get excited about 12 weeks of Django, but that's just not the kind of person I am :)


Don't be too surprised or confused. There are a lot of very bright people here, but remember that being bright in one area doesn't necessarily mean they'd be bright in other areas, or nice, or humble. I guess someone who spent n years working at their craft and feels that he earned the title "programmer" might get offended when some young punk says he learned how to program in 12 days. I don't feel that way but I can understand why someone else might. I think if you had said something like "How I learned enough about programming to get a job doing it in 12 weeks", they might have been more encouraging (though it would have sucked as a title!). I think it was the title more than anything else that put them off.

And don't be too disappointed. I think the majority of the people here aren't nasty. They might have said some not so nice things in a moment of pique for the above reason, but the nice thing about HN is that most of us do try to be objective and helpful. Don't be surprised if in another thread, the very same people who dissed you here praise you, help you or openly agree with you. I usually don't even notice usernames when replying or voting on posts.

Lastly, congratulations on taking a very big step on the same path most of us here are on. The path is long and difficult at times, but infinitely rewarding. Welcome to the club.


Hmm, I started programming over a decade and a half ago, writing my own little game engines in dos, and a nice little x-mode GUI. I've worked as the software architect for a moderately popular (top 2000 alexa) social networking websites, I've worked at fortune 500s, I've been on the dev side, the test side, the pm side, and worked as an IC and as a lead/manager. I still don't really consider myself as being anywhere near being complete in the task of becoming a "programmer."

But kudos on taking your first few steps. Its not a bad vocation.


If you program computers for a living, guess what? You're a computer programmer. Congratulations, you made it.


The article shows us that nowadays anyone can easily start learning a programming language or even a framework, that the internet is an incredibly useful library for those who seek knowledge and that tabloid headlines like "How I became a programmer in 12 weeks" still get our attention.


[deleted]


I'm sorry but you can't become a _programmer_ in 12 weeks. You can become a pretty good code wrangler, you can put togeter a decent website or an application but you still have around 10 more years to go (as shown above/below http://norvig.com/21-days.html).


Suggesting that it takes ten years to become "a programmer" is absurd. An experienced programmer, perhaps, but as soon as you can write and reason about programs (inferring what they do without a compiler), I would call you a programmer. Whether you're good is another matter, though a talented programmer can outpace one a decade their elder.


This just goes back to the "people as resources" (which is code word for developers are widgets) garbage that constantly comes up within organizations, etc, it wouldn't surprise me at all if creativityhurts is a manager of some sort. People are unique, not drones, some have a naturally higher aptitude and interest in programming than others as well as other factors such as intelligence. IMO a programmer who loves what they do and spends time working on their craft outside of their 9-5 job can quickly outpace a more experienced programmer who has little passion and just does it "because its their job". I've seen this first-hand that some people with years and years of experience just don't have that enthusiasm for software development, as soon as you talk to them about a concept that they aren't already familiar with through sheer rote memorization they either lose interest completely or just can't seem to catch on. That said, obviously if you take 2 developers who have similar attributes as far as aptitude, intelligence and enthusiasm but 1 has 10 years more experience than the other, than yes, of course, the one with more experience is going to be better overall.


yeah seriously. I'm teaching myself how to program and for the last year, I ve been spending an average of 10 hours a day reading, practicing,studying Python and JavaScript. I m just getting into concepts like Test Driven Development and design patterns. I m a disciplined guy. But, saying this is like saying: " How I became an astronomer in 12 weeks". It's not just the theory, It's the experience that comes with time and things you realize by making mistakes that make you become something.


You haven't actually read that article have you.


Quoting a self-help talking head here:

"It's not important to get things right/perfect. It's important to get things going"

Congratulations and realize that the nth step in learning is realizing that you can always learn more.


"It's not important to get things right/perfect. It's important to get things going"

Not realizing that fact held me back for years.

When I wanted to learn / do something, I would obsess over finding absolutely the best tutorial / process. Then I would obsess over the right learning environment. Always worrying about the incidentals, and ignoring the essentials.

HN has helped me a lot in this regard. Reading about big companies and how 'imperfectly' they started out, as well as the whole 'Lean Startup' concept has done much to change my mindset. What is important is starting.

Thanks for sharing.


I used to do that too - find the best practices and right ways of doing each new thing I came across in my projects. Although it wasn't efficient, I'm still glad I did, since it's a luxury that I don't as often have time for now as a professional. Having covered a lot of these things when it was still just a hobby has paid off, now that I can use it all again.


Thanks, and I agree. All I know is that I know practically nothing.


I can play a few Megadeth riffs and I've written two very shitty songs. This does not make me a musician or a songwriter. It makes me a dude who can create noises that resemble music.

The OP groks the basics and has learned how to use Django. This does not make him a programmer. It makes him a dude who can create code that resembles a program.


Sure, but if you were currently paid to make music then I think people would consider you a musician. You might be a shitty musician, an inexperienced musician, or whatever, but if you actually made your living doing it then I don't think that people would begrudge you the title.


People would say that he's more of an entertainer than a musician. This sort of debate also occurs in musician circles.


A musician is someone who can communicate to other people via musical instruments. You are a musician, you just might not be a very good one.

Similarly a songwriter is someone who creates songs, so you are a songwriter, you just might not be a good one.


The only thing that I can really communicate via a musical instrument is that it's a good thing I'm a programmer.


Hahaha, yeah that's why you aren't a very good musician yet. I think it's important to make a distinction though because it removes forms of elitism and encourages a friendly environment. People don't learn from "You can't play Flight of the Bumblebee on guitar therefore you aren't a real musician.", rather they learn from observing and participating.


I'm sure the work ethic gained from 10 years in the USMC helped


Let's not confuse correlation with causation; I once looked around for studies showing experimental interventions which actually increased work ethic (specifically, I was looking for studies on the Big Five construct 'Conscientiousness') and didn't find any.

So, I'm sure the work ethic that let him join and last 10 years in the USMC helped.


Lets not confuse an absence of evidence as an evidence of absence - just because there's no study yet that shows that 10 years in the USMC helps with work ethic, doesn't mean that 10 year in the USMC does NOT help with work ethic (unless you mean to say in your survey of the lit. you found something claiming the opposite of the op's claim).

That said, I'm inclined to agree with your last statement...


Well, in general terms, if the USMC (or the Army, or the Navy, or...) really did build up work ethic - a personality trait that correlates quite a bit with income - why do veterans seem to do so poorly, even veterans who never experience the confound of war? Because personality traits are, like IQ, very tough to alter. (This is why that psilocybin-increases-Openness study got so much play.)


>> why do veterans seem to do so poorly

What are you saying that we do poorly at?

Your comments are more "confounding" to me than any war situation I was ever in.


You do poorly at kicking ass & making bank in civilian life. This is a tricky subject, of course (any statistics from 2001 and on are basically worthless because all the suicides and whatnot from Iraq & Afghanistan trash the data), and there are all sorts of correlation/causation problems (maybe the people who join would do poorly in the first place - these days, most of the graduating class of Harvard heads to Wall Street and not officer training).

But if you have any citations to the contrary - that veterans do better than one would predict from their pre-military life - I'd be glad to hear them. Conscientiousness is as important as IQ, and any intervention which genuinely improves either is really valuable and ought to be well known.


Don't confuse work ethic with motivation. I know a number of successful veterans who are kicking ass and making bank in civilian life. I also know a ton who are just 'retired' and enjoying their low-key life with friends and family.

You can't switch from studies and causation/correlation to just stating without citation that they suck at kicking ass.


You should know that absence of evidence actually is evidence (though not always very strong evidence) of absence:

http://lesswrong.com/lw/ih/absence_of_evidence_is_evidence_o...


How about being a single parent too. Regardless, all commendable.


Yeah. I have to say that work ethic here seems to be far more instrumental in his progress over and above anything else


I absolutely admire you.

There are so many people in this world who pretend that something is preventing them from learning or doing something and you went out just did it.

You may (or may not) be the best engineer in the world, but I'd hire you in a hot second just because you have the tenacity to make it your mission to figure something out. Sometimes, 90% of writing code is just sticking with a problem until you get it.

I've given 100's of interviews to people who are either fresh out of school or have been programming for a while now. The vast majority of these people have no gumption to actually create a github account or do any sort of experiments outside of what tasks they are given at work. It is very sad to me that most of these people just want to collect a paycheck.

The learning never stops, keep it up.


What I think is great is that he learned enough to get an 'in' in a relatively short time. Obviously getting from knowing some Python and being able to work with Django to being a master developer will take years, but it is so much easier to do that if you already have a fulltime programming job.

If you're trying to learn all the skills that a great developer needs in your free time, you'll realistically be able to spend no more than 4-5 hours a day at it over any sustained period. If your fulltime job is software development, even if it isn't hardcore by HN standards, then you will grow your skills so much faster.


Credit to you for sticking with it for 12 weeks and being successful.

I had been attempting to learn how to program (Ruby) for the past 6 months (from a ZERO programming background) and in the beginning I honestly could not do more than one week learning 'intensively' before I had to take a break to let all the new concepts and information settle in.

Perhaps it's just my style but I've found learning a little bit everyday is more effective in the long run than cramming it into a condensed period of time. It's surprising how you can take a break from a piece of code and have everything come together when you look at it again.

That said, learning how to program in 'X weeks' sounds great and I wish I could have done it!


I am so envious (when I read stuff like that) - I have been plodding along for 30 years now and am still learning how to program :(


Sorry if you got the impression somehow that I don't think I'm still learning to be a better programmer, just like you.


:) Thanks man - all the best for your future.


The hardest part to that for me is the "get to know people" part. He already had a mentor before he started learning. How would one get a mentor in the first place? How do you get to know other people?


To be fair, the friend/mentor in question started out as a dude on a small private forum I used to frequent. The forum had an AIM chatroom and he made fun of me mercilessly me for years for making stupid decisions.

Go to meetups and lurk IRL IMO. Just start small conversations. Say hi, ask what someone's working on, what the program is they have open, if they read HN or Reddit or whatever. Let them know you admire their work and ask for help.


I highly recommend the O'Reilly School of Technology courses on Python if you are looking to learn Python. They are self-paced, reasonably priced, and provide some great tips on best practices. And the ability to have someone actual give you feedback and test you I find helps me keep moving forward learning to program.


As far as I'm concerned, you can become a programmer in 12 hours. That's easily enough time to learn enough Python so you could start writing programs that satisfy your own needs, if they were simple enough.

Of course, there is no upper limit to how good a programmer you can become. We can only (maybe) set lower limits.


I'll share my story here. I graduated with a non-CS degree and zero programming experience. It took me about 3 months to land my first programming gig (freelance), then an internship a few months later, and now I'm a junior developer at a great hedge fund.

I'll point out that I optimized for getting a full-time job as fast as I could. I have college loans to pay off, so I couldn't afford to spend months learning CS thoroughly. I learned enough to get past interviews, and focused the rest of my time on other high ROI things like networking/coding projects. Critically, I now have the luxury of having an income, and have both my day job and side projects to fuel my learning of the finer details.


>I put myself in a position where I had no room to be lazy or complacent. I think above all else that made me work 10x harder. I didn't play video games, I didn't watch TV, I didn't sleep all day. All I did all day every day was code, hack, program and develop.

That's the great thing to do. Just shutdown the door to outside world and focus on things in hand.I have done that once.Would love to do it again.(Past experience http://giis.co.in/LFY.png )


Learn a language, not a web framework for god's sake.

Learning frameworks is harder than learning programming languages, IMO, especially after you lean one language. You should learn both.


Yeah of course it's harder, because it's built on top of a platform you don't understand. It's easier to make good design decisions in Python if you come from a background rich with C experience, right? Because you understand what's going on under the hood. Without that experience -- like me -- you just fumble around like a big stupid klutz until you realize one day that you need to learn the lower level stuff.

So naturally when you're talking about dealing with an abstraction layer built on another abstraction layer it's going to be even hard to understand. That's why I say don't learn the framework. Learn the language, the concepts, the principles. It will make understanding the complexities easier to untangle.


Though I tend to agree with you, I think it goes both ways depending on how restrictive your framework is (and whether or not you work well with restrictions).


Then he didn't become a programmer. He became Django programmer.


He learned some Python, Django, HTML, CSS, Javascript and wrote programs. Can "programmer" not encompass both people getting their feet wet and 20 years experience mastering multiple languages?


He hasn't made any hard choices, he just picked what is most available and put the pieces together.

Frankly he'd have bought me if he made his hands dirty with some obscure 8bit assembler. There he'd have to really THINK his way out.

At least some sweat during rolling his own data structures and algos around them would make him something in a shape of a programmer, but not this.

Of course what he's done is cool, learning anything new is worth some pat on the back. But this is a newsfeed on hacking, and Lords, it ain't hacking. Let's call things what they are, ok?

There's also the problem that some people like him start calling themselves programmers on the job market and when we're trying to hire them, they occur to be only Django programmers with very limited abilities. Practice makes perfect, but they didn't do it yet. Have some interviewing experiences like that. Not funny.


[deleted]


Are you confusing Hacker News with Reddit? (for context, below is mattdeboard's deleted comment)

"Well, thankfully, I didn't write this for you. I wrote it for the people -- I suspect the vast, vast, vast majority of the HN readership -- who are not expert programmers, or even professional programmers, but they want to be."


As a veteran mainframe programmer who is in the process of being outsourced, thank you mattdeboard. Your post was inspiring.


Comments and attitudes like these are what makes HN much more like Reddit than it once was.


Hacking is not a well defined word and you obviously subscribe to a different definition than I do.

If he had started with some 8bit assembler I would simply think that he has a very poor approach towards learning.


What load of bull. What separates a 'programmer' from a 'Django programmer'? I can't think of any way to make that distinction that isn't logically self-defeating.


A programmer is language agnostic and has a deep understanding of both algorithms and computation. I find the term para-programmer to be an apt description of anyone else.

Why is this on the front page btw? Aren't we all hackers here? What makes this news?


Maybe a grad student has those things ( ;) ), but once you realise computers aren't the hard part about building software, you realise that there are a whole host of skills you need to be a successful programmer, that have nothing to do with algorithms or computation.

If all you have is a strong understanding of algorithms and computation... your just a computer geek. Doesn't make you a good 'programmer' (in the sense that you can produce something someone wants).


> If all you have is a strong understanding of algorithms and computation... your just a computer geek. Doesn't make you a good 'programmer' (in the sense that you can produce something someone wants).

I think y'all are all using different terms (and I notice the parts-of-HN undercurrent of "technical skills don't matter, you need to be social and build products, startup pivot founder startup" but I digress).

To me, someone who can use algorithms et al is a "programmer", which is largely orthogonal to being able to produce something someone wants, call them a developer or something. Not every programmer has to be social client facing; getting detailed functional specs and creating good code to fulfill those specs absolutely does make one a programmer.


What a ridiculous point. If you don't have such understanding, you're just copypasting someone else's instructions.


You are misinterpreting what I'm saying. Read it with a little less cynicism.


Well, I agree we probably were saying the same things using different words, as jarek put it, thus the misunderstanding.


Huh? A good "programmer" is a good problem solver. You can't be a good problem solver if you don't have a conceptual understanding of algorithms or have any notion of what it means for a problem to be "hard".


Why do you need algorithms to be a good problem solver? Must of sucked to solve problems before the 60s given there were no good problem solvers :(

In fact, how did mathematics and physics even develop at all before then, without knowing what was hard, or how to solve problems.

Seriously, a lot of software doesn't require complex algorithms, sure there is a subset that does and that's cool. But saying someone isn't a programmer because they don't have a deep understanding of computation and algorithms is disregarding a large population of quality programmers.


While some here would probably see you as just a glue coder who lacks true understanding, I at least want to applaud you.

You've established a beach head in the realm of coding; all the fancy understanding of eg recursive combinators, malloc() optimization, JOIN semantics, inheritance vs composition, etc, will come later.

Come on, we all started in PHP or QBasic. It took most of us years to become sweet ass code ninjas. What this guy has done is impressive.


You can certainly be a programmer in 12 weeks, but you will be different programmer than what we are expecting here.

You can also learn programming by reading 'Learn programming in 30 days'. But that is a very different kind of programming than what most people are expecting in this thread. You can learn enough programming to begin to understand how to work with software. It gives you a start. It also works if your job is extremely trivial. And I think the target audience for the book is those kind of people.

Coming to programming as a profession, in that case there are a lot of aspects that influence your full time profession, among that is giving your full learning every detail of programming and related ecosystem. Other aspects are productivity, management, analytical skills, UI design, requirements gathering, people skills. Also there are many other things required to win in practical software environments like working under tough deadlines, learning to deal with frequent stress and burnout. Keeping in touch with rapidly changing tech scenario, tools and languages. The list goes endless. I haven't covered even a percent of what I wanted to write.

Your regular data structure and algorithm sauce is probably 1% of what is required to win in practical software development today. There are 99% of other things which are not taught in books, colleges and universities. You have to learn them through experience, by working.

So just in case you think you have spent 10 years learning all the secret recipes in computer science books but are not good in other areas. You are no better than the 'Learn programming in 30 days guy'. Because if has problems in a set of areas, you have equal number of problem with another equivalent set.

This is something I have seen among so many bright, people with great academics, who don't make it big in the industry. They just don't understand so many practical aspects of the industry. Just like how 12 weeks programming guy doesn't understand all aspects of practical programming.


No where in his post did he claim to understand all aspects of programming. This guy spent 12 weeks learning the basics, and is now working as a full-time programmer - presumably this is the road to "learn[ing] through experience, by working".


Who are these "we" who has such well defined expectations of what kinds of programmers are allowed to participate here?

The guy sets a goal, works hard to achieve it, and succeeds. Win. More power to him. In fact I rather envy his ability to focus.

He's not even approaching a claim to understanding all the practical aspects of the industry or programming. He is humble and thirsty for more knowledge. He is a beginner, and if you look closely, I think you'll find that we've all been beginners.


I get the point of this post, even if it seems a bit of a tangent from the what the author is saying, but

>>in case you think you have spent 10 years learning all the secret recipes in computer science books but are not good in other areas. You are no better than the 'Learn programming in 30 days guy'.

and

>>Your regular data structure and algorithm sauce is probably 1% of what is required

is just false. Sure, studying classical CS concepts is not all there is to software development and success in the software development industry, but your comment largely renders advanced degrees, like PhDs, about as useful as some poorly written Java book with regard to success as a software engineer.


>>but your comment largely renders advanced degrees, like PhDs, about as useful as some poorly written Java book with regard to success as a software engineer.

I am not saying that at all. All I'm saying is, as programmers we tend to assume knowledge of text books and programming is all that is needed to win. And that if you have it, that is all there is that it takes to win.

This is largely untrue. I have seen that this is hardly what it takes.

It's important to learn the fundamental and concepts, but if you are bad at everything else. In the the practical scenario you and the 12 weeks programming guy will both sail in the same boat. You will be bad at one set of things, and he will be bad at the other.


Textbook-type knowledge of programming (and more specifically, data structures and algorithms) are not all that's required to be successful in this industry, but it's sure a hell of a lot more important than 1% of the whole puzzle.

I can't say much about 12-weeks-programmer guy, but if the only skill that 12-weeks-programmer guy has is the programming skills he's obtained in those 12 weeks and the only skills 10-years-of-pounding-CS-books guy has are the skills he's obtained from those books, I'm going to pick the guys that's been reading all about automata theory to be more successful.

Not that I'm saying that the author is destined to be unsuccessful. I'm just trying to point out that classical CS skills are more important than you're portraying.


I would do the same.

But if I find 12 weeks guy to be more productive than the CS guy.

I will be hiring the 12 weeks guy not the CS guy. I'm hiring people for getting stuff done. Not just because they know something.


Excellent story and impressive discipline. What was your prior experience with computers or technology in general?


Nothing meaningful for programming really. I knew enough about MS Office to be dangerous.


I was a computer geek from way back, had a few BBSes in the late 80s (yes, I'm a child of the 80s & 90s), learned QBasic & VisualBasic back in the day, and tinkered with Python for a few years off and on... mostly off. Other than that, nope.

This ought to be worth something too, though.


From his blog a year ago:

"... have just started back to school for computer science. I’ve been poking clumsily at programming for a few years, but only in the past few months have I actually started to take ideas of my own and successfully bring them to life.

... While I don’t think I can study an algorithm and announce its big Oh complexity, I’m getting there.

... going to school does take time away from my actually programming and self-learning about computer science in general."

Twelve weeks not exactly starting from scratch.


He's talking about the past, not the last 12 weeks. I believe that post a year ago was very much inside the 12 weeks he's talking about.


In the article he says he learned programming from 2/11 to 5/11. I am glad he is successful but clearly his experience is far more than twelve weeks, so it is a bit disingenuous. That is too bad because it is a great story and needed no exaggeration.


Algorithms are not even mentioned.

Data structures are not there either.

Sorry, you're a django coder, not a programmer.


Coder vs. programmer vs. developer vs. system architect

It's not a protected title. However I doubt the guy in the article could write his own OS. Which I can.

Also keep in mind the phases of learning and understanding:

1. I know nothing...this is so hard.

2. I know everything...this is so easy.

3. I know nothing (again), but this time for real since I realized there is so much more to learn.

4. I really, really, really know nothing.

5. Hmm...maybe I might be getting the hang of this.

And in phase 5 other people start calling you a guru. However you'll have no problem finding a job in phase 2.


Very nice. When I first learned Django this year (after a year in Python and several years doing web development) I saw myself as an all-encompassing guru of awesomeness. A few months later I realized how big my knowledge gap is of the framework, and interviews helped me see how much I still have to work on. Easy to feel good on step#2; after that comes the true trial, and they go into cycles. Then you realize you did your 10 years and you still know very little LOL


Those are valid points, but I think they miss the purpose he was driving at. Maybe the title of the article could be different, but that's a minor issue.

Bottomon line: He wanted a job as a developer. He got that job. Success.

You're right though, people do have to learn these other concepts, but first they have to have some money to pay the bills, then they can just knock themselves out learning all about algorithms and data structures.


agreed.


Now lets see if he can keep that job... likely knowing basically nothing about what he is doing.


I know from professional experience that he can go from zero to competent very quickly. He will keep that job exactly as long as he wants to unless the company doesn't know how to manage their resources.


I downvoted you and also flagged your post. This kind of negativity is totally uncalled for.


What part of "I watched 13 lectures of MIT's OpenCourseWare on computer science" means "I learned how to program in nothing but Django"?


I answered the questions people asked. Are you for real?


Have you made money as a result of code you've written? If so, you're a professional programmer. I wouldn't worry about whether you conform to a checklist an arrogant troll (I don't use these words lightly, but check his comment history) wrote on an internet forum. Hats off to you for doing it, especially under so much pressure.


I applaud you for all the things you've achieved, it's pretty commendable ( always like to hear stories about people working hard and getting stuff done ). But the truth is, it wouldn't hurt to go and take the time to re-visit the topics he mentioned and tie up loose ends. It would help your career regardless of what was said here. 2 cents.


What's ridiculous about your comment and rorrr's trollish one is that he probably already has (re-)visited them. He writes that he watched 13 lectures of the MIT intro to computer science OCW class. That definitely touches on data structures and algorithms.


Writing django apps requires the use of algorithms and data structures. He just didn't talk about them.


He became a programmer in 12 weeks, not a Computer Scientist. Get over it, he's being paid to program, he's a programmer.




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

Search: