To clarify, I find that there are all sorts of fun, interesting little side-line development projects that get suggested or that we think of that improve the application we're working on, or the processes within the company that, for whatever reason, we aren't able to do at work or during business hours.

Should we create and contribute these by working on them in our own time?

If you've done this (or do this regularly), what's been your experience about how the 'extra' work has been received?

What are the benefits, pitfalls or dangers to doing this?

+3  A: 

You should be able to leave your dayjob and have a life afterwards, but alot of programmers love programming, so why not? I myself was working on a way of automatically creating forms from stored procedures and meta data for my own project, and then work suddenly wanted an admin site fast. It means I can use my system, and come out looking like a fast developer. The problem is if your business comes to rely on your outside work, and the fact that they can take ownership of the code if you haven't sorted the legal field carefully.

I would suggest not going solo into a personal project that you intend to bring to work without letting your employees know beforehand.

+4  A: 

Extra work is always well received.

On the upside you learn a lot, keep you knowledge going up and you'll probably end up being a better worker which in turn use to improve your possibilities for a promotion.

On the downside, don't expect a promotion just because you're doing extra work nor expect a lot of recognition for it as it won't come.

Anyway it will help you get noticed which is almost as important as being good. So, if you like it, do it, it will help you no matter what.

About the pitfalls, don't get too absorbed, you'll always need time for you and your family and no work deserves more than your family do, no matter what, no matter when.

Jorge Córdoba
+1  A: 

It really depends on the collegues and the boss.

At my current work they appreciate it very much and they are happy that I'm not the 8hour-type guy.

At a previous work I made some small works like this and next time the boss expected to do something in my spare time at home.

Either way, I guess if it makes your work and life easier or happier, you should do it.

+2  A: 

I personally avoid working on my own time, every now and then I need to work from home after working hours but this is when time-zone differences mandate it. Try to keep your home-life a separate entity otherwise you may find that all you have in life is work.

+1  A: 

never, ever do coding favours. You will regret it. I've generally found the reception to be thankful at first, then this comes to be expected from you. Do yourself a favour and forget about it.

+32  A: 

I've done this before but I try not to. The real pitfall here is that you make it a habit... and when you make coding for work in your off time a habit, what you're essentially doing is giving away part of your life for free to a company that probably didn't care at all that you spent your entire weekend coding that awesome new feaure. When your company doesn't care about you, don't give it more than it asks of you or you'll find yourself being used. If you want interesting projects, think of one of your own and do it for your benefit-- it's your time.

Loren Segal
Actually that's a good point. If a company values you, it'd give you the time and resource to do the project during work hours.
This is kind of a cynical post. I don't know about you, but I don't have that kind of distant relationship with the company I work at. But if you do, there are probably other problems you need to work on before thinking about how to deal with coding on your own time.
The main problem is that there aren't too many "good" companies, who care about their employees. It's still "cogs in a wheel" approach out there.
Rahul, even in smaller companies where your work is valued and you have a good relationship, it's not quite the right thing to do. "But my boss takes me to the bar every week!" isn't a justification to work for free. You don't do favours for managers, unless the manager is your absolute best friend.
Loren Segal
"BUt my boss takes me to the bar every week" isn't the justification. But looking at "managers" in disdain, as some distant "other" group of people that don't properly value your efforts, comes across to me as cynical. I'd rather keep an open mind. :)
+2  A: 

I think that programmers will always want to work on interesting projects, whatever the end use. I'm sure there are potentially a lot of issues with developing software outside of work and then bringing it in at a later date, and talking with work about what you are doing is a very good idea.

My main feeling however, is that you should take care when doing this for your own personal well being. I think it's important, no matter how much you enjoy your work, to make time outside work be divorced from work as much as possible. Mulling over the problems of a day is totally normal, but I think it's really good to break away from work and do things totally unconnected to it. That gives your mind room to breath, so to speak, and I often find that having my time off as totally "off", lets me return to work with renewed vigour. Often I find that my mind has been turning things over anyway and that a solution to a problem may present itself.

I play the guitar, amongst other things, as it's a totally un-computer based occupation and I find that helps stop me getting stale.

Nice answer :o) I think time out is so important too
+1  A: 

Another option for those little side developments is that if your contract allows for it, and be sure it does, develop those little tools on the side, and place them under something like an MIT license (so they can be used commercially at your Job) and release them open-source.

