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:
I'm sure you can think of a few more.
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:
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.
Part of my job description reads:
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.
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:
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.
If it relieves tension then it is OK. For instance at one job, a coworker encouraged all of us sedentary people to do push-ups periodically. At the current job, we're obsessed with losing weight and we all talk about that. It's OK if it serves a good purpose.