6 ms·
Learning to Hack: the Tipping Point
- tonyx 14y agoWell said. I still go through that cycle every time I try to learn something new. Cocoa was really frustrating, especially as the debugger threw me into compiled assembly code. But once I got through the initial hurdle it became much more fun. Had that experience with Django lately too. The best (arguably only) way to learn seems to be learn by doing, reflect(which includes summarizing mistakes, reading tutorials, talk to expects, etc), and do some more. It tends to work out best when you have an end in mind, a real project that you are working on, which is what a lot of coding tutorial fails to deliver.
- fredsters_s 14y agoAgreed. I feel like we are probably the first generation who has grown up with the world's knowledge at our fingertips. Once you know how to use it, every problem seems solvable. Yet still the majority of my friends don't have this attitude. I've forgotten how many times (as the 'tech' friend) I've directed them to an lmgtfy.com link. I wonder what stops people from grasping the concept you're talking about here - from experiencing their own 'tipping point'.
- graeme 14y agoThat's an excellent question. Our current institutions (school, work) are set up so that people by and large respond to commands from a higher authority. Entrepreneurship gave me the incentive to find things on the one, and also made it necessary.
- simondlr 14y agoI remember learning to code in Game Maker a while back, so each time I had an end goal in mind: the game I want make. In that time, I made 8-10 crap games, but each time I would code, I would more and more swap out the pre-build code actions with actual code as the complexity of the games increased. Besides the fun of making games, it was great discovering the underlying code, even if it is something as rudimentary as Game Maker's scripting language.
- Xcelerate 14y agoWow! This is how I learned to code too! I remember when I around 12-13, I wanted to figure out how to make my own message box in Windows (yes, I was weird). But I didn't know there was such a thing as "programming". In fact, I had no idea how software was made. Eventually I stumbled upon Game Maker -- I think it was at version 4 when I found it. So I began creating little games with that cheeseburger icon and snowmen. Eventually, I realized that this thing called GML would let me do more. When I looked in the help file, one of the functions said to enter an "argument" and I seriously spent like 2 days trying to figure out what an argument was. Eventually I got a Mandelbrot fractal going in Game Maker and discovered C at that point.
- simondlr 14y agoWow.Straight from Game Maker to C? Sort of happened the same to me. Up until uni I only knew Java, Game Maker and basic PHP/MySQL then started with C in freshman year. Although I mostly do web development these days, I liked working with pointers and memory management in C (once again delving down deeper).
- jpadilla_ 14y agoThis is something I talk all the time with students that are being taught all the programming classes in college. Most of them know how to program, or at least know the syntax of a language and know basics, but getting to that tipping point of having hacked something up is kinda hard for most people. After you've built that first thing, that isn't the obvious programming exercises found on textbooks, you've passed that tipping point and hacking will then come naturally to you.
- sreyaNotfilc 14y agoA lot of people don't like the "discomforts of exploration". Folks have mentioned that creating solutions to your own problems helps a lot. Well it does, but it takes some out-of-the-box thinking to realize that you do have a problem to solve. Programming is like using an Erector set. You get a lot of pieces and can place them together quite easily. But when push comes to shove, how many are going to (or willing to) build a baseball launcher so they can avoid "pickling the Beast" (Sandlot reference)? That's where imagination and subdivision comes in. Yes, you can learn all the theories and syntax that you'd want, but if you don't use your imagination and divide-n-conquer methods, you'll never make it. Once you'd get past all of that, the sky's the limit. I'm proof of that. I hear of all of these miracle languages and frameworks, but I stick to what I know. Why, because it had solved so many problems before. And its because I have a vivid imagination and know what it takes to get the task completed.
- alberich 14y agoThe article is nice, learning by doing is way more effective than just reading about something. I just don't feel very confortable with the word "hacking". This term is so overloaded nowdays that it's almost meaningless. Anyways, good job :)
- tatsuke95 14y agoAs someone with an interest in the programming world, I'm slowly "learning to code". I don't intend on ever developing in any occupational capacity. I'd just like to be able to have both a better understanding of what goes on under the hood, as well as be able to cobble together tools. But I'm having trouble finding my own tipping point. I've worked through tutorials, online classes and introductory texts. Most of these things have you typing code in an editor, solving very minor problems, and seeing the results. But there's a big gap between, say, typing a little program in an editor, and a full blown web page or game. I understand that when you drill down in an iPhone app, for example, there's code back there, most of which I can't recreate, but can understand on a basic level. But what I don't understand is how that code gets there; how do all the pieces of code fit together to make a finished product, and how do you get it there? It's still sort of a black box to me, and haven't found the resource that can get me across that chasm. I bring this up because I'm waiting for the epiphany, when I can say what the author does: >"What had previously been a mysterious and confusing world suddenly started making a little bit of sense." It's difficult when learning from scratch.
- mwd_ 14y agoIt's probably a lot easier to understand a larger project like a game or a website by trying to implement something substantial on your own. A lot of the obvious approaches to coding that work for small examples don't scale well for one reason or another. In the process of running into roadblocks and finding solutions (typically with the help of google) you'll encounter some of the pieces that end up in something like an iPhone app and at that point you'll probably be in a much better position to understand them.
- anthonyb 14y agoTwo things: It definitely helps to have some sort of scaffolding or small seed program to help get you started. If you're looking at other people's projects you don't see all of the small choices and decisions that they made, just the final product. That always seems a lot more complex and intimidating than whatever it is you're currently working on. (If they're on github, you can sometimes go back to revision 1 and see what they started with, then roll forwards and watch them work) The second thing is that programming is a lot like maths, in that learning it in and of itself is pretty dull. Having something that you want to do, with programming being the tool that you apply to help you get there, is a lot more motivating (and seems to be the tipping point experienced in the article)
- lubutu 14y agoI think the way that one learns to program says a lot about the programmer. I, like many people, started with games and websites, but although I understood conditionals and loops, and even glimpsed OO, I wasn't very good. My software sucked, I got bored of it, I slowed to a stall. A couple of years later I picked up Python, and instead of trying to make games or websites, I worked on stupid little puzzles. Pointless things, really. After a lot of work I built a Befunge interpreter (probably my own "tipping point"). And many useless puzzles later, I somehow wound up a genuine computer scientist. People always talk about "getting things done". I just worked on meaningless puzzles, and that was the best thing I could have done. Anecdotally, to me it was about achievements and challenges. If you grow tired of the drive to "get things done", make something pointless.
- zaphar 14y agoThe "thing" in getting things done is fuzzy. For you it was a "meaningless" puzzle. For me it was an implementation of Conway's game of life. For others it was modifying their wordpress blog or making automating their financial tracking. The point is there is something you want to do and you used a programming lanaguage to do it. As a result: * You were self guided not following someone elses steps. * You were rewarded with some self confidence when it worked. That's the tipping point the OP was talking about I think.
- bryanh 14y agoOP here: exactly what I meant.
- lubutu 14y agoI suppose what I'm trying to say is that for me it wasn't that there was "something I wanted to do and I used a programming language", but rather that I wanted to use a programming language so I found something to do. For me it was about the (self-guided) achievements and challenges: I wasn't "hacking a way to a solution," and would often return to the same problem and solve it again and again, never "falling back to really hacky solutions to get things done." It's a bit fuzzy (things do get done either way), but I think there is a distinction in approach.