Live data from Hacker News

How can I learn to program?

news.ycombinator.com

41–50 of 77 posts

Re: How can I learn to program?

#41
post #37

The best way to learn programming conceptually is to read Structure and Interpretation of Computer Programs, by Abelson and Sussman. The book is available free on-line, along with video lectures. - http://mitpress.mit.edu/sicp/ - http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma... Once you have mastered this material, learning the specialization of web development shouldn't take more than a week or two of…

It's such a great book and I basically agree with everything you said, but I feel I should add a little caveat.

SICP is truly a masterpiece, but it might not be the best book for someone just starting out who wants to do productive stuff like prototype web apps. Peter Norvig wrote in his review, "I agree that the book's odds of success are better if you read it after having some experience" and I think I agree too, although I'm biased since I only read it after getting a degree in CS. I don't know how I would have felt if I'd read it as a freshman.

Felleisen et al argue that SICP isn't the best intro in their "The Structure and Interpretation of the Computer Science Curriculum" and although I haven't read the whole thing, I think I agree that How to Design Programs might be a better first book. It's certainly easier going, and you couldn't ask for a better environment than DrRacket to get started. And it's also freely available online.

1st ed: http://www.htdp.org/

draft of 2nd: http://www.ccs.neu.edu/home/matthias/HtDP2e/

Re: How can I learn to program?

#42

A friend of mine is in the same boat. I forwarded him all the usual suspects, from "Why's Poignant Guide to Ruby", to "Learn Python the Hard Way", to "The Schemer's Guide". But none quite worked for him. He finally found and settled on Harvard's intro CS course, CS50: https://www.cs50.net/

What about e-75 "Building Dynamic Websites"? http://cs75.tv/2010/fall/

I'm in the same boat as the person that posted the original message but I'm currently doing Rails for Zombies (free in-browser interactive course) after first doing tryruby.org (free interactive introduction).

Re: How can I learn to program?

#43
post #34

Solve a specific real-world problem you have by writing a program to do it. Start with Python or Ruby. Start on one platform (Windows, Mac, Linux). Start small and get bigger by solving bigger problems as you progress. Then, write a program that works on all major platforms with little or no modifications. Learn C++ or C. Learn how to use a debugger, how to distribute code to end-users, etc. While doing this, learn d…

+1 for actually answering the "how to learn" question rather than the "what should I learn question".

To your comment "Solve a specific real-world problem" I would say +1, but add that you should start by trying to solve the smallest possible specific real-world problem that will create some sort of value for your customers.

And before you start, describe that problem using a testing tool like Cucumber (cukes.info). This will ensure that all your early coding and learning is completely focused on solving that one small problem.

Keeping reading, Googling and experimenting until you find you can write enough code to solve that small customer problem. Then set your sights on a slightly larger customer problem.

As for tools, I like and recommend Ruby on the Mac but there are a number of options that seem to have lots of community support and free tutorials, including Python and Perl, whether on the Mac or Linux.

Re: How can I learn to program?

#45
Hello Rocamboleh, what route you need to take to learn programming skills depends entirely on what kind of business you intend to start. Programming is a big field and has a lot of different technologies in it to pick from.

While espeed gave you good advice for how to setup your own server and all the tools needed for a Linux-based web application, this isn't necessarily the best route for you to go. If your software is intended to run in a big corporation, for example, then you should probably consider learning either the Microsoft technologies or the Java Enterprise technologies. If instead you're going to be working on iPhone/iPad or Android devices, then you will need a different tool set. There are a number of other alternatives you could pursue, as well. The answer really depends on what kind of startup software you need/want.

If I can help you further, please send me an email (address is in my profile) and I will be happy to try. Good luck with your endeavors.

Re: How can I learn to program?

#46
post #35
post #10

Set up a Linux computer (Ubuntu Linux is the easiest to set up), and spend the summer learning to program in Python. Here are some of the best online Python tutorials, including a link to videos and course material for MIT's introductory computer science course, which uses Python: http://www.quora.com/How-can-I-learn-to-program-in-Python/an... Build something that you want to use so it will be meaningful to you. Do y…

I agree with most of your points, except... Use gedit as your text editor. It's the default GUI text editor in the Ubuntu operating system, and works well enough for programming, and is significantly easier than Emacs for someone just starting out programming. I'd also suggest MySQL instead of PostgreSQL, for the same reasons (works well enough, significantly easier for beginners).

Postgres is no harder than MySQL, except maybe to set up; plus, postgres wont bite you in the ass down the road due to the plethora of reasons that make MySQL a pretty lame solution these days.

On the other hand, MBA types will have heard of MySQL -- that might be an advantage, of a sort.

Re: How can I learn to program?

#47
Here's how I am doing it: Grab an open-source program (in a space that interests you), figure out how to get it running, then mess with it. Keep changing it and messing with it.

After time, you will begin to understand more, and gain confidence. Just keep at it. Don't stop pursuing your business interests, etc, but just code code code. Best of luck!

Re: How can I learn to program?

#48
Don't start programming at all. I am going to be brutally honest, programming is not for everyone. The fact you stated you want to start programming and you're entrepreneur is a flag for 'someone who wants to learn to program in order to become some millionaire'. These sorts of people are not successful in the field. Worse, we have bad enough people in CS already don't poison the pool with even more people who bring nothing to the software table.

Re: How can I learn to program?

#49
post #37

The best way to learn programming conceptually is to read Structure and Interpretation of Computer Programs, by Abelson and Sussman. The book is available free on-line, along with video lectures. - http://mitpress.mit.edu/sicp/ - http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma... Once you have mastered this material, learning the specialization of web development shouldn't take more than a week or two of…

I would advise AGAINST diving into SICP until you are familiar with turning text into a program with at least loops, conditionals, and basic functions.

Re: How can I learn to program?

#50
post #22

If you're starting from the very beginning, learn a good text editor. (Editing is such a huge part of programming and has so many other payoffs that it is a very good first step.) Use a forgiving and simple language like Python, and ideally an operating system where the tools you need are already installed. Learn the documentation systems for your language of choice. For instance, in Python, you can go to http://www.…

Also, get a mentor, and some like minded people to share code reviews with. And not only write code, but also read code. And debugging is actually a more useful skill than writing new code, and comes in handy far more often. It also tends to be more painful. But where there's mud, there's brass.

On top of that find some local user groups that use your language of choice, they are normally very welcoming of new programmers. If you are friendly and want to learn, you will surely find some people willing to give you advice and point you in the right direction.
Post reply on HN