I'm a software developer. I work in an office from 8 to 5.30. There are some days when I have lots of code to write. Some days I don't have anything to do. At all. My boss is aware of this, so I start doing personal stuff like reading, browsing the web or even other projects. Does this sound ok to you? Am I ripping off the company?
No it doesn't sound OK. If you have nothing to do, I would be concerned. I have almost never known a software developer with nothing to do. That's a huge red-flag that your job is in danger.
First have you told your boss you need more work? Have you made suggestions for work that can be done during an unavoidable delay (I can think of almost no code bases that couldn't use some more tests for instance), is there professional (not personal) reading that you can do? Are there other employees who are working overtime that you could offer to help? Are them some work-related projects that no one has has time to do. You know the boring stuff like clean up the code repository because somehow stuff has gotten put in multiple places, or make an application to make doing timesheets easier, or...
Software can always be improved. Here are some things you could do when there is no immediate need for code:
- Automate any manual part of the build and deployment process.
- Automate any manual testing.
- Improve test coverage.
- Refactor any part of the code that is difficult to understand.
- Investigate new technology. For example, if you are using Java, then look at Clojure or Groovy or Scala.
- Suggest improvements to your current products. If you don't know enough about the users to do this, then learn.
- Prototype new features or products.
I'm sure you can think of a few more.
Part of my job description reads:
Continuously follow and seek opportunities to improve development standards & practices, technical designs & architecture & governance structure.
Loosely translated, as long as I'm reading material (dead trees or online) that is relevant to my job and/or professional development in my field, I should be taking at least a little time during my work week to be doing it. If that means taking 2 hours/week to read the blogs of a half-dozen experts in a given technology I use constantly in my job (or a technology I'm not using yet, but may provide value to the company), there's no problem with me doing it on the clock.
Other projects? If it's a proof of concept for something at work, or experimenting with a better way to do something, that's fine as long as it doesn't get in the way or my assigned tasks. Personal projects? No way.
The general term I use on reviews is "Not a self-starter." The technical term is "Time Theft".
Generally, companies follow a strict hierarchy: You may have a board, then a president or multiple presidents, then the VPs... These are generally considered "upper management"... Then you may have a lesser set of VPs, supervisors, team leads, etc. These are "middle management". All these sorts are management; that is, they're directing the flow of work, delegating it to the workers. Unfortunately, there are always less executives than workers, which means that your supervisor isn't managing just you, but a group.
By virtue of this, it is generally the managers responsibility to make the most of your time. However, they can not be expected to hold your hand and walk you through each and every moment of your day.
You are paid for an 8 hour day with a 30-minute lunch break. Other than your lunch break (and 15 minute breaks as mandated by law, in some places), you are on company time. If you're doing nothing, you're earning nothing.
Working on other projects can be good so long as the product of those projects advances the company. If you're working on company time, all products of that time have been purchased. That said, you may want to consider saving your personal projects for personal time.
Use your common sense; if you're feeling guilty, there's a reason why. You belong working for the company when you're taking up company time. If they don't have work for you, take the day off to your mutual benefit – they don't have to pay you, and you can spend the time looking for a more productive job (After all, it's better to proactively search for employment than reactively find a new job after being sacked).
On consideration following @Chad's comments, I feel I should amend this post:
While there could conceivably be a situation in which you are in a position at which you're paid a wage for which a general expectation of work quality exists which you're able to supply in fewer hours than allotted, this should not be construed as an invitation to cease productivity and rest on your laurels.
Your question was 'Am I ripping off the company?" and the answer is undeniably yes – you are billing them for time in which you are doing nothing to prove yourself as a valuable employee. Now, consider: Why do you work?
When you took the job, you agreed to a salary for a given set of tasks for a fixed number of hours. Generally, a good manager will hire an employee to perform tasks in excess of the hours of a day at a set price, which guarantees an equitable exchange of productivity (over time) for the price. Therefore, in your proposed situation, one of two things occurs:
- The manager underestimated your capacity to handle work at that price (that is, the payment is a significant overvaluing of the workload).
- You underestimate the expectations of the manager for the quality of work to meet that value.
So let's revisit the question: Why do you work? You work for money, a tool of exchange and the product of effort. Your job is not yours by entitlement, but by effort. Do you not expect when you visit a restaurant to be served not only in a timely manner, but at any time that you enter during business hours, in exchange for your money? Then you have no right to ask for anything without the exchange of effort. Recognize, then, that your highest virtue is your capacity to think, and ensure that you're offering equitable effort for your payment.
For the purpose of this answer I am going to assume that you work in a private sector company in a jurisdiction that has some form of 'at will' employment system.
If you are in the public sector or in a private company in a jurisdiction that makes it difficult and expensive to fire someone then this answer probably doesn't apply.
My experience in the private sector is that there is an ebb and flow of workload in software, it's not unusual to have periods of lower workload. But it is unusual for a low workload period to extend indefinitely, which is what sounds like is happening here.
You need to be concerned about this low workload situation. It sounds as if your company is profitable right now, but in the normal cycle of business there will be a downturn of some kind.
At some point your management will 'rack and stack' each employee based on their perceived value in units of currency to the company. Those employees with the lowest perceived value will be the first to be laid off.
You may well be that person.
If you are in an environment where getting another job is easy, there may be great value to you in having a low stress 8-5:30 job. Many, many software related jobs require much more of your time than that. If you're confident you can move on when the time comes, just enjoy life and if this gig ends go to the next one. Don't worry about it.
If, on the other hand, you are in an environment where someone with your background and skill set might have a hard time getting another position then you need to proactively increase your value to your company.
To do that, what does your company value? If your company looks at software professionals as modern day loom operators, expected to toil constantly at their loom/workstation between 8am and 5:30pm with a half hour lunch and two 15 minute breaks, then you need to do that, even if it means faking it. Of course this kind of company is doomed in the long run anyway.
On the other hand, if you company has moved in to the late 20th century then they may be less concerned with your bio-mass and more concerned with how much you have contributed to the bottom line in the past, and more importantly, how much you can probably contribute in the future.
You need to use this slack time to look for ways to improve your company's product, and to improve and streamline your company's software development process. Try to anticipate what new technologies may be useful for your organization in the future and try to familiarize yourself with them. Perhaps come up with a prototype of a possible new product.
If your organization has periodic performance reviews then that's the best time to bring this up.
If they don't, then consider discussing it in private with your manager.
In either case, be careful. You never want to ask a question to which you can't stand the answer.
It would be best if you could suggest some tasks you could be doing to help the current or future bottom line during these slow periods. Hopefully you'll get official blessing to fill some of slack hours with activities that will benefit both the company and yourself.
It's going to depend a lot on how your company and management feel about it. Some companies expect every minute accounted for. Others take a more flexible attitude.
It's best when such time usage is formally stated, like Google's 20% rule. It also is of benefit to the company since it allows for training, new ideas and so forth. After all, software developers are creative people, not assembly line workers. Treating them like line workers, such as micromanaging with TPS reports, will tend to backfire.
Without a formal guideline, it's quite possible to end up in the "no work to do" zone like HLGEM mentioned. This can lead you right out the door so you may want to find work you can do. Even then, your "make work" may not save your job. On the flip side, some companies like to keep key people more or less on retainer. They may not have a lot to do every single day but what they do accomplish when working more than makes up for the cost of the more or less unused hours. They'll also be expected to work extra time to get a project finished quickly.
Rarely is it OK with me though I have had a few cases where this happened to me:
In a new job, on my first day I had to wait 6 hours for my machine to arrive and be set up. Until this was done, I couldn't really work as I didn't have a laptop of my own to bring or anything other than a book to read that I brought with me. I had another job with a similar situation in terms of waiting for my machine and thus had the appearance of "nothing to do" since I was the only one working on a specific part of the code and thus didn't have others that I'd be working to help get me up to speed.
In another role, I had situations where the code was divided in such a way that front-end developers couldn't touch the back-end code and thus I may get blocked waiting for some calls. While waiting for this, I would do various web surfing and other things as my boss knew what I was waiting for as well as the lack of other things to do. Now, I'd probably look at things to refactor, practices to improve or other stuff instead of doing the thumb twiddling I did do.
A couple of jobs back, I do remember asking for something to do and being told, "Give me a couple of hours to find you something." While I wasn't thrilled with this, I did accept it and went off to look over documentation and try to find something useful to do. This was a job where earlier in my time with the company tried various things that didn't get received well and thus decided to follow the book and stick to the rules. My greatest frustration here was the idea that management would often say how there was tons of things to do yet if I asked I suddenly had to wait? Huh? Quite interesting that time in my work history.
As for ripping off the company, I'd say no as your boss is aware of your activities. I would highly suggest making sure that the personal stuff you do when you don't have work does tie into that work somehow so that it can be justified as some places may have performance reviews where time management, quantity of work and other factors can be used to determine raises as well as if a company wants to keep you as an employee.
The answer to this depends on the company culture. In some companies it would be completely wrong, and in other it would be fine. The important point is that you said that your boss is aware of this. If your boss is aware of this and is completely fine with it then I don't see a problem. You need to avoid communicating this information to your coworkers because someone who doesn't get the opportunity for down time might be envious and stir up trouble with higher level management.
I've been in situations before where we had worked extremely hard to accomplish a project by a deadline, then for a few days after that we were assigned no new tasks. Although our manager couldn't directly say this, the implication was that we had worked very hard for our goal and that we were being given a couple of days to goof off before starting on other tasks. Likewise, your manager might be pleased with your work and is likewise rewarding you by only giving you tasks when there is really work to be done.
If you work in a big company and if this time to goof off represents a substantial portion of your time, then there might be a reason to have concern about your position in the future. Not because of what you are doing, but if your manager can let you have free time like that, then the group in which you work may be subject to cuts in the future when there are some economic pressures on the company to slim down.
This is a position of a software developer, and not for instance the one of a sysadmin. In the latter case it could be that slow days will happens, al the shell scripts are working flawlessly, no user are getting haywire, backups were made correctly and one has a quiet day. The next day a power supply fails catching fire and the data centre shuts down. So in this field a bit of overstaffing it's useful to handle emergencies. For a software developer having empty days means that there's no work to do, and it's a bad sign, because it's a kind of work that the task should be steady. It's either mismanagement or lack in general for work, maybe it's time to look around for better situations.
THis of course doesn't mean that overwork it's good for the same reason states for underwork.
Is doing personal stuff unprofessional?
Yes and No
As a general principle, yes, doing personal stuff at work is unprofessional.
But we're not talking about general principles. The real answer is: It depends.
How is your pay structured? Are you hourly? Are you salaried? Exempt? Non-exempt?
I'm a data analyst on salary. I finish my tasks faster than they come out of the queue, so I end up having some free time every day. Luckily, I do have some mutually beneficial research to do, so I end up reading for about 3 hours a day and still have time to leave a little early.
It turns out that my boss knows all this and loves it. His schedule is moving along faster than he had planned, and I get to work on mutually beneficial learning (new skills that will eventually help the company--and my career even more). In fact, I was recently referred for promotion.
I could do twice as much as I am doing now, but it wouldn't help, because I'm not the bottleneck. If I finish the 100 tasks that have been scheduled this quarter, I'm stuck with downtime until more stuff gets scheduled. And people need to take time out of what they're doing to do that. (This is actually a big deal... work doesn't come from nowhere. Your customers request it)
So, like I said, it depends.
It depends on your pay structure: Salary and piece-meal, doing personal stuff at the office is "more okay" (as long as you meet quota).
Hourly: now you're crossing a line, especially if it's more than just a couple of minutes out of the day or if customers are waiting on you.
It depends on what your company expects: if the company wants you to work every moment you're in the office, fine, that's what they want. But it could well be that a company just doesn't care so much at the moment (say, because your performance is high or because they are staffing up for big projects).