A cluttered desk is actually a good thing for me. It is my external memory. Apart from a few times a year when I have a decent sort out the top of my desk looks a mess. It is covered in books, notes, print outs, sticky notes and a Rubber Duck.
Now in reality my desk is not just a random jumble of paper, books and a duck but is actually my memory for certain things, especially tasks and sections of the library that I may not have to look at very often. Every sheet of paper is actually my own cheat sheet for one thing or another that I can use to ensure I have covered everything without doubt. And in the cases where I find a new approaches I can add it to the cheat sheet to ensure that it is remembered.
Over time these cheat sheets are updated, modified and eventually disposed of when they are no long needed or rewritten to make them easier to read. Today I just want to run through the things that I find to be used the most on my cheat sheets and maybe you might start to make your own.
My cheat sheet contains lists of what I call entry points grouped into categories and notes next to them. Generally these categories cover different bits of functionality within the jPedal Java PDF library. So what are these points for? These are useful points to look for to help identify the cause of any issues that are reported when the common, easily remembered points have not shown a trace of an issue. These points are places in the code where I can check various values to confirm at what point the issue becomes present.
The great thing about storing these entry points is that as they are added they become more specific so you end up with a natural list so the lower down you go on the list the lower level and more precise the point in the code cutting down the number of places that could be the origin of the code.
As well as various entry points I also have listed a set of Java methods that have shown odd behavior when used in certain ways. These are quite often oddities that only seem to happen when using a given method with certain input in the right combination. Luckily I have not encountered many of these but they can occur. My cheat sheet lists these and the scenario that causes the odd behavior and what work around exists for it so that it can be avoided in the future.
Of course this list is something that needs to be kept an eye on as with future Java releases I may find that the oddity has been fixed and can be removed from my list.
Something else that is also listed under my code oddities is alternative code. These are not methods that need a work around but methods where I have found alternatives that appear to run faster or more efficiently. These lists are purely an aid to memory to help write better code.
Debug code flags
Through out the library are some debug messages that are removed during our build process. These message are very useful when working on the library with different sections of code and have different flags to trigger them so we only display the messages we require. Although useful, trying to remember all the them can be difficult and having to search to determine what the flag is called and where it is can be troublesome.
For this reason I have a list of flag names and brief descriptions so that I can easily locate them for use.
To do, notes and doodles
At the start of the day I right out the light of things I will be working on and what I have to do. The rest of the page is used for notes thought and ideas. I find that just the act of writing my thoughts down can help solidify and develop the idea in my mind in a way that typing it will not. These notes are also quite important as it can quickly and easily remind me of exactly what I have done and what I have tried previously which can prove important should I need to explain the issue to another.
Also there is room for the odd doodle whilst thinking through an issue. Not just random doodles, I find that drawing out transformations often help in understanding transform matrices much more than any other activity.
I hope some of the ideas mentioned above have given you ideas of ways to make yourself more productive, I know that it has helped me.
IDRsolutions develop a Java PDF library, a PDF forms to HTML5 converter, a PDF to HTML5 or SVG converter and a Java Image Library that doubles as an ImageIO replacement. On the blog our team post about anything interesting they learn about.