This way what is really happening is that you are simply leveraging open source software to make your job easier, always a worthy route to take. And on the other hand you are providing your free time (not paid for by work!) and programming passion to the programming community.

Robert Gould
+2  A: 

I'd say this is a totally personal decision. Here's what I think to be the things to consider:

  • Is it fun to you (obviously it is)?
  • What does your spouse think? ;-)
  • Do you care about who owns the intellectual property rights for your code? In Europe, they belong to you automatically, if you don't give them away in some contract. Some companies might have working contracts that imply that, however. As long as you do it in your spare time, I can't see how it should not belong to you, but I'm not a lawyer.
  • Do you care whether you are rewarded if your company profits from work you do at home? This is a matter of your personality on the one hand and your employer's corporate culture on the other hand (for example, getting respect for the work from your peers might be a very good reward)

If the work you do at home has a positive net effect on your day job, it might be a good idea for your employer to encourage doing it in the office and sharing it with your colleagues. Maybe it's time for introducing 20% projects at your company?

Hanno Fietz
+13  A: 

I think it depends on your company culture. Figure out whether that kind of mentality is appreciated -- do others work on stuff from home? Can you get some sort of reimbursement for hours spent outside of working hours (if you wanted -- you may not, but some people might have different priorities). If you check in code you wrote at home at 11pm and break the trunk, are you equally responsible as if you did it at 10am at the office?

Here at the office it's considered extremely awesome of you to work on stuff from home outside working hours, but it's not required (ever), nor is it reimbursed. If you personally feel like you could contribute something to a project at 10pm, that's something you're allowed to do, but obviously if you break something you're expected to fix it again later. This way of working has led to a lot of nifty tools being made for meta-purposes that we would never have gotten around to otherwise. So for us, it's useful, but has no actual consequences or benefits for the employee himself other than gratification.

Basically, before you get started on something that isn't covered by your contract, make sure to cover your ass by having a chat with your boss, colleagues, etc and figuring out how it would fit into your ecosystem.

Oh, and remember one potential pitfall: if you tell clients that you're working on stuff in your own time, they may start assuming that you're able to help them out on Sunday evening. So be extremely wary of bragging to clients about how you built something they didn't ask for, or spent a little time at home fixing some extra bugs. On the other hand, some clients might appreciate it enough to offer extra fees to your company. Either way, watch out for that.

+2  A: 

It all depends on what the project is really. If its yet another PHP page or a Perl script doing something with a database then no chance. But if it is something interesting which involves you learning new skills , which will improve your CV and which won't get done in work time for political/time reasons then go for it. I recently did a work job in my own time as it involved learning to use a new embedded processor. Now I have another skill for my CV and I enjoyed doing it anyway.

But as the other posters have mentioned be very careful if you do this and make sure it won't become something you will be expected to do in the future. Its a fine line really so good luck.

+11  A: 

I don't recommend this at all.

Working heroic hours (working at home is the same as staying late in the office) may seem like a good idea, but it almost never is. Your employer will come to rely on and expect your extra productivity "that's just Andrew, he doesn't have a life, he works late etc." You probably won't be rewarded (either with a raise or with excessive recognition), which is something you might come to resent if it goes on long enough. I've definitely got myself sucked into this and gotten a martyr complex over it, so I'm calling myself out here.

Instead, think about going through proper channels at work. If a casual suggestion seems to interest your manager, write up a proposal and ask to present your idea. Argue logically about why you think something needs to be done better and how it will "help the company" (yes I know, Office Space reference) -- save money, raise revenue, reduce risk etc. If it's actually a good idea, then they will be happy to allocate staff time (which == money) to it, but if it's not worth anything to them, then it's not worth you doing it for them for free.

Worst case, you'll get some credit for being inventive and showing initiative. Managers love it when you show you can communicate effectively with non-techie "business" managers.

If you are doing extra work that isn't called for, be very clear up-front about it. Your company may actually want you not to work extra on things they don't necessarily care about and wear yourself out. Most studies show that people only have about 5 hours of really intensive mental focus productive time to give each day -- you don't necessarily want that time to go into your "fun" projects and have the things that matter to your company suffer, either.

