Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

The title is a bit vague so let me elaborate: I develop both hardware and software, and I'm in a position where I get a list of 'large' tasks/projects to do but not on a regular basis. Sometimes there's 10 new things to do in one month, other times months pass by without any real deadlines. This gets combined with 'small' tasks/projects/bugs that are extremely urgent. Basically no one but me is in a good position to decide how much time I spend on what, and when I do that: the basic philosophy is 'you do whatever you want, whenever you want, just make sure the things that are urgent or have a deadline are done in time'.

Firstly I'd like to hear from others if they are working in a similar environment? The reason I'm asking is that I do not know many other programmers in person, and the ones I do talk to are more in a typical '9 to 5' job and their time is rather managed by, erm, managers.

Secondly, for those that are in a such a situation, did you ever find yourself spending huge amounts of time on something that was not really necessary, hereby kind of abusing your freedom? I'll give some examples: about a year ago I spent at least a month on writing a build server application, only to abandon it last month in favour of Hudson. Which again took several days to setup. Sometimes I find myself losing huge amounts of time refactoring a core library for the xth time although it's not really needed. Once I spent weeks studying the ins and outs of digital filters, while the actual task was making a basic bandpass filter that anyone could probably do in a day or so. Then I changed my mind and went with an analog implementation after all. Please share similar stories.

share|improve this question

closed as not constructive by Walter, gnat, Thomas Owens Nov 12 '12 at 13:22

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Yes! I am also working on this kind of environment and I find it much flexible "you do whatever you want, whenever you want, just make sure the things that are urgent or have a deadline are done in time" –  Tech Jerk Nov 13 '10 at 7:31

5 Answers 5

up vote 5 down vote accepted

I'm in a similar situation. About the only management interference I get is "we pay you to work at least 40 hours a week, so work at least that much." I could work four days a week if I chose (although it would be wise to let my team know how to contact me if they needed information from me on that fifth day off).

I have developmental tasks that have a priority and (sometimes) a timeframe on them. As long as the job gets done, people are happy.

I do agree with your sentiments a bit. Sometimes a developmental task will come in that I just know is going to be horridly complex, or involves me understanding a part of the product that I don't understand, and sometimes I find myself writing a few extra tests or dealing with a few bugs raised by testers. But at the end of the day, as long as things are delivered on time... Well not even that. Things could be late. Shit happens, right? But sometimes things die down, and all I've got to work on are bugs. My team lead is partway around the world as well, and there won't be anything allocated to me in terms of development tasks (and there won't be until he wakes up). So I'll just pick up the most interesting unassigned thing. Or I'll take a liberal lunch break. Or I'll go home early. Or I'll work on a different project. I'd even code personal projects, although I've not done so. Or I'd go home early.

The freedom is good, but freedom of what you do doesn't really equate to freedom of responsibility. It's still a job, right? If I've held up what I was employed to do. We've got some stuff lying around that's perfectly capable and really quite cool, but it doesn't really have any immediate use for our customers. Maybe one day it will. Maybe it won't at all. I had fun writing it though. If I hated what I did and couldn't do anything when I was bored and had nothing to do, I'd probably be jumping ship.

share|improve this answer

I do that, and I usually chock it up to career and skills progression or investigative research. It's almost always a work-related task. I can't say I've ever done it on the orders of time you have (ie. weeks), but I'll spend an extra day or two making some code that was fun to write really clean because I don't want to leave it yet.

Or if I've got to implement something (let's say, some kind of persistence) I'll try it in both EF and NHibernate. Things like that.

The only thing I don't really do is personal projects on company time. What I write on their dime, they own. It's in my employment agreement, but even if it weren't, my morals won't let me write personal things on their time.

share|improve this answer

You may want to consider it from a positive angle. The money you get paid to do unnecessary work that interests you is an investment the company is (unwittingly) making in you as a developer:

  • It keeps you from getting bored. It sounds like you're easily getting your tasks done; if you got bored and left for more interesting positions, the company would take a hit. They're paying to avoid that.
  • It improves your skills. Maybe you didn't end up using a digital filter that one time, but if the need ever arises, you'll know what to do. Maybe you didn't use your build server, but the experience of writing it makes you a better developer on the whole, which can be applied to other tasks.
share|improve this answer

I have had similar circumstances though it has been years since I had that much undirected time - I usually find all kinds of ways to overcommit myself these days. In the past I used the time pretty well I suppose; learned a lot of things that I did later apply. I also did asinine things like spending an absurd amount of time implementing my own inter-process communication protocol complete with my own implementations of basic data structures like hash tables. This actually was at a 9-5 job but they just didn't have enough real work for me - my boss needed me to do a few key things and every now and then I'd get a rush project but it wasn't hard to keep him happy.

share|improve this answer

For me, most of the time projects come in throughout the course of a year with deadlines and those get coded usually without delay and are out the door fairly quickly. The remainder of the year is left for small requests, ad hoc projects, R&D, and personal pet projects. Those get done on my own timeframe.

For the most part people don't care what I do or when I do it, as long as the project is done ontime and error-free.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.