The best thing I can recommend is taking some code you put together and rewriting it in a drastically different language that you don't know. I rewrote some Python code I put together in Haskell, and it was a transformative experience for me.
I've "published" a few "books" online (by that, I mean, I put text onto the Internet and called it a "book") and even though I've been lax in finishing/updating them, my primary goal has always been to learn something about programming...in this case, programmatic workflow. My first go, I thought that Rails would be a good publishing platform...which was a horrible idea, but when you're a Rails programmer professionally, why not? But every attempt since then has been to find ways to simplify and streamline things, either through new frameworks or disciplined programming. I'm glad that a few people stumble upon my work through Google searches, but even if no one ever read them, I've still accomplished my main goal of practicing and refining my programming.
That's the exact reason why I created two simple open source projects: Draw![1] and Tomatoes[2]; the former to understand Redis better, the latter to know more about MongoDB.
I was really impressed with that drawing one. I only clicked to see how I did with my side project(s) of drawing and it was nothing as polished or nice as that. On one hand I'm a bit sad (with myself for not being able to do that on my own) but it really is cool. Especially liked the slideshow (that's what I see) part of it.
Anybody have experience with his site, greatcoderclub? That looks like an interesting way to get over the activation energy and build up some discipline for pushing out side projects.
I was a participant for a month. I realized that my problem was time rather than motivation. Other than that, it is an excellent community and well worth the fee! The instructor's path and the community's expansion is a really great thing to be a part of. I almost kept paying to just watch the community grow, but felt guilt in eating up a spot.
I've signed up. The content is pretty good and covers parsers, compilers, VMs, and a few more things. There is code, videos, and exercises to guide you along each project.
I disagree with point 1. For me one of the best parts of programming is creating something from nothing. Going from an empty file to working program is part of that.
I was eager to learn about HTML5 Canvas, so I created a small project and learned a great deal while developing a lightweight canvas library, which hopefully others will also find helpful. https://github.com/vladakilov/imagine
I want to teach myself to make games in HTML5 and most of the examples I see use fixed size frame; so I must be fair to assume going fullscreen is a hard problem.
The games I'm interested are visual novels http://en.wikipedia.org/wiki/Visual_novel or Undum-based interactive fiction http://almostgoodbye.textories.com/ upgraded with full-screen static 2D graphics and music, so graphics perfomance requirements are quite modest, but running fluidly on screens of different resolution is a must.
I use Perl at work but have been working on a side project using Django and Angular to 1) learn/keep up with the languages I'm interested in and 2) potentially turn it into a business. I'm sure there are tons of things wrong with it, but I know I'm learning a lot just by forcing myself to figure things out.
One problem, though, is that I may start looking for a new job soon. I don't want to make this open source since I may try to sell this at some point. If you look at my Github you won't see a lot of activity even though I'm working on this every single day. I know employers are interested in seeing that you're working on something though. How do I make sure I don't get looked over?
I've used side projects to learn every valuable skill I have. Open source projects are a great way to publicize your new talents, but I don't think it's a prereq for landing a job that makes use of the new skill. Being able to talk intelligently about a subject during an interview goes a long way. As does having a depth of knowledge on a variety of languages, environments, technologies, etc.
I'd just be up front about that when applying for jobs. Tell them that you're working on something in your spare time, you don't want to open source it, but if they want to see some recent example code then they can take a look (if you're ok with that).
Definitely reminds me of the 70/30/10 model[1] for learning. It's amazing what you can pick up when you are given a problem and need to solve it. I continue to learn a ton from work and from personal side projects. Being given a ambiguous problem and then going through the process of breaking it down into smaller solvable problems was a big thing for me. I realized that being an expert in something isn't necessarily being able to regurgitate something from memory but is having a lot of experience to recognize patterns.
I've started more than a dozen "side projects" as a way to develop coding knowledge. Most of these have never seen the light of day outside my computer, but they have all built upon each other and made me better at my day job. And a few are actually make a little passive income on the side.
There's typically little to no investment necessary, other than time. And I consider time spent learning something that can at the very least be applied to later projects or furthering my abilities a wise investment.
There's no such thing as overnight successes, and the more things you make, the likelier it is that you will create something that becomes more than just a side project.
There is a pile of 8 books on my table right now (pro asp.net mvc 5, visual c# 2012, software architecture in practice, database solutions...". I started by skimming through each and every one of them, and it all seemed rather boring. Nothing taught me more than working on my side project.[1] I am far from good at anything and there is a long ways to go but actually digging in and creating something was very rewarding.
I can't even tell you how much I have learned outside of school and work by working on an outside project.
I had a co-worker ask me "How do you code so well in C#? I want to be a master in that language."
My reply...
"Create a simple blog project and then work from there. Eventually you'll want to add more and more features that will move you throughout that chosen language."
I've learned so much by creating and uploading semi-unfinished side projects on the web.
Side projects are incredibly important to keep the tinkering in the shed creativity, experimenting, learning and ultimately growth alive. It's fine to have a few to work away on as long as they are not taking up all of your time relative to the return you are seeking in other areas of life.
[+] [-] tdees40|11 years ago|reply
[+] [-] btbuildem|11 years ago|reply
[+] [-] oweiler|11 years ago|reply
This can't be stressed enough.
[+] [-] danso|11 years ago|reply
[+] [-] potomak|11 years ago|reply
That's the exact reason why I created two simple open source projects: Draw![1] and Tomatoes[2]; the former to understand Redis better, the latter to know more about MongoDB.
[1] http://drawbang.com
[2] http://tomato.es
[+] [-] hfsktr|11 years ago|reply
[+] [-] slackpad|11 years ago|reply
[+] [-] ambiate|11 years ago|reply
[+] [-] dkarapetyan|11 years ago|reply
[+] [-] andrewflnr|11 years ago|reply
[+] [-] macournoyer|11 years ago|reply
[+] [-] akvlad|11 years ago|reply
[+] [-] listic|11 years ago|reply
I want to teach myself to make games in HTML5 and most of the examples I see use fixed size frame; so I must be fair to assume going fullscreen is a hard problem.
The games I'm interested are visual novels http://en.wikipedia.org/wiki/Visual_novel or Undum-based interactive fiction http://almostgoodbye.textories.com/ upgraded with full-screen static 2D graphics and music, so graphics perfomance requirements are quite modest, but running fluidly on screens of different resolution is a must.
[+] [-] stickperson|11 years ago|reply
One problem, though, is that I may start looking for a new job soon. I don't want to make this open source since I may try to sell this at some point. If you look at my Github you won't see a lot of activity even though I'm working on this every single day. I know employers are interested in seeing that you're working on something though. How do I make sure I don't get looked over?
[+] [-] Duhveed|11 years ago|reply
[+] [-] jon-wood|11 years ago|reply
[+] [-] mcx|11 years ago|reply
[1] http://en.wikipedia.org/wiki/70/20/10_Model
[+] [-] gk1|11 years ago|reply
[+] [-] shanecleveland|11 years ago|reply
There's typically little to no investment necessary, other than time. And I consider time spent learning something that can at the very least be applied to later projects or furthering my abilities a wise investment.
There's no such thing as overnight successes, and the more things you make, the likelier it is that you will create something that becomes more than just a side project.
[+] [-] atko|11 years ago|reply
[1] http://whoaverse.com
[+] [-] sreyaNotfilc|11 years ago|reply
I had a co-worker ask me "How do you code so well in C#? I want to be a master in that language."
My reply... "Create a simple blog project and then work from there. Eventually you'll want to add more and more features that will move you throughout that chosen language."
I've learned so much by creating and uploading semi-unfinished side projects on the web.
e.g. artJutsu.com/lightbox
[+] [-] michaelchum|11 years ago|reply
[+] [-] j45|11 years ago|reply
[+] [-] rememberlenny|11 years ago|reply
[+] [-] michaelchum|11 years ago|reply
[deleted]