For the past few weeks I have been taking a look at Common Lisp. That is I have been working though Practical Common Lisp, making notes and then flash cards for Anki. So this is a real effort to learn it. Very different to my previous attempts where I would played a bit and then moved on.
I guess the first question is why?
If you browse through my recent posts you will see I have been profiling the time I spend on personal projects. I have not published all my data and the number of hours I put in is highly variable but at the low end one week I put in about 8 hours.
As a thought experiment I decided to imagine I could only work 8 hrs a week on my personal projects. How would I feel about that.
Frustrated or unhappy with my lack of progress. To the point where I suspect I would drift away from many of my personal projects. So the next question is what could I do to stop that. I am not allowed to change number of hours I can use so I would want to improve what I got out of each hour. That is improve my productivity.
When working on projects at home, part of productivity is producing joy/fulfillment for myself, this can take the form of learning new topic or coding ideas that are not published. I mention this to remind myself I am not trying to be come a machine. As motivation comes from intrinsic and extrinsic sources, actually producing public work is something I should improve on but that’s for a different post.
Broadly dividing up the projects I want to do they fit into two categories, learning/creative work and the pleasure of figuring out how to make things go fast. At the moment I more learning towards the learning/creative part. Given most projects are fairly small it makes sense to default to a dynamic language rather than C++/C/Rust, they are just better for exploration. I can choose one of the others if it suits the task better.
I plan on keep thinking on this 8 hour limit as a way to consider things that I would not usually consider, forcing myself to try out new things. Over a long-ish time frame I hope it will pay dividends.
Where I am at?
So I just finished the bulk of Practical Common Lisp but probably will not do the final few chapters containing many worked examples. I am considering working through a couple of other books, well perhaps 3 of them but want to mix in actually writing real code. QuickLisp (the de facto package manager) has binding to SDL2 along with OpenGL so I may try writing a few little bits of code in that.
What would make me drop Lisp?
It is usually a good idea to know when to get out of something. Common Lisp is not popular so it will suffer from a lack of libraries. That is acceptable to me, Learning the FFI is on the list. I don’t plan on only using Lisp so can drop back to C/C++/Rust when they are more suited.
So what would make me drop Lisp. I think if I was now enjoying it, if I am not happy I won’t be productive and cyclically if I am not productive I will not be happy :). Curently the plan is to give it until the end of the year and then judge it after having given it a good chance to prove itself. Lisp the minimum bar I expect from you is to hit is the same productivity as Python or C++.