100 Posts in 100 Days: Day 45
Feb. 14th, 2012 08:15 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Just about ready for my second cup of coffee this morning and I have my work up on the computer and ready to go.
I've been analyzing where I get hung up getting work done--I've mentioned before that I have a really bad time dividing up work and personal time. Funny, I started to type the sentence using the phrase "where I waste time" but as I am discovering in the course of my analysis, that's a bad word to use because it doesn't adequately describe what's happening, and indirectly suggests that if I only work harder, I won't have a problem.
This change of perspective is actually enlightening because it gets me looking for road blocks instead of berating myself. For example, given the nature of my work, really, I need fairly decent chunks of uninterrupted time. Unless it''s just a tiny code fix, I need a minimum of one hour to accomplish anything.
Part of the reason for this was really nicely summed up in a video by a programmer who talked about the need to mentally "load" the particular program in one's brain. I need to sort of re-orient myself each time I pick up a project so that I don't lose sight of the broader function of the code I'm working on. This is not to say that a large project can't be broken up into sections, but that I have to have enough of the overall function of the code in mind to insure the code smoothly fits into the whole.
A good example would be something I'm working on right now. I have a form that puts information into a database. That part is all done, but now I need to retrieve that information and set up a form so it may be edited. While it sounds straightforward enough, there are things I have to consider, such as the fact that there are a variable number of entries for each group and one may need to add or subtract items. So I must not only be able to edit the existing database material, I must also be able to add additional material or remove previous material.
For this purpose, I want the edit form to pretty much look like the add form--I don't want to confuse my user, so I have to keep that in mind. I don't want to reinvent the wheel, so I want to reuse my previous code as much as possible--thus, I need to have the related code in my mind when I start writing the new code.
Thus, I need about fifteen to twenty minutes to get my bearings, and then I can get some real work done. You can see why interruptions are really a problem.
Today was a textbook example. I was supposed to have a call to consult on a project, which I had planned to take care of first thing. I got the machine when I called so I waited around for a bit, not wanting to start something only to be interrupted. When I got to my email, I found my client wrote to let me know that the call couldn't happen until the afternoon.
I opened up another piece of work in the meantime and started the "loading" process and began making the decisions on what I wanted to do. The phone rang. It was client one, who had gotten out of the meeting early and thus was calling. 84 minutes later, I hung up the phone and sat down to finish THAT project, which was just a simple series of queries that had already been planned--I needed only to match the list to make sure I didn't forget anything. I did this and ended up waiting around to have another phone call--this was intended as the final code review prior to getting everything ready to go for the real-time update, and a problem was discovered--a potentially important update wasn't included in the list.
67 minutes later, the call was complete and it was time for supper. I had supper and went back to the project AGAIN to try to finish it. So now I am just about finished, I have to complete the backup process for testing, and then I can run the whole mess. Note that it's 8:08 PM even though I started this entry early (while waiting for that first phone call) and I didn't get to the other project at all.
When this kind of thing happens, all too often, I make the decision to try to stuff more work into the day, and THAT is causing a problem because I get tired and a bit burnt out, and it takes me twice as long to do stuff than if I were rested.
I think that unless it's an emergency, I need to carve out hours for phone calls. If I'd had my couple of hours first thing this morning, I would have been done with the other task and still had time to finish this one because the waiting around for the phone call wouldn't have happened.
I need to work smarter, not harder.
I've been analyzing where I get hung up getting work done--I've mentioned before that I have a really bad time dividing up work and personal time. Funny, I started to type the sentence using the phrase "where I waste time" but as I am discovering in the course of my analysis, that's a bad word to use because it doesn't adequately describe what's happening, and indirectly suggests that if I only work harder, I won't have a problem.
This change of perspective is actually enlightening because it gets me looking for road blocks instead of berating myself. For example, given the nature of my work, really, I need fairly decent chunks of uninterrupted time. Unless it''s just a tiny code fix, I need a minimum of one hour to accomplish anything.
Part of the reason for this was really nicely summed up in a video by a programmer who talked about the need to mentally "load" the particular program in one's brain. I need to sort of re-orient myself each time I pick up a project so that I don't lose sight of the broader function of the code I'm working on. This is not to say that a large project can't be broken up into sections, but that I have to have enough of the overall function of the code in mind to insure the code smoothly fits into the whole.
A good example would be something I'm working on right now. I have a form that puts information into a database. That part is all done, but now I need to retrieve that information and set up a form so it may be edited. While it sounds straightforward enough, there are things I have to consider, such as the fact that there are a variable number of entries for each group and one may need to add or subtract items. So I must not only be able to edit the existing database material, I must also be able to add additional material or remove previous material.
For this purpose, I want the edit form to pretty much look like the add form--I don't want to confuse my user, so I have to keep that in mind. I don't want to reinvent the wheel, so I want to reuse my previous code as much as possible--thus, I need to have the related code in my mind when I start writing the new code.
Thus, I need about fifteen to twenty minutes to get my bearings, and then I can get some real work done. You can see why interruptions are really a problem.
Today was a textbook example. I was supposed to have a call to consult on a project, which I had planned to take care of first thing. I got the machine when I called so I waited around for a bit, not wanting to start something only to be interrupted. When I got to my email, I found my client wrote to let me know that the call couldn't happen until the afternoon.
I opened up another piece of work in the meantime and started the "loading" process and began making the decisions on what I wanted to do. The phone rang. It was client one, who had gotten out of the meeting early and thus was calling. 84 minutes later, I hung up the phone and sat down to finish THAT project, which was just a simple series of queries that had already been planned--I needed only to match the list to make sure I didn't forget anything. I did this and ended up waiting around to have another phone call--this was intended as the final code review prior to getting everything ready to go for the real-time update, and a problem was discovered--a potentially important update wasn't included in the list.
67 minutes later, the call was complete and it was time for supper. I had supper and went back to the project AGAIN to try to finish it. So now I am just about finished, I have to complete the backup process for testing, and then I can run the whole mess. Note that it's 8:08 PM even though I started this entry early (while waiting for that first phone call) and I didn't get to the other project at all.
When this kind of thing happens, all too often, I make the decision to try to stuff more work into the day, and THAT is causing a problem because I get tired and a bit burnt out, and it takes me twice as long to do stuff than if I were rested.
I think that unless it's an emergency, I need to carve out hours for phone calls. If I'd had my couple of hours first thing this morning, I would have been done with the other task and still had time to finish this one because the waiting around for the phone call wouldn't have happened.
I need to work smarter, not harder.