Staying sharp requires “intellectual gardening”

Gardening requires consistency. A beautiful garden is unstable. Some plants want to expand their reach and kill out the competition. Some plants are simply out of their element and need a little bit of help. Generally, there is too much competition for water, sunshine and minerals. So the gardener must, from time to time, intervene to move plants around, dig some out, or plant new ones. Sometimes extra watering is needed.

For years, I try to make my garden as self-sufficient as possible. A strategy that I have pursued is to try many things and let them fail. For example, when I plant something, I do not try to keep it alive with artificial watering or nutrients. This has served me well as I have found some very robust perennials that are ideally suited to my garden (like hardy geraniums).

Nevertheless, if I neglect a piece of my garden for too long, it goes out of balance. For example, some plants start dying out, leaving nothing interesting in their place.

My garden is also limited. Over the years, I have slightly grown my garden but its rate of growth has diminished for fear that I would be overburdened with maintenance.

I view my mind in a similar manner. There are a few things that I am good at. For example, I am a decent programmer using a few mainstream languages. I can do probabilistic modelling and some algorithm design. However, my skills get rusty if I stop using them.

To stay sharp, I have found that I need to constantly “train”. Hence, by design, I try to use a little bit of Java and C++ every few months even though my job does not require it. Similarly, I try to keep on proving mathematical results when I get a chance.

But because time is limited, I cannot stay sharp with everything. For example, I am a database researcher and I teach database courses. I know the SQL syntax. However, anyone using SQL for a living can easily outgun me in SQL. Once a year, I have to look up how to do an intersection in MySQL for example.

And even with the skills that I regularly need, I limit the scope of my knowledge. For example, I was unaware until a few days ago of Java’s Double Brace Initialization idiom. Far from being embarrassed by my shortcoming, I view it as necessary. If I chose to know everything there is to know about Java, I’d have to restrict my scope more than I like. (Consider that Java is much more complex than Chess and, yet, people devote their lives to studying Chess.)

Following my gardening analogy, I have pursued two strategies to stay sharp:

  • Be deliberate about what I know. Within even the smallest subdomain, there is more to know than my brain can swallow. In some sense, I am defined by what I know and that’s something I like to have control over.
  • I purposefully “train”. For example, I will find excuses to apply certain skills at regular intervals.

Does it work? Not as well as I’d like. I feel tremendous tension between what I should know and how well I should know it. Still, I find that gardening analogy useful. Whenever I feel like I have covered too much ground, I think back about my garden. It is not the ground you cover that that defines a beautiful garden.

Published by

Daniel Lemire

A computer science professor at the University of Quebec (TELUQ).

4 thoughts on “Staying sharp requires “intellectual gardening””

  1. Given the state of my backyard, likely I should be wary of gardening analogies.

    In a similar vein, I find that my expertise tends to be episodic. I learned SQL and relational database usage quite well back in the mid-80s, yet there are times when I do no work in that area for years. The same can be said for GUI, Java, Perl or C++ programming, at one time or another. Starting a new episode requires much use of reference materials, at first, but the once-familiar topic comes back quickly.

    Maybe gardening is a good analogy, as something once very familiar, if currently disused. 🙂

    To be effective, you have to let at least some disused skills rust, to allow focus on used skills.

  2. I had the opportunity to work with a real c++ guru a while back. His code had approachability issues (you had to be at least familiar with everything C++ has to offer), but once you got past that his solutions were invariably straightforward, generalizable and robust. He could make that language dance.

    I’m at another extreme, with endless interests. I’m never able to focus long enough on a single topic to reach the very top echelons of it. But that wide breadth of knowledge has served me well. I can program. I can write. I can do complicated math. I can pull inspiration from nature, from the mind, from quantum physics, from whatever. I find I can approach arbitrary problems for more directions than most.

    Ultimately, the world needs gardens devoted to a few of the best flowers, wide overflowing, haphazardly cultivated gardens and everything in between.

Leave a Reply

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    Markdown is turned off in code blocks:
     [This is not a link](

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see

You may subscribe to this blog by email.