Even if your bosses do like the idea, be sure to set boundaries -- tell them that you are just developing X or Y component to scratch an itch and you hope you will be rewarded in some way at work if it pays off for the company. (And be sure to follow up and ask for a raise if it does! Even if you don't get a raise right then, they will remember better.)

We all have ideas for fun projects, and often these are naturally suggested by things at work, because we spend a lot of our time working and thinking about work. But, if your company doesn't go for it and you really want to scratch the itch, try to think of a way to spin it off as a separate project you can do on your own. This is how I've wound up contributing to FOSS projects (geez, framework X really needs a Y!) which brings psychic rewards, and it's also how lots of companies like Intel and Google got started. :)

+2  A: 

It Depends

You really should be doing some coding projects in your own time anyway. You should always be devoting a little time to staying current with new technologies, frameworks, languages, code patterns, editors, etc. I'm pretty sure I don't need to explain why. :-)

Now if you're going to be spending a lazy Sunday afternoon really getting to grips with this new Java web framework you've been hearing about anyway...there's nothing obviously wrong with trying to solve a problem you've run into at work. It might make your bosses happy, and it'll look sexy on your CV - win/win, right?

Also, as others have mentioned, give some thought to licensing. Unless your contract or other agreements preclude it, you should definitely make sure to license anything you write under a permissive open source license. Let your employers do anything with it they like, but keep ownership if at all possible. Something like the ISC license is great for this.

The downside of course is that you need to make sure people don't ever start to expect you to code up solutions on your own time!

Incidentally, many organizations solve this by actually encouraging their employees to work on oddball ideas on company time. Google does this with their "20% rule" but Atlassian has a similar policy with their Fedex Days. Whatever you call it, I think it's an excellent idea - you might take a shot at selling it to upper management at your workplace. (Good luck!)

Cody Hatch
Nice answer, thanks for the link to the ISC license too. If I include the ISC license, does it have the be visible in the Work software (such as in an about box?), or just saved as a readme in the checked-in project?
The ISC license says that you should include a notice with all copies - binary, source code, etc. The normal way to do it with binaries is to bury it deep inside the documentation, but in an about box would work too. Of course, you could use a more permissive license. *shrug*
Cody Hatch
+1  A: 

If possible, you should see if your work will allow you to work on those projects on work time - Ie, set aside a couple of hours or an afternoon a week where you can do those 'blue sky' projects.

Then you can work on your own non-work related projects at home.

+1  A: 

I'd say yes go ahead ... but make sure that projects you do in your own time are not only beneficial to your work but mostly to yourself too. That could be because of experience gained, of because you are working on a project that you can take with you when you leave (open source works really good for this one). I don't recommend working in your own time to catch up on stuff you really should have done at work.


In the past I have gone home after a long days work and continued with the project, it allows me to get well ahead of the curve and have a more relaxed day.

Unfortunatly I came to a project recently where my BOSS decided that me doing this was against the security interests of the company and has instructed me to stop.

Now my days are stress filled deadlines and evenings are well.... a bore

So my advice to you all is..


N.B. No yoda quotations please

+1  A: 

The answer is... It Depends (which you've already figured out based on other responses). I try not to do work stuff from home. Unless, I can use it for multiple projects and jobs. Then, I'll often work on it at home, and offer to let the company use it.

I've done this a few times now, and since it was developed at home, using my own resources, I've taken the project with me when I left, and applied it to a new position later.

+2  A: 


I used to do it a lot, when my job required me to be on call 24/7. I was given a laptop at that time, so I used it to continue my work at home. This did not help my other responsibilities (marriage, family, chores, exercise, etc.)

Now, I am no longer required to be on call and was switched to a desktop at work. The most work I do now at home is brain-storm, and I don't need a computer for that. Also, I arrive to work rested, with a clearer mind and new ideas.

+1  A: 

I've done it before, but only to make my life easier.

I worked in a company that had minimal admin apps, meaning that I'd constantly have to go into the raw database to create or modify records. I personally didn't want to do it because a)I didn't want the responsibility b)I'm not a data entry person so I would create some simple admin tools on my own time so that the business could pass off the responsibility to someone else.

Giovanni Galbo
+1  A: 

i say yes and no, and have been in the situation before. you're walking around in the halls and think, "damn - i could code this thing in a day and a half and it would be fun." for me it's always ends up being an excuse to learn something. for these reasons (fun / learning) it is a great idea.

