I used to work quite hard for my master thesis and later, as a research assistant at a university. I would always finish my job on time and then go off to do something else. Now that I am working a full time job as a developer, I am having trouble adjusting to a fixed 8 hour schedule .. I sometimes slack off intentionally because I know that if I finish what I am doing fast, I wont have anything left to do and will need to just sit around for 2 hours until it is time to leave. This off course, does not lead to any sort of fulfillment, but sitting around for one or two hours when I feel like leaving is something I have never had to deal with before, and it also tires me mentally.
Is there any way I can convince myself to bite the bullet and work 8 hours, without looking at the clock all the time ?
You don't need to "sit around" for two hours until it's time to leave. Here's a few things you can do instead:-
It doesn't sound like your manager is used to your work-rate. Take this as an opportunity to impress your new employers. People with a reputation for finishing work ahead of time are valuable - and in software, very rare. Let your manager know that you're free and ready to be assigned your next task.
Alternately you may want to see if you can set up a system where you can "pull" work, rather than have your manager "push" it to you. To start with you can make sure that your manager keeps your to-do list sufficiently long that you never run out, but eventually you might want to influence the working procedures of your workplace towards a more agile approach (where your team has a to-do list, and you grab the item at the top when you're free).
If you think your manager will just give you make-work to get you out of their hair, or if you don't like the sound of asking for more, then why don't you look for some ways you can generate value for the company yourself? See if you can automate a build or a deployment. Introduce a tool to automate the enforcement a policy usually checked by hand. There are usually thousands of things that could get done that we never get around to.
Use your judgement, though. You're likely to want to clear this kind of thing with your manager anyway.
Read a book, explore an API, dig into the source control logs of an open-source component your project uses.
Learn about the domain you're working in. Are there any useful documents on your intranet? Regulations that it would be useful for you to understand?
Good employers will appreciate your initiative, though you may wish to exercise caution before indulging yourself excessively.
I would recommend you break up your day. It may seem to drag on if you think of it as "another 3 hours to go", instead plan your day in chunks.
Whatever you do, just don't watch the clock, the day will seem like 20 hours instead of 8!
It sounds like there is a systemic problem with how tasks are assigned and received at your company.
I don't know what area you work in, but at least in software there's always something to do to improve the product, the tooling, the documentation or your skills. There are always tasks available. There are several issue tracking/ticketing systems available on the market (many free) which can be filled with tasks and prioritised, allowing people to simply take the next task off the queue. If the queue is empty, we expect people to talk to their supervisors for new work.
If you have no software and can't obtain tasking except at the start of the day, keep a notebook of tasks that will help your company advance. See if any of your colleagues need help.
It's always nice to go home having completed a task and having nothing pending: you get to make a fresh start on something next morning. But with a complex job, it's not always (even rarely) possible; some tasks I've worked on have taken days or weeks of work before they're complete - sometimes before they even show visible progress.
To sum up: