- A bit of a post-graduation slump - AKA the, "finally! So this is what it's like not having to try to fit into and anticipate a school-dictated life-cycle of timetables, terms, exams, and assignments... But, I also don't particularly feel like doing anything resembling 'work' for a few months... After all this, at least I should deserve to give myself a little break at last, eh?" ;)
- A mad-dash scrambling blur of punishing hours, leading to mild burnout from taking on both a top-tier conference paper crunch (which we ended up prematurely aborting after months of effort just short of the deadline, due to some unforeseen complications during the experiments) and concurrently attempting to design and code up a new depsgraph core (on a similar/nearly coincidental timeframe). My commit logs/stats for this period (see the Ohloh page for "FileShell", and "depsgraph_refactor" on GitHub) are quite instructive and mental evidence of this ;)
- Any post-crunch moping had to be short lived though. With 5 weeks to go before the first of the uni-mandated official reports required, faced/haunted by the spectre of a project which had just depressingly capitulated, and still (or especially as a result of that) having an extremely murky/vague/nearly non-existent notion of what my thesis would be on (made worse by having a hard time seeing any possibilities left to explore in that direction which wouldn't face a similar fate, yet not being in a position to have a firm idea of what other ideas I'd been wanting to attack and which actually had some chance of novelty and success), there was still loads of work to do. Fortunately, within a week, there was finally a grander framework in place - one which (happily) had some scope for touching on some of the very issues I'd gotten into this research area for in the first place (especially with a bit of pulling, tugging, and gentle pivoting; more on this in a sec). Cue another frantic scramble to get things done (characterised by 1-2 weeks of blanket searches of the literature, followed by a few more to force/funnel these into presentable text. Looking back at the resulting report, I'm at times surprised that it doesn't read worse and that it even managed to exist. Then again, a quick survey of my notes (more on this to come) from the time revealed that there were of course several sizeable sections which ended up on the cutting room floor from pure lack of time to do anything more/credible with them.
- As if on cue though, this was quickly met with yet another period of uncertainty and stress waiting for my supervisor to get back to the country, having had to dash off abruptly following the death of his mother on the other side of the globe. I dunno whether the timing of this was a blessing or a curse, since it occurred less than 2 weeks before the first round of admin stuff was due (eek!), with feedback/signoff on the paperwork still pending at that stage (double eek!).
- Once all this was cleared, and I could theoretically get back to work without an axe over my head for a while again, "life" kindof intervened. This lead to a few weeks of lackluster productivity in the lead up to our pre-planned trip to HK (timed around mum's high school reunion activities). It's hard to start ramping up to work on stuff when you know you don't want to get so focussed that taking a bit of a forced work break would become extremely painful... (Note: it would be a forced work break, as it kindof beats the purpose of heading away on vacation somewhere to be cooped up half of that time engrossed in your work, instead of enjoying/experiencing the exciting place you've just spent all that time and money travelling to).
- Getting back from this trip though, the low-productivity slump kindof continued for a while, with the arrival of the traditional December-January holiday season (where the country essentially grinds to a halt in mid December, and doesn't resume until the end of January) basically curtailing any remaining motivation (or rather, foreboding sense that I should really be working)
- Finally, by February, I could finally start work on my project fresh for real again. Oh, and did I mention that it was now just under 3 months before the next progress report milestone was due again? ;)
Perhaps it was simply due to having an upcoming deadline (that certainly helps at times); then again, I had heaps of those during my honours year, and those ended up being more restrictive barriers on managing to get anything of substance/quality done. Perhaps it was because my supervisor headed off on a yet another 5-week trip overseas (so, with a little more wiggle room, I could start seriously bunkering down on some longer-term creative ideas), which also coincided from a dip in tutoring responsibilities (due to the 3-week Easter break), and also coincided with a period of nasty cold + wet + stormy weather (leading to once-in-100-year flooding some 5 times in a month in several suburbs). Perhaps it was me finally getting my Blender coding mojo back, fired up by a combination of taking time off bug fixing drudgery for a while and having a stash of fixes/features inspired by my video projects in January, and actually having a little bit of free time opening up to attack this. Or perhaps, it was just finally rediscovering a fruitful direction of research that looked promising, which I could pursue like a hunting dog chasing some rabid rabbits.
Whatever it was, something clicked. And for 4-7 magnificent weeks, I was in a state of productive bliss. It's fun. It's exciting. It's kindof tiring, but you also don't feel tired (maybe not exactly such a great thing by the end). Stuff happens. Lots of stuff... like writing pages of thesis, diagrams, nascent insights, and a myriad of hairbrained schemes for more wacky prototypes. Yeah, that's a pretty sweet flow state to achieve...
So, what techniques/factors seem to have worked well during this time?
1) Keeping a stash of paper on my desk beside my keyboard, ready for scribbling notes - ANY notes, ranging from novel ideas, todo's, summarised findings from papers (presented in a easily scannable visual format).
Surprisingly for a computer scientist, I'm increasingly taking a liking to doing things on paper. Not digitally - there's simply too much friction and lack of flexibility there (I'd love to tackle these fundamental issues someday, but sadly, doing so in modern academia with all the standards of proof/publication required means that at least some of the requisite topics here end up looking a bit "soft" to touch). Not on a whiteboard - although I've been provided with whiteboards a few times, I've never actually ended up making productive use of one (the fact that they're mounted vertically is one issue, the horrid feel/controllability of the pens for achieving shading variation is another, and the hyper-erasable/temporary nature of these is another). Plain old paper. If someone would provide me with a stable, long-lasting stream of income to look into putting together a suitably good solution: Get in touch and make me an offer ;P
Anyways, resolving to actually dump stuff on paper - e.g. actually getting through important papers, isolating all of the important stuff, and making it easily findable instead of simply forgetting the 3-10 interesting snippets they contain - turns out to be quite helpful. Besides being easier to flip through to find stuff (and even in a hurry, flapping through several unindexed and potentially unordered piles, this still works), you can easily splay out several different sources to quickly compare (digitially, this is still a pain). It's also quite reassuring from time to time to see that stash of paper growing, and being able to see how (far) your work has advanced from the earlier states. That's another benefit of working this way - with these sorts of short notes, you can quickly hash out improved variants of ideas/models, without much of the overhead + rigidity associated with formally doing it digitally; failed directions can still feel disposable enough that they are abandoned, and superseded, while new directions can be tried quickly; meanwhile, you've got an instantly comparable record of how things have evolved over time.
2) Keeping sustainably short/simple todo lists
This one takes a bit of practice, discipline, and just plain experience. Effective use of todo lists, especially when staring down some sufficiently big project can be a great motivational tool. The key it seems is to broadly sketch out the big sections to firstly know where they are, and to just start adding in notes on the finer details which need to be tackled in each category as/when the idea to do so pops up. This way, you can eyeball these big categories as you go along, (silently) panicking everytime you start getting a bit ahead of yourself that the project is "almost done" (and procrastination/laziness can set in), as you instantly see that there are still those big undefined chunks you still have to tackle.
Recognising something as a chunk that needs filling in is one thing. Putting sufficient tasks under those chunks to fill them is another. You need to ensure that each task is something that can be easily/definitively able to be "ticked off" after spending some time working on it. If a task is too vague, you will have issues. The list will just start getting longer and longer, but nothing will ever happen, or you'll start getting stuck on a few, and thus get stuck. If something turns out to be too big, clarify it, then break it down, and attack those chunks instead, but with a new focus on actually getting through these one by one and making steady progress on each.
Again, try to keep up the momentum by setting a target of defining the top 3 or so items which have to be "solved" by the end of a session. Work hard to get those 3 done. Regroup and try again if you fail, until it works. If still you get stuck, it's time to review those tasks to make them more doable. It may even be necessary to simply demote the task to one of several other lists, if it isn't really that urgent. For example, for Blender dev now, I keep 3 lists:
- "quick hacks" which are small odd-jobs which should be easy to quickly bash together whenever I need some hook to get back into the swing of things,
- "tricky fixes" which are things which need to happen and don't involve that much work but involve one or more 'tricky' points that block the task from being solved, and
- "larger features" which are things which probably need to be developed in a separate branch as they'll involve modifying several systems and doing a fair bit of R&D first)
Keeping a rough scribble pad with these tasks on it is certainly a major productivity help, especially when writing. Exploring the literature - no so much, though I strongly recommend noting what you've looked at, important points/ideas presented, and followups these inspire.
3) Recognising that there are only so many "effective" hours you can work each day, then committing to get a bare minimum of these effective hours in each day.
One of the best pieces of advice/anecdotes I've heard was when chatting with Jeff Johnson (who was visiting our department to teach one of our undergrad courses that I was the tutor for) about his PhD experience. Basically, he said that he worked on it for around 4 years or so (?) while working full time or so, and would basically set aside a several hours each day to just consistently pound away at it. So, by chipping away at it like this on a regular basis, you ensure that you're constantly making progress on it.
The thing is, once you realise that you only really have so many effective hours of work in a day, setting aside a solid chunk of these for these each day for making some progress on your thesis doesn't seem like such a big deal. Also, it helps when there's other stuff that crops up and needs your time - simply ensure that you've "done your bit" for the day, and then it's not so bad to spend the rest of the day sorting out whatever else came up. As long as there are still days when you're feeling extra productive, nothing crops up, and you thus manage to get heaps done that day, things are good. (Note: A little word of caution about such days is to not get too carried away, as it tends to lead to a 2-3 day slump which can just extend out to a week if you're not careful)
4) The first window you open will tend to be your greatest time hog that day/session. Choose wisely.
For anyone that's ever battled procrastination, the trick is to fire up your main project/work app first, and try to get at least a little snippet of work done in that first before going anywhere near your web browser (and all the feeds associated with that). Trying to fight those idle automatic actions to load up your favourite 5 newsfeed haunts is difficult otherwise.
5) From time to time, daydream a bit at the start of the day with pen and paper on (i.e. without turning on the computer first).
Not only is this quite relaxing and a change from routines, but it is also a great way to work through some big tricky conceptual problems you may still be trying to resolve.
6) Get to your "happy place"
This one is a bit dubious I admit (well, what do you expect from a term that came from "Happy Gilmore" and has been used in Sky TV ads fronted by leafblower man and crazy lawnmower lady!), especially if it amounts to hours of trawling through the web in an attempt to dull your urge to sidetrack (it's a fine line here between getting into the zone, and simply falling into procrastination-land). That said, having a fixed set of music/short clips which can do this can be useful. For that month, I'd recently come across the songs from a particular Disney musical film, and quite enjoyed blasting through those a few times before starting work. Dunno if it was the Calypso influences or just that rich "happy" orchestral sound, but it worked.