Basically, I have recently started a "pet project" (side project/whatever) working with RESTful APIs that are on the Internet. I have never done this before, and I have found that it has really rekindled my love for programming.. I want to stay up late with it, take it out to dinner and spend more time with it than my friends..
Which is all fine and dandy, but there are downsides, it has impacted my study for exams. I am of course spending less time studying (as I should be) but I am still getting heaps out of it.
While I know I am responsible for my exam results, do you think we should all have "pet projects"?
OK, here is how this is going to work.. It's kind of my trying some PoC stuff..
Why am I doing it like this?
So please people of StackOverflow, vote! Share your experiences!
NOTE: You will not take a rep hit downvoting this as it is community editable.
I'm a bit on the fence on this one for two reasons.
It's certainly a good idea to do some coding away from work. Especially if your boss doesn't give you the time to try out all the exciting new technologies that are coming out now. But I don't think this has to be in the form of a project. It's just as good just to try stuff out and never finish it. Finishing usually takes way more time than just playing with a new tool or technology. And while finishing projects is an important skill to learn I usually do enough of that in the boss's time.
I think there should also be a place for 9-to-5 programmers in this industry. The majority of people just want to make a living and watch battlestar galactica when they're at home. I've worked with a lot of people like that and although I'd rather work with passionate people who do interesting stuff when not working. I don't think it's reasonalbe to expect this passion from everyone.
You should absolutely have a pet project:
You'll learn a lot of things from your pet project because it is (probably) different from what you normally do at work/school. One day some of what you learn will be useful in those areas.
It keeps things interesting. Programming is supposed to be fun; but what you do things day in and day out it can become a drag. Pet projects help you to "keep dreaming" of new possibilities.
Only one?
Pet projects are good. I would be less enthusiastic about pet projects if I had exams to pass. But like most IT office workers, I don't. Or If I had small children to care for. But I don't. Perhaps you should put the pet project on hold when the exams come close?
In fact, I've decided against more MS certifications, since they can only take you from beginner to intermediate on a given subject. A good pet project can be a "deep dive".
You have to be honest - the chances of your project attracting long-term users are small. And the chances of it changing the world are smaller still. Most likely, the main benefit is that you will learn about coding, and the project will be completed or abandoned within the year.
Absolutely - we should have as many as our schedule allows - Programming is a craft that you should be doing because you love it - not just because someone happens to be paying you for it. That being said, in my life, I tend to try to arrange to be paid for my pet projects...so... maybe that totally obliterates my credibility... but I definitely think if you're coding just because you happen to get paid for it - you're wrong.
Pet projects can be your carrot or Code Kata.
Sometimes during long maintenance cycles I like to have carrot type projects to reward myself. It might be playing with some ideas in a new development environment or tinkering with something to do with some upcoming development project.
If you know you get distracted, maybe find something shorter to do, like solving puzzles Itzik Ben-Gan's SQL puzzels [1]
[1] http://windowsitpro.com/authors/authorid/638/itzik-ben-gan.htmlYes, I think pet projects are a great way to get experience and extra skills in areas you might not otherwise encounter in school or work. If it's something you enjoy, I think it will help prevent you from "burning out" on programming in general, which you might do if you only associate development tasks with work that you must do.
yes, absolutely have pet projects, they keep you interested in the field, as opposed to just slogging at a job.
i have several pet projects, so many it's getting hard to feed them all:
my last pet project, simple application monitoring for .NET applications, has become my first product [3]. Always have a "fun" project to keep you enthusiastic. If your 'fun' project turns into a sellable product, even better!
[1] http://extremeprogramming.orgI'm still not at what would be called an advanced level, but coming from a non-computer science background I find "pet-projects" extremely useful. I find I learn from both pet-projects and work-related projects equally, and doing both seems to round me out somewhat.
When I'm doing a work project I am more mindful of the fact others will see and evaluate what I do, so I find it keeps me sticking to proper principles, good design, and other things I might otherwise get lazy with working only at home.
Pet-projects let me explore tools (APIs, languages) I would otherwise not have the chance to, and I meet certain problems I don't meet at work. I do learn a lot at home, and it fleshes out my passion (?) towards programming a little more being able to create with freedom. I also agree with what others have said: it keeps you interested.
I'd personally say yes, but then it would depend where you are in your career and so forth.
You might be interested to read Chris Wanstrath's Keynote from Ruby Hoedown about this. He talks a lot of about side projects and their benefits, starting about a third of the way into the talk.
I'm fairly new to programming as a profession, but I think it's helpful to have a pet project or two if you have the time for it. As others have said, it's great to work on something completely different than your day job, and there's no deadline or pressure, you just have fun experimenting.
For example, I'm writing a very simple plugin for Rockbox [1] which is written in C. I work with .NET all day, so sometimes it's fun to use a new language that's "closer to the machine". And, if I push bad code out to my MP3 player, I get the chance to reformat it! ;)
[1] http://rockbox.org/Yes, but only 20% of the time, like Google
20 percent time:
I don't have one right now, but I try to be very active in speaking in my local UG and local MSDN Sessions to make up for it. :)
I don't have much time for personal projects at the moment, but I am creating a lot of example code from my day to day work, and creating a library of common code blocks (vertically - database, DAO, model, functions, website/command line/GUI) that I can use in future projects.