If you have been following this blog you will know that I am in the middle of learning Common Lisp, middle being an optimistic status report. While learning Lisp has always been on the TODO list, the driving force for this was I wanted something I could be slightly more productive in, in particular I was looking for a language to facilitate faster learning of the technical subjects that interest me. It is not a language for all things I want to create, at least for me anyway.
Lets back up a bit after profiling myself for a while I decided to take a few months out to learn Lisp. Yep I literally tracked what I was spending my at home coding/dev time on for a few weeks. I appreciate measuring something like this would change the way I behave and as such has limitations. Still I found it informative, if slightly worrying.
There was huge variation in how much time I spent coding on personal projects. At a minimum I spent 8 hours a week at a peek was nearly four times that. With data it gives use the ability to gradually improve the hours I work with a more consistent structure but I am not prepared to put hobby coding above family and other events. I do love coding so how could I get more done in the hours I have.
The most obvious was switch languages to something that minimising waiting while developing. Lisp was renowned for it’s interactive development and eventually I decide to spend a few months properly learning it. Even if it meant most other projects have to be put to one side over the summer. Lisp is interesting.
Lets take another step back and define what I mean about productivity. I like to learn new things and write small applications. It is fair to say the past 5 years I have not put much out in public. In the sense of at home projects, for me, productivity is about maximising the pleasure of coding/learning and perhaps getting back into the swing of publicly releasing things. By definition if I increase my rate of learning or producing small applications I increase my personal productivity
So how do I think I can increase my newly defined personal productivity? Well the most obvious answer is gradually as there probably are not any large discontinuous jumps to be had. Shifting to Lisp for many things should give a nice bump in productivity, well with time. I am also trying to stream line my work flow. Ignoring Lisp for a moment what else am I thinking about.
I use Emacs for a number of things and have been maintaining my own custom .emacs file using EVIL as a base. This on and off takes a reasonable amount of time as I try to set up new plug in’s. Doom emacs is an emacs distribution that supplies many packages preconfigured. I am resisting the urge to do much customisation. I would not be surprised if using Doom emacs saves me between 20 and 40 hours a year.
The other editor I use is Clion, while I am doing a very much reduced amount of C++ if/when I need a system language I will probably use Rust with Clion.
It is a simple one but I have never made use of alias’s to make command line interaction simpler. It is a small one that might get 0.5-1% productivity increase. More this is about a mind set of making my life easier.
I have been a bit of a fan of Spaced Repetition Learning. I have blogged about it enough that I wont put any link here. Suffice to say anything I find myself looking up tends to end up in Anki. I am making heavy use of Anki while learning Lisp. Not breaking flow to look things up in google should give me a reasonable productivity boost in itself. The secondary effect of not breaking flow is also a positive thing.
A Dialect of GTD
I am experimenting with this adaptation of Get Things Done. I am not 100% convinced it is great but it feel nice not having to think about what next. I may reduce the number of active projects down to three rather than four. But not just yet as I want to get a feel for it before altering it. For all I know they could have experimented with the number of projects on the go and 4 was most definitely the best.
Part of the reason I am blogging more is I keep putting them on the small task list. It may be giving too much time to these smaller projects. The current projects are all directed towards learning Lisp so at the moment it is working.
A quick list of things I am thinking about altering but haven’t made a start on:
I know it has a huge factor on my ability to think, yet I struggle to get to bed early! An area to improve.
Again some experimentation here, it is a topic I find interesting.
Coffee definitely need to be reduced. On occasion it interferes with my ability to sleep. I may bite the bullet and remove it totally from my life.
This is the git client for Emacs. I can’t help feel dropping to the command line to use git feels inefficient. Probably not a great time saver more a remove an annoyance.
Better use of my laptop
OK this on is about increasing the time on projects. Sometimes I am just away from my desktop and but can legitimately work on my side project without interfering with any other part of my life. Working on a laptop is not as productive but still allows progress to be made.
While I am currently happy in the learning phase, I can feel the urge to create stuff that gets a public release, perhaps it will be a game, a small application or perhaps I will finally get round to actually releasing a programming language! Or perhaps none of those things. I want to experiment with working towards public release of things, I suspect I would find it extremely motivating. It has after all been a long time.
Will any of this work out? I don’t honestly know. If I end up 10% more productive then I will be quite happy. If Lisp fails me I have ticked it off the bucket list and probably become a much better programmer. If I stick to this productivity system then I will definitely end up blogging more so you will find out.