Live data from Hacker News

Ask HN: Zero programming experience and badly want to learn. Where to start?

news.ycombinator.com

11–20 of 46 posts

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#11
1. If you don't already have familiarity with HTML and CSS, learn those first. I recommend a book called Learning Web Design: http://www.learningwebdesign.com/

It teaches like a math book, with practice problems after each lesson.

2. Pick a language to learn. I had a C++ background that I hadn't touched since high school, so I found Ruby a little confusing. But it may also be because of the teaching style of the books I used...

Anyway, I switched to PHP and learned from Larry Ullman's book, PHP 6 and MySQL 5 (http://www.dmcinsights.com/phpmysql3/)

3. Going through both of these will probably take you 2-3 months if you're diligent. But once you're halfway through the second book, I'd say you know enough to start building something and using the PHP book as a reference.

What you'll find is that as you build things, you will learn a lot more about how to make your app come together.

Also, I disagree with the comment that it takes years to be able to do something decent with your newfound programming knowledge. Yes, it will take years before you can talk shop with the best of them, but as someone who has taken several languages (Spanish, Japanese, Latin) and played several instruments (piano, flute), I know it doesn't have take years to get past doing scales.

That's has more to do with ability to learn quickly and dedication.

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#12
Was it weeks/months/years until you felt comfortable writing an entire Web app with basic functionality?

Comfortable? I don't know. Capable? a few months. Starting to flesh out your ideas? Within 1 month of starting an EARNEST effort to learn what it takes to write web apps.

I was in your shoes about 15 months ago (roughly).

I had ideas and wanted to be at least "sort of" able to flesh them out on my own. I had more than zero exposure to programming, but by most standards not much more. I had recorded and hacked up some VBA macros for work, had no idea what objects in object oriented programming were, and in college I had used Mathematica. I had just started using python and the longest script I had written was less than 100 lines.

I had ideas and I wanted to be able to execute (even poorly).

The general "I can't hack but I want to" theme comes up quote frequently on HN. There are a ton of resources for this. This link by by iamelgringo is the one I first read and it was immensely helpful, partially because it gave me time targets to try to beat. I more or less tried to follow this path.

http://iamelgringo.blogspot.com/2008/05/teach-yourself-you-t...

After you get started though it'll become clear to you what you need to learn and the process will take on a mind of its own.

Other resources from HN:

http://news.ycombinator.com/item?id=190518

http://news.ycombinator.com/item?id=149482

http://news.ycombinator.com/item?id=127952

http://news.ycombinator.com/item?id=123903

http://news.ycombinator.com/item?id=90782

If you're really at absolute ZERO on programming, I've been recommending Zed Shaw's python book:

http://learnpythonthehardway.org/

By lesson 20, you should be concurrently working on iamelgringo's lesson plan.

I am really happy on the python/django side, still awful at CSS, can barely deploy a server right, and use the reference manual all the time for jQuery. What you'll realize is that being comfortable has less to do with being able to sit at a blank terminal and typing than knowing how to traverse the documentation for each project.

People WANT to help you learn. As long as you make some effort to try yourself, hang out in the python, django, jquery rooms and ask questions whenever you need. I still do all the time. Spend 5 earnest minutes each question looking for the answer. If you keep asking questions that are answered by the first google hit, nobody will want to help. But if you're making an effort to self-learn, people will be very sympathetic.

Typing "terminal" above also just reminded be that learning to use linux and vim was an entirely separate battle. The process is the same. You'll keep hitting tasks you don't know how to accomplish. Google it and ask someone. I still suck with both, and I'm still learning.

Its a tough battle, I definitely recommend you reach out to people in your city, find startups and say "hey I suck, want a free intern?" (I did this). Try to sit in the same room as them once a week and hack. Having an immediate resources available to answer questions verbally is huge.

You don't have to "know" how to do all that stuff to be able to write apps quickly, you need to know where to find all the information.

I'm probably slow by most people's standards here, but less than a year after I started I felt comfortable with deploying a small weekend project. For the first 3 months, I was hacking 60+ hours a week, not because I felt like I should, but because once you start learning, you realize how much you still need to learn and you get obsessed. There's a sick satisfaction to banging on your terminal and watching your vision come to life, little by little. Every month you'll look back at your code and want to vomit. This is a good sign (I think?). Don't worry about memorizing anything, just worry about doing it more and more. The things that you look up a lot will stick and your production efficiency will improve.

Last week I spent 60 hours to produce a crappy MVP of a project I"m working on, roughly 2300 lines of code. I was on IRC the whole time asking questions.

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#13
Start with more basic tasks like script automation and you'll be able to work your way up. I went like this (if its any help):

HTML, IT-Basic, Visual Basic, C++, Java, C, PHP, Ruby.

Of course there's small pieces of python, shell, more Javascript than I'd want to admit, and a couple of others.

But I first started writing HTML. This helps because it makes you think technically at multiple levels. First what you want to do (the goal), then the language needed (HTML), and why what you wrote (HTML) isn't what you want (the goal). Trial and error will get you into a program's mind.

Then I ended up using TI-Basic to program every math problem I would have to solve in high school into menu-based programs for tests.

Then I started writing VB programs (hangman, calculators) and even wrote a fully animated GDI game. It was slow, the VB code was absolutely terrible. Which moved me into C++ / DirectX for making games... etc.

So mainly, start with something small and consumable. Once you can eat that, hopping to the next, bigger problem seems smaller from where you are?

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#14
I've been programming for probably 17 years, since high school, and just recently I appreciated JavaScript. For all its shortcomings, it's beautiful. If you'd just understand it, you would be able to easily understand other languages, dynamic or otherwise.

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#15
Don't think of it as learning a language. You will never be able to learn everything.

