(Pictured: the inside of my head. This has been a pretty bad earworm recently.)
Figure out what your own cognitive style is. Embrace and develop it as your secret weapon; but try to learn and appreciate other styles as well.
I keep thinking about this quote (from How To Think Real Good). And specifically about what my continuing adventures in being a terrible programmer are adding to my own toolkit, as it’s definitely quite a lot.
Of course everyone and their cat is now a programmer so these are not in any way hard-to-find insights. Actually most of what I read seems to be saturated with them. But my brain is quite resistant to learning any of this, so it’s only just starting to go in.
The ultimate aim would be to finally become passable at some of the tricks the current culture throws at me, and also hang on to my own weirdo cognitive style. Cognitive bilingualism!
Anyway let’s be specific. Here’s three related things that I’m starting to get a grip on.
‘Seeing the skull beneath the skin’.
As in, being able to isolate the structural skeleton of a problem, the bits that actually matter in this application, and mapping it on to some kind of data structure.
You’d think a maths degree would have taught me this already, but no. I was able to rely on intuition and good old rote memorisation for when that failed, and it worked just about OK. Now there’s nothing I can yet grasp well enough to visualise and not much to memorise either, so I suppose I have to learn how to do the thing.
This’ll be a slow one and I don’t yet have any strategies for getting better. I’m still in the process of ‘falling in love with the gears’, attempting to attach any sort of ‘positive affective tone’ to the idea so that I can be bothered to learn it at all. In that respect it’s interesting to listen to people who can do the thing. I joined my current job on some sort of graduate scheme thingy and there are some good CS graduates who were starting at the same time. Sometimes just in the pub or whatever they’ll mention the kinds of problems they idly think about for fun and they have this sort of quality. ‘How would I code this up?’ ‘What structure can I fit it to?’
I like these people so maybe I can like the thing? That always sounds dumb written out but it’s worked before.
(The ‘skull beneath the skin’ quote comes from here but even more I’m thinking of this bit from Watership Down:
“When we think of the downs, we think of the downs in daylight, as we think of a rabbit with its fur on. Stubbs may have envisaged the skeleton inside the horse, but most of us do not: and we do not usually envisage the downs without daylight, even though the light is not a part of the down itself as the hide is part of the horse itself.”
Seems like there are increasing numbers of people who are able to look for the skeleton inside the horse, which is interesting but also weird to me.)
‘Is there a process for that?’
I’m actually getting my head round this one quite nicely, as part of a general project of getting better at structure and discipline and organisation. (This has been way more successful than I would have expected — I actually get up at six and learn physics before going to work these days, which I’d never have imagined would work even a couple of years ago.)
The trick here is that if you’ve got something you need to do, you set up some kind of system so it happens automatically. My boss and his boss are both good at this and take it seriously – it’s worth having an in-depth dull conversation once for, say, how to keep track of emails in a shared inbox, because once you’ve got a good process it takes care of itself and you never need to think about it again.
Most productivity advice is of this form, but it took me a long time to start engaging with it. It just sounded so tedious and bean-county and I kind of liked the image of myself as an messy eccentric with piles of paper everywhere. But it turns out that getting shit done efficiently is extremely useful, and now I want to get more shit done efficiently.
I seem to pass as an organised person quite often these days, which is funny. My boss asked me if I had any thoughts on Trello, for example – I know nothing much about Trello, but it was nice to be considered as the sort of person who could plausibly have something useful to say.
Automate everything.
The general version of ‘is there a process for that?’ is the classic programmer tendency to ‘automate everything’, and it’s actually really hard for me to learn outside of a few special cases. I love repetition. I’m pretty sure there’s a gigantic lead flywheel in my brain which takes forever to spin up, but once it gets there I have enormous cognitive inertia and will happily do the same thing for ages. This is probably obvious from the contents of this blog, and even more obvious from my youtube music listening history. I’ve done many low-level menial admin temp jobs in the past because I have an unusually high tolerance for doing a rote task over and over again.
Whereas the programmer ideal seems to be to pick up a new task lightly, identify the abstract structure as cleanly as possible, and then automate the hell of the bastard so you never have to see it again. And then move on to the next one.
This is a massive nuisance for me! There’s no such thing picking up a task lightly when you have a lead flywheel to spin up, and once it’s spun up you’re properly invested. And then once you’re into that enjoyable flow state of knowing how to do something you’re supposed to rip it all up and make a computer have all the fun instead? Programmers are crazy!
I’m not sure it’s worth tackling this one upfront. I also need to work on ways to get my existing abilities to help me out and route around obstacles, and I’m thinking about that too, but that will be another post sometime.