Neither my boss nor my co-worker adhere to the firm's business hours...it is a total gamble each day as to when they will arrive at the office, and when they will leave. [Because they] intermix work with their personal business while at the office, [they] show up around 10:00 AM, spend several hours doing personal/non project-related stuff throughout the day, and work until 8:00 or 9:00 PM...
I have more of a "get in early, get it done, leave on time" attitude towards the office. Therefore, I schedule my time accordingly and discipline myself to stick to that schedule in order to accomplish everything I want to get done. When we have more work or a project deadline, I adjust my schedule accordingly to accommodate a few additional hours at the office. Any personal stuff gets done at home in the evening, or on weekends. It is worth noting that everyone in our office gets everything done, and we never miss deadlines.
I realize that everyone is different... [but] my colleagues' non-structured attitude towards time at the office often affects my ability to be efficient. I often find myself spending more time at the office than necessary because "I am needed as a member of the project team". I have already finished everything I needed to get done that day, but they are running behind because they came in late or worked on something else for a period of time. I am not compensated for this additional time I spend at the office (the firm abolished overtime compensation when the recession began).
Wow, that is a good question. What you're asking on the surface here is how to address the lack of connection between your schedule and your coworkers' schedules, but what you're really asking here, D., is how to manage up. You will manage up for as long as you're not licensed and even for most of the time that you're licensed as well. As long as you have a boss, you will have a need to manage up--to make sure that everything above you is going well so that it doesn't dribble onto your head. As long as your colleagues aren't sociopaths, this is a fairly painless process. Annoying, but mostly harmless. You're also dealing with some of the issues that T was dealing with regarding hours worked; you don't mind pitching in when things are tough, the chips are down, and there's a looming deadline, but it's another thing altogether when you continually have to work late because someone else has been disorganized with their time.
Your heart and brain are in the right place when you assert that you want to frame the issue in terms of working efficiently. That really is the right place to start when you talk with your boss and coworker about this. Remember than whenever you ask for change, do so in the service of a job or in the service of a relationship--that's the key. The other important part of asking for change is to take ownership of what you want while framing it as a benefit to both parties. What do you want out of this? Bear in mind that you, too, could start coming in at 10am and leaving at 7pm, but if you're more productive in the morning, then that needs to be part of the conversation. You, too, could start doing your personal business during the day intermittently, but if you find that not being interrupted with non-work stuff makes you more productive and allows you to get things accomplished, then that also needs to be part of the conversation.
See if you can get them both in the same place and time, uninterrupted (usually this is accomplished with lunch), and talk about how everyone's schedules are working--how do your colleagues like to work? You can contribute (or counter with) your own point of view, which is that it works best for you to work like x but not so much like y. Is your boss aware that higher-ups have asked where he is? If not, this should be shared with him in private: say "Eddie from the main office asked me this morning where you were and i didn't know, and he was pretty pissed. How should I handle it when I get those calls?" If your boss wants you to lie and you're not comfortable with that, then say so: "Mike, I'm really not comfortable with that. If I don't know where you are, then I don't know where you are. I know you have things to attend to in the morning, but it leaves me in a position where I'm either throwing you under the bus to Eddie or I'm lying to Eddie, and neither of those is acceptable to me in a good team environment like ours."
See what happened there? You paid Mike (the name I'm giving your boss) a compliment about your office's environment (hopefully it was honest), and you're showing him the consequences of his behavior--it puts you in an awkward situation. That's how you frame your discussion about time with your colleagues: "When you guys come in late and don't have something ready for me until 6pm, I get frustrated because I'm here early when I'm most productive and have to stay late time and again and work when I'm fried. Can we work something out that allows us to keep our schedules but also keeps the workload clear for everyone?"
Remember that even after you work something out, you may need to remind them of the agreement: "Chuckie, it's 3 o'clock, and I do have to leave right at 5 today. Did you have that plan ready for me? If not, I can definitely start on it tomorrow right at 8, or even at 7:30 if you need it sooner."
Have courage, D. With a couple of good discussions, you might be able to find some relief in here.