Best way is to pick a project. Any simple small project to begin with. And start implementing it.

Dont worry about anything (optimization and all stuff) as far as you are getting results.

If you are not able to find any Simple project, just try to implement a To-do list.

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#16
I understand the common HN view for just jumping in and trying to build stuff. Nevertheless, I wonder when would you consider a good time to attack some more complex stuff (e.g. SICP, PAIP, K&R, etc)?

I guess it is the kind of thing you don't miss, until you go through them and really see what you're missing.

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#17
I'd start much simpler than any of the full-on backend languages mentioned like Ruby, Python, Java, etc.

Get the very basics down - it will be fast and easy and you'll feel good you are making progress. HTML and CSS - don't get bogged down in HTML5 or any latest cutting edge thing or another. Just the core for now.

Once you've got this down, which really is pretty simple stuff, I'd go into jQuery and Javascript. Both are fairly easy to approach though deceptively so maybe, with a ton of upside; and with the push that NodeJS is making, that may be all the programming you need even for the backend.

I don't have any good rec's on learning HTML but google it, there's a ton out there.

CSS I'd do the same, though I also really like CSS - The Missing Manual by McFarland.

For Javascript you'll be hearing a lot of Javascript - The Good Parts by Douglas Crockford, a must read if you are serious.

And jQuery, honestly is so fun/powerful/addictive, if you get a big of Javascript down you will be off and running. There are countless tutorial websites on jQuery and more books coming everyday. Bookwise it's hard to rec right now as the new version of jQuery just dropped today and everything is a bit out of date as it stands.

Bottom line, don't get caught up in trying to learn too much to begin with. Also, good UI Coders are hard to come by and you can always find a Rails/Python/back-end guy to help out until you get that stuff down too.

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#18
post #16

I understand the common HN view for just jumping in and trying to build stuff. Nevertheless, I wonder when would you consider a good time to attack some more complex stuff (e.g. SICP, PAIP, K&R, etc)? I guess it is the kind of thing you don't miss, until you go through them and really see what you're missing.

When your mental model of how a computer work is such that you know what each of the statements in your current language does, you understand how they fit together and you want to know what could go on under them.

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#19
post #16

I understand the common HN view for just jumping in and trying to build stuff. Nevertheless, I wonder when would you consider a good time to attack some more complex stuff (e.g. SICP, PAIP, K&R, etc)? I guess it is the kind of thing you don't miss, until you go through them and really see what you're missing.

They should probably have simple programming experience (say, basic Python) first, otherwise they won't have enough context to know "SICP" from "PAIP". That's just a bunch of acronyms.

SICP - _Structure and Interpretation of Computer Programs_ by Abelson, Sussman, and Sussman (http://mitpress.mit.edu/sicp/). Free online. Probably one of the best computer science books. It doesn't cover web programming, but if you know your programming fundamentals and theory well, you'll be in a good position to pick up whatever else comes along after current web programming techniques become unrecognizable. (The code is in Scheme, a Lisp dialect.) Do the exercises. Seriously - do the exercises. And yes, some of them are difficult.

PAIP - _Paradigms in Artificial Intelligence Programming - Case Studies in Common Lisp_ by Peter Norvig. This could very well have been three or four separate books. It has case studies of historical AI projects, chapters on learning / optimizing / implementing Lisp, chapters on search problems and logic programming, etc. Highly recommended, but I would wait on this one until you're proficient in at least two unrelated languages.

K&R - "Kernighan & Ritchie", aka. _The C Programming Language_. This is the book on learning C. Short, concise, informative. Your programming will benefit considerably by learning C (you'll be able to access low-level OS features, esp. on Unix, and it gives a good mental model for the lower-level stuff going on). If you like C and are comfortable with the exercises in K&R, then get _C Interfaces and Implementations_ by David Hanson - it covers practical library / API design, by way of a guided tour through several of the author's freely available libraries.

Also recommended:

_The Practice of Programming_ by Kernighan and Pike - Concise, practical advice about the programming skillset not specific to any one language: debugging techniques, how to write clean code, testing, rules of thumb for performance tuning, etc.

CTM, _Concepts, Techniques, and Models of Computer Programming_ by Van Roy and Haridi (http://www.info.ucl.ac.be/~pvr/book.html). This book is about the fundamental models different programming languages are based on, and how they complement each other. The writing is lucid and accessible, and covers many things (constraint programming, for example) that similar texts never get to.

Re: Ask HN: Zero programming experience and badly want to learn. Where to start?

#20
I was in the same position as you a few months ago. I had an idea for YComb!, and I didn't know any technical guys well enough to be a technical co-founder, so I decided I was going to be the technical co-founder.

I would recommend picking up SAMS Teach Yourself HTML and CSS in 24 Hours: http://www.amazon.com/Sams-Teach-Yourself-Hours-Coverage/dp/... and O'Reilly's Learning PHP, MySQL, and Javascript: http://www.amazon.com/Learning-MySQL-JavaScript-Step---Step/...

Do the SAMS guide first, then O'Reilly. Do the examples, do the examples, do the examples. That's the most important part. Even if you only have a few spare hours per day, you can get through 3-4 chapters of HTML/CSS, but I would recommend only doing one chapter of the O'Reilly book a day, since it's a bit more to learn than the SAMS book. So, it should take you about 3 weeks to work through both of those, and have at least a competent grasp on web dev. From there you can probably make your own decisions about where you want to go from there.

Post reply on HN