here is the bad part: software lifecycle. once you deploy your new toy at work (to yourself and your peers, perhaps) someone has to maintain it - and that someone is you. now all your peers are your direct customers and when a bug in your code is found you hear about it until it is fixed. if your team is organized using scrum, you now have new tasks to complete that the team has not committed to. so now you're doing maintenance at home too.

if the maintenance issue doesn't effect you, i say go for it. if you have identified a problem to solve with a nifty program that you'll enjoy writing, it'll just be good practice.


brooks hollar
Nice Answer :o)I hadn't considered the maintenance aspect to creating tools for use at work
+1  A: 

I wrote a date utility in my own time for my current job. It was writting in assembler, and I re-wrote it to do all the same functions in cobol. Should I have done it? Not sure yet, but it's being used now, and it has been nice being able to maintain the code, where with the old version, there was nobody left here that could make small changes, add date formats, etc. Although I didn't get paid for doing the work, there was a fair amount of reward for doing it, not just from other programmers, but for myself as well.

+1  A: 

I write tools that I think will make my job easier. If they work, I showcase them. A working model is anyday better than a proposal and so this works better than if I'd tried to first suggest something.

Also, when working on these tools, I usually experiment with technology I don't know. That helps improve my own skills.

So yes - if you are enjoying what you do, no harm in doing more of it in your own time.

Vivek Kodira
+3  A: 

It's the same for me: if a tool makes my days easier, I just write it and don't think about salary. If this tool is then finished, I make it openSource and hope there are some people out there, who had the same problems and find it useful too.

Nevertheless it's training your skills and you are not stuck in an "customer"-environment, you can try things out which you don't have to justify.

+2  A: 

I think writing software on your own time is fine if it's your own choice. I go to work 8 hours a day, but I'm not working all 8 hours. So when I do work from home, I see it as filling in the time I was just browsing the web. If I can think clearly at home, I'm taking advantage of that time because it helps me stay employed.

+1  A: 

Open source is a way to fill your spare time in case you have nothing else to do... Well this site does that also :)

Iulian Şerbănoiu
+2  A: 

If you're talking about work that is to make your job easier, yes!

Make sure your work for your customers gets done, but absolutely do some work for yourself. The more you empower your own development, the better results you can produce. It's the same principle as getting a nice chair and keyboard; when you're accommodated, so are your customers.

Also – just like buying a nice keboard, if you write code for yourself, you can take it with you when you leave.

Kevin Conner
+1  A: 

Who cares if the company you work for values your at-home time or not?

A while back, while I was working at an evil corporate computer repair store, I wrote a web application to help them keep track of computer we were repairing. Before then, we had the check-in system, but it wasn't built for computer repair, so it didn't keep track of the broken computers past "It exists and the customer hasn't picked it up yet".

Anyway, no one used it because the manager still forced everyone to keep a paper trail as well as the new computer system, and I don't expect anything that adds additional work, not matter how helpful, to be used.

You know what I gained from the experience? Experience. I learned a bunch of CSS, PHP, AJAX, MySQL, and had fun doing it.

If my attitude was "don't give out anything for free" I'd never learn enough to start charging for my services.

+1  A: 

I tend to write things at home under a Open Source license in order to cover my but and to make sure the company I work for does not try to screw me over and call it their own.

+1  A: 

Speaking as a freelancer... I don't write anything that is directly tied to any of my clients or their projects unless they've agreed to pay for it.

If something seems like a fun/cool/useful idea, then, sure, I'll write it on my own time, but then I own it, lock, stock, and barrel, and will probably throw it out to the net under GPL if it turns into anything more than a toy (or tool) for myself.

Dave Sherohman
+1  A: 

If you work extra, then some people calculate the next project workload and you get some extra work again.

+1  A: 

I've got several "pet" projects that I've worked on at home and then a work's client has needed something similar so I've used my own code.

The reason? It's tried and tested, I can charge the customer the theoretical time it would have taken me to do from scratch and implement it in no time at all and I get to make a nice profit.

Don't tell my customers that though!

The downside is that because it's "your" code, you end up supporting it (but any bug fixing on company time can be replicated on home time) and it may cause issues as others aren't fully versed with what you've implemented.

On the whole though it's not a huge problem - although as many previous posters have said, it'd be nice to get a bit of recognition!