5 ms·
Shipping vs. Learning
- speg 14y agoThis is one of my new years resolutions. I love to spend time learning new things, but then just leave them behind when I move on to the next thing. Hopefully you are right and I will still be able to learn new things even while I focus on shipping.
- mstarkman 14y agoThats awesome! Sounds like we're on the same path.
- viscanti 14y agoI find I go through cycles. Sometimes I feel like I learn better reading through books and blog articles (and working through any exercises that might be provided). Other times I feel like I pick up more (or at least have more motivation to pick things up) when I'm actually trying to ship something. Different strategies work for different people at different times.
- hamxiaoz 14y agoNice, this is exactly I figured last year. Now I'm learning web development (HTML/CSS/JS/Ruby), here is the 'product' I build (or you can call it shipped) recently: http://hamxiaoz.com/BeijingAir/ http://hamxiaoz.com/BeijingAir/ It monitors the PM2.5 reading of Beijing and changes color/text based on the reading. Nothing fancy but I'm happy I made my idea come to true.
- ssharp 14y agoThis is definitely the way I prefer to learn things. I've had a few of successes and one failures doing things this way. Things I learned this way: - PHP, CodeIgniter - Ruby, Rails - CSS - Javascript, jQuery I'm hoping to get into some of the newer JS projects this way as well, node.js, backbone.js, etc. I think having a deliverable project in mind keeps you focused while learning. It's an extra layer of motivation, but unlike finishing a book, you're left with a real asset. I don't think everyone learns best this way, however, and realize that others may prefer going through book exercises or online tutorials. One drawback I've ran into every time I've learned this way is that you tend to cut corners out of ignorance and end up having to invest time down the road in either learning things your project didn't require or unlearning the bad habits you picked up when you were focused on the end rather than the means. I will say that I failed miserably when I had an idea for an iPhone app and jumped in head first this way. The process was intensely frustrating and I felt like I spent a lot of time spinning my wheels. Looking back, I would have been much better off working through an intro book on iPhone / Cocoa development than trying to piecemeal educational materials and tutorials. I'm not sure why this one specific process didn't work. I may have been too ambitious or it may just have been entirely out of my wheelhouse, coming from a web-only background.
- hamxiaoz 14y agoI have similar experience. When I built my blog (Jekyll) I knew nothing about css/html so I was constantly tweaking elements in an inefficient way. Now I have finish some basic css/html books/tutorials I have much better understanding what I was doing. When learning new things, reading a book first works best for me. You might feel slow at the beginning, but it'll pay you off in the long run.
- jwdunne 14y agoFor CSS/HTML, things like Firebug and Webkit Inspector can help massively too. You cut out the edit-save-refresh process across two applications out. You can usually cycle across available properties and their valid values too, which makes it even better for learning. Seeing things in real-time as opposed to refreshing over is a much better way to learn, based on my experience. It's a shame we can't do this with more stuff. I guess, in general terms, anything that cuts the time between writing code and seeing results will be a great help to you. Not only that, these tools will stay with you as you progress past a beginner stage since they'll always provide that efficiency boost.
- mstarkman 14y agoYeah, I went through the same process when I created an iPhone app. I struggled at first with Objective-C even though I had a C background. I took a step back and read some books/tutorial and then finally got the app out there.
- hatking 14y agoI came to the same idea. One of my New Years resolutions was to really learn a Lisp so I can finally see what the big deal is. I'm doing so by rewriting various utilities I use often (nc, ls, etc) in Scheme (Racket actually). It's great fun so far!
- npsimons 14y agoThis may be the best, nay, the only way I learn, long term. Hence why I'm a big fan of books with problems/exercises, and typing out code, even if an electronic copy already exists. I'm fairly certain neuroscience (or a related field) has studied this and come to similar conclusions. Of course, since I don't practice neuroscience, I can't remember where I learned this. Perhaps someone who has researched this can elighten us?
- mstarkman 14y agoI would definitely be interested in the science behind this. Unfortunately, I can't say my observations are scientific, but only from my experience.
- jwdunne 14y agoI think the concept of deliberate practice and perhaps even spaced repetition in psychology might be what you're looking for? Mark is dedicating himself to shipping projects, each of which contains challenges that are designed to push him just past the edge of his current set of abilities. Further more, each project will have to be maintained or else it will go stale, meaning constant, spaced exposure to each concept he is working with. For example: For my next project, I want to focus on having a more reactive user experience on the client side of a web app. I have narrowed it down to two technologies that I want to use, Ember.js or Meteor. Here, Mark chooses a project that centres around Ember.js. Rather than writing some toy Ember.js stuff, I imagine he will be using Ember.js in a practical setting, which is more challenging from the outset. Since he plans on shipping, again this will need to be maintained, perhaps new features may need to be added, which means spaced but regular exposure to Ember.js. If I'm correct in the above, this may actually be a fantastic way to learn new stuff.
- npsimons 14y agoDeliberate practice is something that really fascinates me, because it never seems like I have enough time. I've picked up "How to Read a Book", but it will have to wait until I'm done with my current non-fiction book (I try to keep focused on one non-fiction book at a time). Reflection and deep understanding are important, but the mantra of "good enough" is very powerful as well, and perhaps the fastest way to "ingest" something is by pushing yourself, hard, to do something "impossible", well beyond your limits. Some people would say that if you could do it, it's not "well beyond your limits", but how do you know until you try? For me, I have a tendency both to get distracted easily, and occasionally focus deeply (perhaps too deep) on highly specialized subjects. C++ is my current obsession, and not necessarily because I like it; there's just so many dark corners. I do need to learn and practice more deliberately, but also push myself, hard, out of my comfort zone. And sorry to continue the free association (see how I get distracted easily?), but I feel that perhaps rejection therapy wouldn't be needed if people took more challenging opportunities, with the inevitable failures being all the rejection therapy they need.
- tlarkworthy 14y agoyou might want to avoid whitelisting spammers in comments
- gfodor 14y agoLearning via Shipping is the only certain way to be sure you are spending your time learning useful things. You can, of course, learn things that are useful that don't involve shipping. But if you are learning something that results in shipping, then it was certainly useful. That's not to say you shouldn't spend time learning things that don't involve shipping. Just that these things should be the exception, not the rule. This extends beyond software. For example, learn Mandarin when you are going to actually be going to China, not because you think it's a "useful skill." Learn accounting when starting a business. Start reading Tufte when you have a tangible information design task at hand. In general, it's another form of lazy evaluation, which is almost always a good idea ;)