8 ms·
The Hacker's Path
- harlowja 16y agoTeh Womenz should be higher up, haha.
- blhack 16y agoI think you're half joking, but you're 100% right. I think it's really important to maintain a balance between hacking and a healthy social life, but not just because going out for drinks and laughs is fun. It's important to spend time with people who aren't hackers because, a lot of times, you're building stuff for people who aren't hackers. Gabriel Weinberg (Duck Duck Go founder, cool freaking guy IMHO) posted a list here a while ago of projects that he had started that he considered failures. One of these things was a photo-sharing service wherein users simply emailed pictures to an address if they wanted to share them. This is brilliant, I don't know why it never caught on. This is also the type of thing that my hacker friends and I would never have come up with. If I want to share a photo, I'll just scp it to a webserver and send you a link. Email it? That seems awfully cumbersome! Not to my mom it wouldn't. Obviously the big reason to keep a social life is because it's fun, friends are friends. I guess what I mean is that it's important to not think like a hacker sometimes.
- jpwagner 16y agoI get your point but "...it's important to not think like a hacker sometimes" made me chuckle because it implies that a hacker misses obvious things.
- blhack 16y agoThe example of the email thing seems pretty obvious to me.
- chipsy 16y agoWell, they do. That's the consequence of knowing something. Because you are "literate" in solutions based on reusing prior working knowledge(as in the "host photos on own web server" solution) you will fail to see a problem for the tech-illiterate layperson. This has some crossover with the "tech-elitist" trap as well. The intense focus of writing software tends to make people forget about a well-rounded life - and the more you are involved with computers instead of people, the more likely you are to look down upon people who cannot live in the computer world.
- michaelleland 16y agoWhere do HTML/CSS fall? Are they unimportant or so important that they are considered obvious?
- krainboltgreene 16y agoI've yet to find any good, modern, sources of learning HTML and CSS. No one should follow this to the word, so that learning would happen in phase 2. Also, if you're learning Ruby, Python, and eventually JS you're going to have to pick up HTML and CSS on the side.
- knieveltech 16y agohttp://w3schools.com/ http://w3schools.com/ does a good job of providing tools and tutorials for picking up HTML, CSS and a host of other technologies.
- kmfrk 16y agoSites like that tend to mislead you by dancing around the biggest most important aspect of browser compatibility. HTML and CSS so perfect and beautiful, right until the point where your website looks like it's melted in Opera, Firefox, Safari, Chrome or IE. There are some HTML and CSS cookbooks that do all right, but it's borderline impossible to get a grasp over the whole thing.
- krainboltgreene 16y agoHalf of that site is ads and promotions, it's also terribly detail lite and lacks some browser spec stuff. Also, very few common/good practice parts.
- blasdel 16y agow3schools is the single worst 'developer' site on the entire web. The very worst. If there was a single site I would have delisted from google, purged from caches, and it's maintainer burned at the stake, this is it. I'd settle for him just having his PageRank taken out back and shot. It's composed entirely of mangled versions of ancient official documentation, corrupted with hearsay, riddled with content-styled ads, and scummily trading on the name of the bureaucrats that attempt to be authoritative on the whole mess. Every single example he provides manages to be a horrifying implementation of 'worst practice'. http://www.quirksmode.org/compatibility.html http://www.quirksmode.org/compatibility.html is the browser reference you want. For backend stuff, go to the upstream developers, not some bullshit artist that's manage to paraphrase and SEO his way to being king of the shitpile.
- dimm 16y agohttp://www.catb.org/~esr/faqs/hacker-howto.html http://www.catb.org/~esr/faqs/hacker-howto.html
- krainboltgreene 16y agoWhile I appreciate his effort, I always felt like that page was a bit too...ideologically stamped. Later on he writes things like: Q: I've been cracked. Will you help me fend off further attacks? A: No. Every time I've been asked this question so far, it's been from some poor sap running Microsoft Windows. It is not possible to effectively secure Windows systems against crack attacks; the code and architecture simply have too many flaws, which makes securing Windows like trying to bail out a boat with a sieve. The only reliable prevention starts with switching to Linux or some other operating system that is designed to at least be capable of security. I don't think that's appropriate, or really needed. I mean sure, even my post is opinionated, but you don't see me telling someone they're an idiot because they don't understand something.
- elemeno 16y agoWhile I don't disagree with you that ESR has a strong ideological tilt, it's also useful to remember that he wrote that quite a long time ago now, when that effectively =was= true. Going back to the subject at hand, I think that the post misses the point that being a 'hacker' isn't really about how many languages you know, it's about certain ways of thinking. The most important, IMO, things to know are all (fairly) language agnostic - algorithms and data structures. If you don't understand those and how they work and how to choose between them, then you're never going to be really good at what you do. Also, you need to learn a functional language well enough that you can solve hard problems using it. Understanding functional programming and all the concepts it introduces (partial evaluation, currying, monads, first class functions, map/reduce to name a few) will do wonders for how you write code in other languages and will make the code you write far cleaner and more readable and easier to extend afterwards.
- steveklabnik 16y agoFor emphasis: > There are guys out there who will argue about different tools/methods in a religious fervor. Pay attention to the people who get things done, break new ground, or get you pumped. It's so easy to get sucked into endless debates. Do stuff instead.
- blhack 16y agoI bring it up a lot, I promise I'm not trying to spam the site or something like that, but I think every single geek needs to read http://lesswrong.com/lw/154/why_real_men_wear_pink/ http://lesswrong.com/lw/154/why_real_men_wear_pink/ (Why Real Men Wear Pink). I can't tell you how many stupid pointless debates I've gotten into with people about this language vs that language vs this editor vs that editor vs linux vs openBSD vs gpl vs BSD vs MIT vs vs vs vs vs SHUT UP! I'm telling this to myself too because as I said, I've participated in the discussions, but this type of stuff is almost completely pointless. A hacker friend of mine hates the arduino board. Isn't real computing. Isn't real programming. It's a toy. It's STUPID! Stupid? People are building stuff. Who cares if the board has a bunch of stuff that they don't need. They're going to take the toaster apart in a week and repurpose it as a kegerator controller, or a droneduino, or a christmas light controller, or a...whatever. Sorry, I'm getting ranty, but I really, really hate this type of stuff and I find myself having to defend the position of "who f!cking CARES?!" pretty often. One argument I got into recently was with somebody who insisted that people who can't or don't do manual memory management aren't real programmers. Python isn't a real language and nobody really uses it in production. /facepalm Just shut up and code/build. If it doesn't work, take it apart and build it again.
- pronoiac 16y agoA hacker friend of mine hates the arduino board. There are some benefits of working with hardware, even if it's just toys: it's far more accessible to non-geeks, & if it stops working, you can give it a smack & feel better.
- blasdel 16y agoBut Arduino isn't hardware in that sense — it's a shitty microcontroller rebranded as a standard building block. It's software! The thing that chaps our asses is that it's almost exclusively used where a simple circuit would have done fine, often boiling down to being just a 555 timer or a parallel port breakout box.
- kmfrk 16y agoA great guide. I'd mention some minor things, but I love the brevity of it, and I think squabbling over details would ruin it.
- keyle 16y ago"Gettin' Paid, Makin' Money" ... Where is C# and .NET? I mean if you're after money, that's where it is. I definitely earn a lot more as a WPF/Silveright developer than any PHP gig I've found. Sorry if I upset some people, I'm not techno-racist. I just go with the flow, and MSFT gave me the lifestyle.
- krainboltgreene 16y agoSuggest some books then! Those aren't fields I'm very familiar with so I went with what seemed most valuable.
- keyle 16y agoFair enough. A simple search returned me this list http://stackoverflow.com/questions/531329/best-c-book-for-an-experienced-programmer http://stackoverflow.com/questions/531329/best-c-book-for-an... I personally recommend Pro C#, Pro WPF, Pro Silverlight from Apress and WPF 4 Unleashed from sams.
- krainboltgreene 16y agoThanks for the link, that field is really something I've avoided as a learning developer and while it's probably kept me sane in a lot of instances, it's probably hurt my "money makin'" chances more.
- keyle 16y agowhy avoiding c# kept you sane? It's an awesome language. Are you simply anti-msft?
- jasonkester 16y agoCan't. The crux of working inside the .NET ecosystem is that you need to ignore roughly 90% of it if you want to build anything complicated. Specifically, you have to ignore the 90% of .NET that you'll learn in "Teach Yourself To Build Terrible Intranet Websites with ASP.NET in 21 days". Those books will tell you about how to drag and drop controls onto a page. Don't do that. They'll tell you about all these cool <ASP:whetever> rich usercontrols. Don't use those (except Repeater and Literal). They'll tell you about Ajax.NET. Definitely don't use that. They'll tell you about the terrible built in ORM garbage that's lurking in VS.NET that you absolutely need to stay away from if you want your thing to stand up in the face of traffic. Nobody has yet written the book that teaches you the parts of ASP.NET to use. It's a shame, since most of us have stumbled across the same set of amazingly powerful libraries on our own, and are building really cool stuff with them. But nobody has published that list. Maybe when I get some time I'll do so. Until then, you're going to need to learn .NET by using it. Stay away from anything you can accomplish with wizards or by drag/drop, and you'll do OK.
- gfodor 16y agoMeh, I dunno. This list isn't really that great. It's good if your goal is to learn as many programming languages as you can, but it's sorely lacking fundamentals. (Even considering the theory books, which are pretty all over the place.) My list would definitely include more books around software architecture, system design, algorithms, data structures, and different domains of software like computer graphics, machine learning, databases, embedded systems, simulation/games, audio/video, and so on.
- krainboltgreene 16y agoThis isn't definitive, but it is focused on web development. Please suggest some books :)
- dboyd 16y agoThe Pragmatic Programmer: http://pragprog.com/titles/tpp/the-pragmatic-programmer http://pragprog.com/titles/tpp/the-pragmatic-programmer Code Complete: http://cc2e.com/ http://cc2e.com/ Introduction to Algorithms (google that one, it's hard to find a good link) Domain Driven Design: http://domaindrivendesign.org/books/evans_2003 http://domaindrivendesign.org/books/evans_2003 Design Patterns: Elements of Reusable Object-Oriented Software The term "web development" doesn't mean much. There is web design. There is application development. When the two mix, there is web application development. Any kind of application development is hard, and simply knowing a language or two isn't going to make you a good application developer any more than knowing english will make you Stephen King. (IMO)
- angrycoder 16y agoThose books are great, but they only start to make sense after you've been doing development for a few years. Its very hard to get any kind of 'buy in' with those when you are just getting started. I disagree that application development and web development are similar. When you build web apps like 'real' applications, you end up with all those heavy java frameworks. And god help your sanity if you ever been subjected to the code of a desktop application written by a web developer.
- jpwagner 16y agoSon: hey dad, can I borrow some money? Dad: son you're going to have to learn how to be "Gettin' Paid, Makin' Money." here's the best C programming book i know. Son: thanks dad. how much can i get for it? Dad: uhhhh...
- eddieparker 16y agoIdiot. Won't let me view it with the browser installed on this system! Disables the back button!
- krainboltgreene 16y agoYeah, I'm really sorry about that, I meant to transfer that to the routes logic but this as a surprise. Very very few people read my log, never thought it'd be that big a deal to shunt explorer users to a browser page. :(
- memoryfault 16y agoYou are not an idiot...but it is annoying. Are all the IE's displaying it incorrectly, including IE9? I'm using IE9 beta and pretty happy with it. Makes me sad that I can't view your page :)
- krainboltgreene 16y agoYeah, I just threw out the general agent string. This was before IE9 was something that looked rather nice. Consider me shamed and learned!
- xpaulbettsx 16y agoDisappointed to see "Teh Womenz" on there - is it so inconceivable that someone wanting to be a hacker is a woman? Or not into women? Obviously the author is tongue-in-cheek, but it's indicative of a wider culture, where hackers are telling women, 'You don't belong.'
- krainboltgreene 16y agoHA but you're assuming a hacker woman is /straight/. Mybe I only want lesbians in my culture >:(
- rbxbx 16y agoPretty sure you're not helping your case.
- krainboltgreene 16y agoPretty sure I'm not in court :)
- archangel_one 16y agoI thought it was supposed to be tongue-in-cheek - I didn't take "Drinking Heavily" entirely to heart either.
- miah_ 16y agoAgreed. I think the author should have just written it as "learn to date". I think learning to date is harder than any programming language and saying it that way leaves it open to the readers sexual preferences.
- noname123 16y agoNah, I think what the author meant is learning pick up skills. That's one thing I'm really disappointed about the HN in general is that people don't necessarily branch outside of computers and break the nice guy-politically correct-nerdy stereotype. Awhile back there was that whole "lifehack" movement, but even that was preaching to the choir about "productivity hacks" and being generally PC. Once, hacking was about infiltration, social engineering, alternative culture and breaking conventions in any field; but now it's being reduced to getting paid and "making a difference" in the world.
- stone_wei 16y agoThis list is only focus on programming languages and they are lacking fundamentals.
- dheerosaur 16y ago"Becoming The Master" section seems to be missing some good texts like SICP, HTDP. They are freely available as well.
- mtalantikite 16y agoI'd suggest to newcomers to get into the habit of reading source code. Pick some of the prominent projects written in the language you're studying, and spend some time figuring out how things work. You'll learn a lot.
- jpitz 16y agoIt is hard to overstate how important this is. Read. A lot. A lot a lot a lot. Learn how good projects approach things like testing and error handling. Look at how well documented and easy to read the code is. Any clever idiot can write clever code; the kind of coder people want to hire are fastidious about making sure other people can read and grok their work.
- spacemanaki 16y agoWhy Ruby AND Python? I understand why either one would be a good first language, but both? Wouldn't that just confuse someone who is genuinely just starting out?
- mechanical_fish 16y agoAnd I love _why's book to death, but trying to learn programming from Why's Poignant Guide to Ruby (with Cartoon Foxes) is like trying to learn to play guitar by listening to Jimi Hendrix records while stoned. If you're capable of learning to program from the Poignant Guide you certainly don't need an exhaustive guide on how to be a hacker. You're going to be able to figure it out on your own.
- c00p3r 16y agoK&R. SICP. Manmonth.
- p_nathan 16y agoNah. Sorry man, but this list is so tilted towards the web-app world it's more than a bit ridiculous. For an genuinely deep understanding, start at the gate/transistor level and move up the stack. Here is a list which will hit major portions of what one needs to know (yet leave infuriating gaps). Digital Design and Computer Architecture by Money and Harris is very readable. Structure and Interpretation of Computer Programs is the classic intro text. The C Programming Language The C++ Programming Language On Lisp by Paul Graham. Algorithms by Baase Code Complete by McConnell. AI by Norvig. This list isn't about the latest sexy languages or technologies. This is about timeless principles and how things really work... Yet there is much more to be said after the fundamentals are understood - garbage collection, virtual machines, modern cpu design, modern type system design, networks, concurrency - the list doesn't end for a while. Web apps are great, and I think they represent "The Computer" to many humans. But they represent a only a fraction of computer experience and existence. The Master must understand the principles of it all.
- krosaen 16y agoI like how SICP teaches you about programming first, and then considers how code might be executed on a register based machine: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-30.html#%_chap_5 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-30.html... rather than starting from the bottom up.
- rcfox 16y agoYou can't start at the transistor level. You'd have to learn about circuit theory first. Besides, the math involved with transistors (even in large-signal analysis) is too disconnected from code to be starting there. It's like saying, "To learn to be a manager, start at the neural level." It's the emergent behaviour that you're really interested in.
- ygd 16y agoWhy do we need a Linux server?
- krainboltgreene 16y agoSo you can (later in the game) better understand the foundation of your programming. This "list" has a heavy lean on web applications because they're popular, having a web app means (eventually) having a server.
- onan_barbarian 16y agoRandom and inane, and by its very nature, involves a bunch of name-checking of works that the person obviously hasn't read: "Oooh, the Dragon Book, everyone says that's awesome, so I better put it on there". If you were enough of a middleweight to have read the Dragon Book the rest of the list wouldn't be so bizarre and randomly chosen. It's not even good quality name-checking where people at least pretend to have read Knuth or SICP or HAKMEM or whatever.
- coolgeek 16y ago"avoid anything that requires a server like MySQL" plonk
- phugoid 16y agoThis is distasteful. Every tech geek on the planet is trying to sound authoritative; I get that. Everyone wants to present themselves as a master of some sort. But self-praise is no praise. The Hacker's Path? To write such an article, you have to basically call yourself a hacker, and good enough to know _the_ path and to inspire others to follow you. Hubris. Most of us have mastered a few things, and are trying new things regularly. We're all beginners, we're all masters.
- khafra 16y agoCaminante, no hay camino / Se hace camino al andar The indefinite article would've been a more appropriate choice for the title, but that's true of any generalization.
- Osmose 16y agoThese types of articles always give lists of books to read. I understand how important reading books are, but I've almost never been able to read a book about programming and get anything useful out of it; my brain just doesn't retain knowledge (only book that has come close is Head First Design patterns, but that book was trying to help me retain). Most of what I've learned come from articles on HN, reading source code, classes in school, and my own experience in both personal and work projects. How do I overcome this? Or do I even have to?
- dm3 16y agoTry to work with books which have exercises - such as "Structure and Interpretation of Computer Programs" (http://mitpress.mit.edu/sicp/full-text/book/book.html http://mitpress.mit.edu/sicp/full-text/book/book.html), "Introduction to Theory of Computation" (http://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/0534950973/ref=dp_ob_title_bk http://www.amazon.com/Introduction-Theory-Computation-Michae...) or "How To Design Programs" (http://www.htdp.org/ http://www.htdp.org/). Keyword here is _work_.
- aaronblohowiak 16y agoThere are different learning styles. For some (lucky) people, reading it in a book is enough. For you, that may not be enough. If it isn't, then you need to learn how to teach yourself. The book is there to provide technical insight. It is up to you to turn the information into a curriculum that you assign yourself -- little projects or scratch coding things (weekend hacks) that you can do to test out the technique, strategy or technology.
- whalesalad 16y agoOh man I can't believe that the author wrote "iTouch" -- makes me cringe.
- Supermighty 16y agohttp://www.catb.org/~esr/faqs/hacker-howto.html http://www.catb.org/~esr/faqs/hacker-howto.html
- RyanMcGreal 16y agoOne quibble: > You need to be doing 5 things every day: The essay goes on to list eight things. Even if you collapse the three instances of "Hacking" into one, that's still six.
- mambodog 16y agoSo... is this supposed to be a parody?
- krainboltgreene 16y agoI didn't expect for this to make it this high in HN. I certainly didn't see it as worthy of much discussion. I'm going to take a weekend (Or a few nights) to go over these comments and make improvements where I can. Especially the books! I've got to read these to make sure I'm not adding any old boring thing :)
- catechu 16y agoWhile anything that brings more talent into the programming world is a good thing, I find it disappointing when I see such lists encourage cursory understanding like this. While it does have a section on "Becoming the Master", I think that prefacing the section with "[i]f you're still yearning for more" doesn't have the normative force I find in similar but more inspiring works such as Raymond's "How to Become a Hacker." Personally, reading the following in Raymond's essay many years ago impressed me with the importance of mastery and motivated much of my attitude toward programming: "Learning to program is like learning to write good natural language. The best way to do it is to read some stuff written by masters of the form, write some things yourself, read a lot more, write a little more, read a lot more, write some more ... and repeat until your writing begins to develop the kind of strength and economy you see in your models." The focus on mastery is critical to any hacker's path, in my opinion -- it is not an option. That said, kudos on encouraging more hackery. :)
- dytrivedi 16y agoWhere's Gödel, Escher, Bach?