When I started my current (2nd) job, I thought I had a good handle on my time management skills. I was in for a shock.
My previous employer was a 27 year old company, had a complex suite of applications, but relatively few ‘clients’. This allowed for us to get to know each client very well. There was a good mix of large development projects, implementations for clients, upgrading, and bug fixing. Here, I was able to hone my development skills, utilizing a number of principles from Extreme Programming while operating within a long term release cycle.
In contrast, my current company just passed it’s 10 year mark and is transitioning from a startup culture to a business that can handle the increases in customer and support requests. The application scope is much narrower by comparison (Lab results vs everything from initial scheduling to patient care to final billing), but the client base is larger and more decentralized, which poses a much different set of challenges. Rather than having a small set of dedicated clients, I interact with a larger set of clients on an as-needed basis. I still do implementations, but I field many more support requests then before. Additionally, the release cycle is far less rigid.
Initially these differences were overwhelming. However, over time, I learned to adjust my habits to increase productivity where it mattered. Out of all the things I’ve learned over the last two and a half years, some of the most critical skills I have honed are in the area of time management. The following stick out the most to me:
- Learn to recognize when you stop making progress. Working several hours on a project is fine and dandy, unless those hours are spent at an impasse. Sometimes switching to a different problem or task will help clear your mind enough to see what you were missing before.
- Learn when to ask for help when searching for answers would otherwise take a very long time. I have a very independent personality and love digging into a problem to gain a comprehensive understanding, but when working the support desk seems more like drinking from a fire hose, this isn’t always a luxury one can afford.
- Regularly review what has been accomplished and what remains to be done. When the workload gets to be too much, I find that it helps to summarize what tasks I have completed so far not only to evaluate if I am effectively using my time, but to also see if there are new tasks I need to focus on or if priorities need to be re-evaluated. Also, I find this helps me see the forest through the trees.
- Keep your inbox as close to empty as possible. I have found using my inbox as a proxy task list to be beneficial to knowing what I need to respond to or what tasks I need to do. As soon as I’ve read, responded to, or dealt with that email, it gets filed away eliminating clutter that would otherwise be a distraction.
- Strike a balance between thought out solutions and quick fixes. I know that for much of the code I write or touch, it will be months to years before I come back to it (if ever), so I want it to be the best. While sometimes time limitations push me to take the quick fix, I always keep an eye on refactoring in the future.
- Mix up priorities. This helps keep me from getting in a rut. Every week, I dedicate blocks of time to knocking out quick tasks as well as blocks for involved projects. This helps me ensure I don’t overlook anything for too long.
All of these help me handle a workload that would otherwise grow unwieldy in a hurry. It is all about continuously learning to cope with whatever is thrown at you by using what ever way works best for you. Being able to step back, re-evaluate, and refocus to gain and maintain self awareness is an invaluable skill in any fast paced, high pressure environment where throughput is a critical part of business. If you are not moving forward, you may as well be moving backward.