4 ms·
What is your recommended beginner's hacker training course?
- CYCY 20y agoWhat is the fastest way to learn "hacking" to a reasonable level such that you can apply for YC? Of course, you need a product/idea to apply, but what will be the fastest way to acquire the necessary skill such that you can build a reasonably good product / to actualize your idea? Finding a hacker co-founder is a shortcut but it is not considered an answer here. I want to have a full schedule, e.g. firstly read this book, finish all the exercise in it, then secondly you read a certain website, and so on, etc. Of course there will be no limit to learn, but I am asking for a minimum requirement. Something like a curriculum.
- mpresh 20y agoI would recommend the classic book Structure and Interpretation of Computer Languages. Its available for free online. It is the book taught at MIT. I do want to say it's not easy after the first couple of chapters. The videos are available online as well. But this is a great way to start.
- mpresh 20y agoanother one is actually http://www.htdp.org/ http://www.htdp.org/ by Mathias Felleisen from Northeastern University. Also a great way to learn to program the right way.
- prafulmathur 20y agoProfessor Felleisen is an amazing professor, I had him for the fall semester for "Fundamentals of CS 1" and he really pushed you. Then his higher level course, "Software Development", I hear that he radically changes the requirements at the last minute. I guess that's to help you learn how to design a solid program in the beginning and then be able to easily change it down the road. It's supposed to be more like the "real world" (but I'm not quite sure when I'll get there).
- jaf656s 20y agoFor those that don't want to google it, http://mitpress.mit.edu/sicp/full-text/book/book.html http://mitpress.mit.edu/sicp/full-text/book/book.html
- bootload 20y ago'... What is the fastest way to learn "hacking" to a reasonable level such that you can apply for YC? ...' How smart are you? How hard are you willing to learn? Try reading 'How To Become A Hacker' by Eric Raymond for a start ~ http://www.catb.org/~esr/faqs/hacker-howto.html http://www.catb.org/~esr/faqs/hacker-howto.html There are others but this is a good start.
- timg 20y agoYour acceptance is based entirely on your idea (even though ideas are worth "nothing," heh) and your past projects. So learn some lisp to score brownie points and outsource a resume-filler project of your design to some cheep foreigners. You'll be ready to go. As for hacking in general. The only way to learn is to create real programs. Books are a very small part of learning. I wouldn't recommend any. Oh and don't tell the YC guys that you are hardly a hacker. They wont like that.
- SwellJoe 20y agoAs for not telling the YC guys...they'll notice. You won't have to tell them. Ideas don't matter (except to show that you're thinking hard about solving a real problem for someone). You want to have a working demo to show them.
- timg 20y agoheh. Was joking. Still, I think that toying around with other's code in order to make it do something new is an excellent and fun way to learn a new language. SwellJoe: Nice comment at the top of this page, most agreeable one here.
- litepost 20y agothe bogus elitism in this community is truly astounding, symptoms of a deeply-held inferiority complex
- SwellJoe 20y agoCould you clarify how that relates to the parent? (The parent was wrong on at least two counts, but not due to bogus elitism that I could detect.)
- litepost 19y ago"Oh and don't tell the YC guys that you are hardly a hacker. They wont like that." The definition of "hacker" is somewhat arbitrary but is nonetheless given inflated status by the majority of this community, it seems. (I could be mistaken, of course.)
- davidw 20y agoStart with a Commodore 64 in the early 80ies, then keep programming and learning. Lacking a time machine, I think open source is the best way to learn and get involved with something. Pick a real project that utilizes some of the technology you'd like to use, and try and dig in - fix bugs, add features, and so on.
- abstractbill 20y agoI'd start with the video lectures of SICP: http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/ http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/ After that you'd probably want to learn some web stuff like html, css and javascript. You can pick these up by looking at the sources of other peoples' pages, and by using w3schools: http://www.w3schools.com/ http://www.w3schools.com/ Good luck!
- busy_beaver 20y agoAs a second source (it's sometimes helpful to hear material from more than one perspective), UC Berkeley has some podcasts from a Scheme course which uses SICP: http://webcast.berkeley.edu/course_details.php?seriesid=1906978270 http://webcast.berkeley.edu/course_details.php?seriesid=1906978270 I listened to a few of them a while back, just to check them out. Not bad, if you can ignore the lecturer's occasional side-trip into politics (well, it IS Berkeley).
- SwellJoe 20y agoArs Digita Univeristy is roughly the first year MIT computer science coursework free online. It has yet another version of SICP, plus several other useful bits. The videos can be had on DVD for $75 or downloaded (recommended donation $0.25 per video). The turnaround on the DVD is a bit slow, though. Took me about three weeks to get mine (I don't mind, but you asked for "fastest" and that would slow you down).
- jwecker 20y agoGreat suggestion. I would add (and this is if you want to become a hacker, not a code monkey or script kiddie or whatever else), The Little Schemer, and then something functional- I'd recommend a book that's not even published yet, http://pragmaticprogrammer.com/titles/jaerlang/index.html http://pragmaticprogrammer.com/titles/jaerlang/index.html
- omouse 20y agoPick a language and start learning. I recommend Python instead of Ruby only because I use it. The Python website has a good list of tutorials for non-programmers (http://wiki.python.org/moin/BeginnersGuide/NonProgrammers) http://wiki.python.org/moin/BeginnersGuide/NonProgrammers) and for programmers (http://wiki.python.org/moin/BeginnersGuide/Programmers) http://wiki.python.org/moin/BeginnersGuide/Programmers) The book Learning Python from O'Reilly is really good.
- Tichy 20y agoLearning by doing is the only way in my opinion. You could start with (X)HTML - think about something you could make a web page about, for example a homepage for your grandmother. Then start thinking about some dynamic content to add to the web page, for example a guestbook (for the server programming route), or fancy animations in JavaScript or Flash. Try to find your way by reading tutorials on the web. The thing about programming/hacking is that it is not a fixed set of skills. Rather, first you think about what you want to achieve, then you start researching on how to do it. There is never an end to it, therefore just reading a book doesn't cut it. You might be a versatile Perl programmer, but suddenly you'll find that you want Ajax in your next web application, so you learn about that.
- ced 20y agoNorvig: Teach yourself programming in ten years http://norvig.com/21-days.html http://norvig.com/21-days.html
- BrandonM 20y agoBasically, the way I learned it was something like: 1. Begin administering a message board and discover the need to learn HTML in order to avoid using the god-awful Microsoft Frontpage (awful in terms of generating unnecessary complexity). 2. Learn Java because I've always been interested in programming and it seems like a "hot" language. 3. Learn Javascript to make some elements of my webpages a little bit dynamic (on the client side, at least). 4. Begin a Computer Science major. The truth is that I really did not learn much from the class content itself, but from the projects we had to do, projects which involved a lot of independent work. So find some programming problem that seems interesting and program it in C/C++ (at least that's what I did :-). 5. Discover Lisp, code in Lisp, learn Lisp, vow to use nothing but Lisp (and maybe some Python) ever again. 6. Work for a company that uses nothing but a Unix environment (FreeBSD), and spend the summer upgrading to a new server. This involves looking at plenty of open source code in order to find out what's going on and why nothing is working right. Discover a loathing for PHP. 7. Install Linux at home. Learn Perl, and shell. Realize the amazing power of commands like find, xargs, and 'perl -e ...'. Note the convenience of having gcc and interpreters for Perl, Python, and Lisp at your fingertips. 8. Get started. The sooner you start programming, the sooner you will find yourself searching Google to figure out how to do x in language y. There is no easy road to hacking... you have to take the Nike approach. ("Just do it." Is that even their slogan anymore?) Looking back, you could certainly avoid step 2. Step 4 is largely unnecessary as well, except that being forced to do projects is a good motivator to get you programming when you first start. If you can find your own motivation, then a CS major is not really much help. Step 5 is optional, but you should definitely learn something beyond the standard C/C++/Java that most people get stuck with. Step 6 was a great experience for me, coming from a strictly Windows environment, but skipping straight to Step 7 wouldn't hurt too much. I'm not trying to be a Linux zealot here, but open source, Unix-based platforms teach you a completely different way of thinking (problem-solution based) than the Windows mindset, and I think it's closer to the manner of thinking employed by your typical hacker. Step 8 is the most important. Get started. Don't look for someone else to do your work for you. There is no substitute for hard work, so find something that interests you and start programming it in the language of your choice. If you only want to learn hacking in order to apply for YC, then you have already written yourself off as a non-hacker. Hacking is a means to an end in some ways, but not to that extent.
- JohnN 20y agoDo you want to be a "hacker" or do you just wanna be able to build web apps. i dont think they are the same thing. I am not a hacker but I am learning to build Web Apps. For example I dont need to know how to build enterprise wide software. I spoke to a few friends of mine who can "hack". I said I wanna be able to build web apps they said learn the following and I am. 1. (X)HTML and CSS 2. A tiny bit of Javascript 3. PHP 4. MySQL 5. learn stuff on linux and servers 6. After that i am on my own, I figure I will learn Ruby on Rails after that. Ive given myself until January 2008 to be pretty good at 1-5. Lets see how it goes.
- Tichy 20y agoWhy learn PHP if you are going to learn RoR anyway? I think you could take a shortcut to RoR.
- SwellJoe 20y agoAs others have said, start writing code, immediately. I mean right now. Like, this second. Stop reading right here. Open a programming tutorial website and start coding. I mentioned ADUni above. It's a great way to spend part of your first six months of learning. I've been a hacker since I was eight (I went the Commodore 64 route someone else mentioned starting in 1981, but I don't recommend that path for anyone...Open Source and modern languages provide a far better learning experience...hell, I didn't see C until I got an Amiga in '88 and didn't see Scheme until I started using Linux in '95...there's never been a better time to learn software development), and I still found several things to learn from the coursework. Find and download an Open Source project that does something you find interesting, and figure it out. Add a feature. A small one. Get it accepted by the developers. This will teach you a lot of skills you absolutely must have that aren't "programming": Revision control (because you'll need to work on the SVN or CVS or bzr or monotone version of the software in question), making patches (use "diff -u" for single-file changes or "diff -uNr" for whole directory changes), and communicating with other developers (you need a co-founder who is a stronger hacker than you, and you need for him or her to not be infuriated by the way you communicate with them...Open Source folks are generally happy to help if you're doing something useful for their project). Notice I haven't mentioned any languages here. They're not irrelevant, but close to it. Some languages are better learning languages than others (Python, Ruby, PLT Scheme, which are all interactive and very clean), but if you can't see how to get started making something useful (almost) right away due to language choice, pick something else. All of the stuff you learn in the next few weeks is going to apply equally to pretty much all languages. If you do SICP, plus start working on some open source project (maybe in Ruby, Python, Perl, or PHP), you'll get to the meaty stuff right away. Avoid hard problems (for now). Don't learn Java (you might make an exception for the ADUni Java courses--they teach programming and it just happens to use Java as the language, but it's way too easy to get mired in the minutiae of Java). Don't learn C. Don't learn Common Lisp. Don't learn edge cases in Perl or PHP (just the ones used in the Open Source projects you've picked to work on). Don't get bogged down reading standards documentation. Do learn good tools. vim, emacs, or Eclipse. If you use a Mac, maybe TextMate. There is no other editor you should waste your time on, if you're in a hurry. Later on, you can flit between some of the others, if you feel dissatisfied with what you've landed on. Learn to use the UNIX command line tools, as you need them when you need them, to make yourself more productive. If ever you find yourself wishing there were an automated way to do something to several files (and you will), just remember that there is a UNIX tool that can do that for you (maybe sed, maybe awk, maybe perl, maybe grep, maybe diff, maybe patch), and set out to find what it is and how to use it. (Not using UNIX? mingw or Cygwin can help.) Let me re-iterate something...if you're in a hurry, you must write a few lines of code today. Writing code is the single most useful thing you can do in learning to code. Oh, yeah, for JavaScript, you cannot beat Douglas Crockford's awe-inspiring JavaScript videos at the Yahoo Developer Network.
- coolnewtoy 20y agohttp://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-171Fall2003/CourseHome/index.htm http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-171Fall2003/CourseHome/index.htm Philip Greenspun described this course as "how to build Amazon.com all by yourself" the textbook is available on amazon here: http://www.amazon.com/exec/obidos/ASIN/0262511916/pgreenspun-20 http://www.amazon.com/exec/obidos/ASIN/0262511916/pgreenspun-20 The curriculum is not language specific so you'll also need a book on Lisp, Ruby-on-Rails, IIS/ASP.NET, Apache/Tomcat/Java, or whatever is your choice of technology.
- yaacovtp 20y ago
- eli 20y agoI can't believe nobody suggested _why's awesome new beginner Ruby environment: http://hacketyhack.net/ http://hacketyhack.net/
- Sam_Odio 20y agoAnd there's also the poignant guide: http://poignantguide.net/ruby/ http://poignantguide.net/ruby/
- rokhayakebe 20y agoI downloaded HH a little while ago. Good for people with no experience.
- jdavid 20y agoi think hacking is a state of mind, and not a learned skill. hackers, entrepreneurs and artists have a certain "what if" personality that leads to a never ending quest to answer these questions, they are usually very personal questions of curiosity. The quest to see the result is often more fun than the result itself for these people, it's about the process of discovery and exploration, and not about the answer. A runner runs a marathon because it is ultimately fun to train for one, not because the need to go 26 miles. A hacker is the same way, we just find it fun to hack, to explore. If you want to know what quests other hackers are on, you can always go to defcon in las vegas during the 1st weekend in august. Defcon is more like an art gallery of hacks, than it is a place to learn how to hack, that comes in from an inner desire.
- rokhayakebe 20y agoTAKE CLASSES AT A COMMUNITY COLLEGE. You might be able to teach yourself from a book, but that only works for a very few people (ususally those who are trying to learn a new language rather than someone with no experience). I tried to teach myself some SQL (with no database or programming experience), it didn't work. After 6hours/week for 4 weeks at school, I was doing ok. Heck that was 3 months ago, and it has tremendously helped me. Now, I am looking into a taking some java classes at a technical school. The classes are cheap and you will get more than the fundamentals in 2 months. The rest will come as you practice and work along side a developer on your project.
- tim 20y agothe top ten courses first: http://www.lecturefox.com/computerscience/ http://www.lecturefox.com/computerscience/
- prafulmathur 20y agoJust start programming in anything really (except PHP, since you may learn some bad habits). Make something you want (i.e. it could be as simple as a greasemonkey script for FF/UserJS for Opera/GreaseMonkIE [or equivalent] for IE). Then try to see if you can program it in a better way and continue to refine it as much as you can. Ultimately, you're going to learn that writing solid tests are equally, if not moreso, important as writing solid code. They help you determine the root problem, so I suggest just writing some code and learning how to properly test it. Also, test everything! I was coding a project and I think without a proper test suite (I made) and a debugger I would have never finished. Professor Felleisen taught us a design recipe: http://www.ccs.neu.edu/home/matthias/211-f06/Assignments/recipe.html http://www.ccs.neu.edu/home/matthias/211-f06/Assignments/recipe.html and it works really well, it ensures a structured and organized code that is easy to maintain down the road.
- cwilbur 20y agoIf you mean hacker in the traditional sense, I'm not so sure you can learn to be a hacker. It's an attitude of mind that makes you want to take things apart to see how they work, and then try to see if you can put them back together again better. If you have that mindset, play with a computer, and you'll learn enough on your own just by following what interests you. If you don't have that curious mindset, try to develop it; it's the hardest part of the hacker nature, but also one of the essential ones. If you mean "competent programmer," then the best route that way is a good computer science degree (which will teach you mainly theory) followed by a job programming (which will teach you how to apply the theory). Both the theory and the application of the theory are important; vocational-training computer courses that teach the application often omit the theory altogether. Hackers can benefit from formal education, too. The important thing is understanding how things work, not that you discovered them on your own. Learning by reading and by observing is as valuable as learning by doing; and the computer world has an endless stream of good examples of what NOT to do.
- litepost 20y agoAcademy X is San Francisco is good: http://www.academyx.com/ http://www.academyx.com/ (This concept should be franchised.)
- iamelgringo 20y agoEric Raymond answered this question a while back: http://www.catb.org/~esr/faqs/hacker-howto.html http://www.catb.org/~esr/faqs/hacker-howto.html It's not a quick process. It takes time to learn enough to do anything interesting with programming. A lot of time and dedication.
- reitzensteinm 20y agoAs much as I think SwellJoe has nailed the answer to this question, I can't help but think I disagree with the premise. If you've never coded before, I would suggest that you ask yourself a very difficult question - how do you know that you want to become a great hacker? Now, I don't consider myself a great hacker (I honestly don't know how good I am, and I question anyone that would tell you otherwise), but I do believe I know a bit about how I learned and can offer some advice. Follow your natural curiosity, step by step. That's it. If you have questions, answer them. If you wonder how is done, try to build it or create it yourself and find out - if you can't do it yet, pick off a smaller piece of the problem you're interested in. If there's some assertion in a field that you disagree with, try to prove it wrong, because either you'll learn that you're wrong (likely) or you'll contribute something to the field (unlikely, but possible). Either way you win. But the key here is, just follow your curiosity wherever it goes. It won't necessarily be towards becoming a hacker. If you find yourself delaying code that you know needs to be written in your plan to become a hacker by slacking off and reading up on organic chemistry all day, then that's not actually slacking off - that's telling you something. I don't think there are many people on this planet that can truly be great at more than one thing. Feynman was, for instance, but I don't think I've ever met anyone in person. If you find yourself trying to become a hacker as a 'day job' but you do rocket science for fun, well, I'm sorry, but chances are you'd make a great rocket scientist but a lousy hacker and you're going against your own nature to try to become what you aren't. But the key thing about simply following your curiosity is that you'll end up finding something that you are good at, you enjoy, and if you're at all smart you'll eventually become world class at it. If you are right about wanting to be a hacker, you will get there! You may have to have a day job while you figure out what you really want to become, but there are worse things. Sorry, I'm ranting a bit... but I hope this helps.