I have mixed feelings about side projects. Sure it sounds good and looks good but let me tell you my own example.
I am a single core processor.
I am pretty much capable of doing pretty much just one thing at a time. I've tried to multi-task to the point of switching off from what I'm doing at work to something else but it just doesn't work. One or both of them suffer.
I tend to be engrossed in what I'm doing at work. If I'm bored with what I'm doing I'm in the wrong job and that just doesn't last long before I throw in the towel.
Sometimes I'll work on that problem more. Sometimes I'll just do research/reading on that or related topics.
But I just don't really have the knack of switching off from solving that problem and picking up something else with equal vigour.
I have the same issue when it comes to learning new programming languages. I tend to have limited success when doing it on my own. Where I succeed is when I HAVE TO learn a new language, typically because that's now my job.
It reminds me of the scene from Swordfish where Travolta and Jackman are being chased in the car by a hit team, Travolta hands over the wheel to man the machine gun. Jackman says "I don't know how to drive this." "Learn!" was the response.
I get the feeling that the US (I'm Australian) has cultural differences that come into play here. For example, the education system in the US seems to have a very strong focus on extracurricular activities, something that doesn't seem to exist (to anywhere near that degree) in Australia. This includes sports, social clubs, community service and so on.
So much so that it can be an important part of getting into the right college and then the right graduate school (Australian universities, at least when I got my degree, typically just looked at your Tertiary Entrance Score and that's about it; in fact the whole system was AUTOMATED on that). The TES being a scaled combination of exam and coursework.
I wonder if there is a culture of multitasking because of this?
Whatever the case... I am a single core processor.
But people aren't single core computers. You're not going to tell me that all you ever do is work on one program. You go play squash in the evening, you have a barbeque in the weekend. The point isn't that, during your work day, you switch between 'job' and 'side project' 5 times; the point is that you work on your job in the daytime, and then at 10pm you hack a bit on that one algorithm you didn't quite get right, or on that lost sunday afternoon while you're waiting for your in-laws whose flight was delayed for 3 hours you experiment with that unit testing framework for language xyz you're been looking at. That's not multi-tasking.
Hmm, I don't feel the same way (like I'm a single core processor). I'm not from the US, though.
I often feel like I've gotten stuck for a bit on a main project, and it'll help me to stay away from it a little bit by working on a challenging distraction project. That gives me time to mull over the main project (mostly not at a conscious level), which will often be easier to get traction with after I've made some progress on the distraction.
So perhaps I am single core, but with a pipeline design. ;)
Maybe I'm picking a nit here. But even a single core processor can do multi-tasking, that's what a modern OS such as Windows and Linux is doing.
In your case, it could be caused by many factors. One possible reason is that your task switching itself is the bottleneck, say, saving current context into stack and loading previous context from stack. It's very fast in computers just a few memory access and overwriting a few registers, human brain cell is different storage, the process may take much longer. Not sure if it can be trained to be faster though.
Another possible cause (and maybe worse) is that the main memory is very limited, such that only one of tasks can stay in the memory, every time you need to switch to another task, you encounter a page fault that triggers the OS to load the task from the much slower hard drive. I guess maybe it's the case in brain as well, there are areas for storing short-term memory and for long-term memory respectively, while the former has faster access speed but much limited capacity.
In your case, in order to maximize your throughput, you make the multitasking OS running into a batch mode.
I understand the issues with being "single core processor" developer. The way to deal with it is to set aside one or two-week time period for the side projects. Use those times exclusively for the projects, doing them one at a time. So far it has work well for me.
Per my contract, every creative thought and act I perform while employed belongs to my employer. My contract could be interpreted to mean that even my comments here are owned by my employer. Rather demotivating for genuine side-projects.
My father has worked at IBM for 25 years and they have these kind of contracts, and hes gone as far as to try to get them to release him from any IP responsibilities for his homebrew beer and the labels he designs for the beer, and legal wouldn't clear it.
I asked a question about this a while ago on HN, and even threw in the point that I've charged the MacBook with my side projects on the employer's AC outlet (but never used it at work, nor used their network).
The popular answer: buy another battery (carry two) and explore another job.
My interpretation was that if I did work-for-hire e.g. contract work that I never owned (because it was done for a client), then I could develop a portfolio (while not true side projects) outside of work. An extension to that is to work on projects with diffuse ownership (many people on the team). A further extension is to work on purely pro-bono projects (I do find pro bono projects more creatively fulfilling than the constrained business app-type contracts)
Either the headhunters for mobile app developers either don't understand the side project thing or the companies that are using headhunters don't understand it. A company said 'Yes, you can work on your side project as long as it does not use any of the code that we write here'. Really? They don't seem to understand that any decent programmer is constantly rewriting/refactoring/debugging/refining their personal, homegrown library of code and that there is a fair amount of infrastructure/frameworks that is never written from scratch. So, I think this is why so many BigCos are now turning to training their in-house developers on native mobile stuff.
California is unique in that its laws expressly establish that the employer owns trade secrets created by an employee. (Cal. Labor Code Sec. 2860). However, an employer in California would not own trade secrets created on an employee's own time without the use of employee materials. Although the law does not require a contract, it's a good idea to buttress your position in California by the use of a written agreement.
I've found that most of my coworkers over the years don't really react very well to the idea of me having a side project-unless they have one themselves. I think they believe it's pretty strange to making something not work related.
I'm not sure I've worked with many programmers at all who read on the side let alone make much of anything. Maybe my experience is just weird.
Or family and friends, or dealing with the bureaucracy of the craptastic health care that is against providing your autistic son anything besides false sentiment and lies. Unfortunately, the tech industry places too much value on things like Twitter.
Don't quote me on this in a court of law but I'm pretty sure all of my current main sources of income (other than consulting) started life as side projects, including a site I sold for 5 figures, a technology I sold for 6 figures, and most of my current sites which provide a day to day income now (the biggest of which was set up as a side project to try and help promote a book I was writing at the time). A personal blog I started in 2003 as a laugh made mid 4 figures every month in 2008 with Adsense (but almost nothing now, bah). I started an e-mail newsletter as a side project in August last year.. now up to 12k subscribers across 2 newsletters and making a little money some weeks.
Side projects rock! They sniff out your true interests and true motivations. But.. I doubt they're for everybody, naturally.
I recently applied to a PHP dev position. I told the CEO that if hired I would still be working on a side project or two...didn't get the job. Obviously not the kind of place I want to be working, anyway.
Balance, though, is key. I've never quite managed to figure out how to make sure an exciting side project doesn't consume my life leaving everything else to rot, or conversely, how to keep a side project sufficiently alive when swamped with more important things.
I always make sure the work that's paying the bills is done, before I work on the side project. Other than that, I'll typically commit to 5 hours a week. Usually in 2 sessions.
having a dedicated time to work on the side project tasks is a good idea. Balance does matter and it is sometimes difficult to stop what you want to do on the side project. OP's point about not getting into analysis/paralysis is the reason that I work on the side projects just to get see if the damn thing works or not.
I can definitely relate to the part that talks about analysis paralysis. When starting a new project, like everybody else, I'm usually faced with several different options on how I'm going to design it, which libraries I'm going to use, what the overall architecture is going to look like, what features I'll implement and so on. And very often, I get stuck deciding between two options, weighing which one is better, which one might prove to be a bad decision in the future and which one might make my code more flexible/inflexible to change and refactoring.
But then I slap myself (figuratively, of course) and remember to "just do it". To just release any kind of working code, never mind if it's a suboptimal design, never mind if there are a few bugs or if it's slower than it could be. The important thing is to release anything. The code can be improved upon after that.
My latest side project just attracted attention in a big way and it looks likely that we (myself and my brother; we worked on it together) will be founding a startup around it soon. We started the project for fun and all we expected out of it was some cool toys to play with, a little "oh thats cool" publicity and a fun learning experience. Its been a crazy past few weeks.
"It seems strange to me that there exist developers who do not have side-projects: exploratory exercises in coding, tinkering, and scratching personal itches that run on the weekends, or here and there in the evenings as a replacement for mindlessly consuming mass-market entertainment. Do these people not enjoy their chosen profession?"
I started programming very young. I initially didn't want to get into professional programming because I didn't want to ruin my hobby. But reality set it in and I needed a decent-paying job.
For the first few years, I literally did zero programming on the side. I simply didn't have the energy left. I used it all up at work.
But then a couple years ago, I started having enough energy. Now, I love to do side projects... That is, if I can find one worthy of stealing my free time. (Lately that hasn't been a problem, though.)
So I can imagine it quite readily, even for the most avid programmer.
For me it was learning Ruby that changed programming from something I enjoyed doing as a job, to something I also loved doing as a hobby and a passion. That was several years ago and since then I've worked on many side projects, many of which are not Ruby-related.
I once met a few developers through a friend of mine. My impression was that they had no passion for the job. Programming pays well if you're good at it. I think there are a lot of programmers who are just paying their bills.
Tolstoy was one of the richest men in 19th century Russia. His situation isn't the least bit comparable to a middle class nuclear family of our time, where parents actually do the work of raising children and hold down jobs as well.
For the first few months, having kids meant zero time for side-projects, but these days it just makes me much more focused in the free time that I do have.
Side projects are great. They are great motivator for learning new stuffs. There are so far you can go with tutorial or sample codes. You have to do it in a serious enough project to learn the nitty gritty details.
Some of them will die away but some will stick. Here're my recent more successful side-projects.
I always have had some small-ish projects on the side. Some for fun, some for more serious things.
Most didn't make it past the prototype phase, expect two of them. And one of them helped me a lot when I was interviewing for the current job (it is actually a non-trivial/large project).
As long as they don't become your main focus, small projects will actually help on your day to day job. (you end up applying a lot of the things that you learn on your side projects, to your day to day job).
Cool, game ww250.
BTW are you looking for a job? I am working currently at Yammer, and we are looking for few good Android developers. (iOS as well). shoot me an email at ardit33@gmail.com
My side project turned into a consulting company and fed my family for 4 years. Now I'm on my own again, still consulting. Its kind of like every project is a side project - they change from month to month and lots of new development.
Now my main project gets to be my family, which is really a great life. Envy me.
Interesting, the most successful team side project I've ever worked on - we met regularly every week at a coffee shop.
Looking back, that served two purposes - one, nothing beats face to face debugging and arguing over the merits of various UX approaches and two, having that weekly meeting was a hard deadline - that pushed each of us to get their stuff done and committed to the repository before the meeting (even if it was 5 min. prior to the meeting).
I like side projects. I have a few myself for many of the reasons listed here. In fact I'm much more inclined hire someone who has side projects. It shows they have a passion for programming/creating things.
I am a single core processor.
I am pretty much capable of doing pretty much just one thing at a time. I've tried to multi-task to the point of switching off from what I'm doing at work to something else but it just doesn't work. One or both of them suffer.
I tend to be engrossed in what I'm doing at work. If I'm bored with what I'm doing I'm in the wrong job and that just doesn't last long before I throw in the towel.
Sometimes I'll work on that problem more. Sometimes I'll just do research/reading on that or related topics.
But I just don't really have the knack of switching off from solving that problem and picking up something else with equal vigour.
I have the same issue when it comes to learning new programming languages. I tend to have limited success when doing it on my own. Where I succeed is when I HAVE TO learn a new language, typically because that's now my job.
It reminds me of the scene from Swordfish where Travolta and Jackman are being chased in the car by a hit team, Travolta hands over the wheel to man the machine gun. Jackman says "I don't know how to drive this." "Learn!" was the response.
I get the feeling that the US (I'm Australian) has cultural differences that come into play here. For example, the education system in the US seems to have a very strong focus on extracurricular activities, something that doesn't seem to exist (to anywhere near that degree) in Australia. This includes sports, social clubs, community service and so on.
So much so that it can be an important part of getting into the right college and then the right graduate school (Australian universities, at least when I got my degree, typically just looked at your Tertiary Entrance Score and that's about it; in fact the whole system was AUTOMATED on that). The TES being a scaled combination of exam and coursework.
I wonder if there is a culture of multitasking because of this?
Whatever the case... I am a single core processor.