DRMacIver's Notebook
How to be better at everything
How to be better at everything
I’m undergoing one of my periodic attempts to be better at Slay the Spire, and setting myself a challenge of win streaking on Ironclad A1 (mimicking Baalorlord, albeit at a much lower level). My best win streak so far is 8, which I consider respectable but not as good as I’d like.
One of the things that is very obvious at my current level of play is that the bottlenck on getting better isn’t actually skill. I’m plenty skilled enough to play better than I currently play. The bottleneck is that I don’t care quite enough.
Let me give you an example of what I mean: Slay the Spire has a bunch of relics that retain state between fights. e.g. Ink Bottle, Nunchunku, Incense Burner. Some of these are a modest boost when they go off, some of them are a major boot - e.g. having Incense Burner on the right number when you go into some fights can be win or lose a game all on its own.If you’re going into the heart fight you really want to be intangible on turn 2 or 3. If you’re going into Bronze Automaton you really want to be intangible on the hyperbeam turn. Going through Act 2, being intangible on turn 1 is really nice although less essential. Even the lesser relics are a big deal and can make the difference between consistently great fights and very unreliable ones. This makes it worth spending some time at the end of each fight making sure your relics are on the right number.
I know how to do this. I’m not saying I’m great at it - it’s definitely something I could practiceAlso arguably it’s something where I’m limited on other skills. I could do this more easily if fights were easier for me. - but there’s nothing fundamentally mysterious about it to me. I know how it works, I know why it’s needed, and I know it well enough to do it and all the rest would just improve by doing so. Also I just can’t be bothered. It seems so fiddly and annoying.
Almost certainly if I put in the work, it would become less fiddly and annoying over time, and I think it would also improve my skills in other areas to do it, but I don’t think it would ever become something I was really excited about doing. Maybe I’m wrong and eventually it would become natural, I don’t know.
In general, the thing I need to do with Slay the Spire is slow down. Put in more effort. Actually bother to take the time over things. But I don’t wanna, because that seems unpleasant.
I’ve also seen this from the other side. I am, allegedly, quite a good software developer. I do in fact possess quite a high level of skill, but often when I compare the things that I can do that other people fail at, it’s not really because of skill, it’s because I did legwork that they were perfectly capable of doing but didn’t do.Sometimes this is because it didn’t occur to them to do it of course. I’m put in mind about this conversation with Elizabeth about my post about learning to exercise agency. But the things I have in mind here are something that I think it’s worth doing basically 100% of the time when you’re stuck or having a particular common class of problems, so I still feel like it’s worth characterising this as a persistence problem more than a skill problem, it’s just a persistence problem once you add one fact to your existing level of skill.
For example, here’s how you track down an annoying bug: You basically badger the code until it confesses. You insert prints everywhere, you insert assertions everywhere. You delete code that you’re sure doesn’t matter, and find out if it secretly did. You repeatedly run the code that triggers the bug, narrowing it down into a tighter and tigher location, until you know exactly where something you thought was impossible occurs, and now you’ve found the bug. Computers can be understood, you just have to do the work of understanding them.
This works, I promise. I once got on a call to help someone debug a problem that they’d been stuck on for weeks and within about an hour we’d narrowed down the issue this way. They were pleased with the outcome and happily paid me for my time, but it was an extremely “Wait, that’s it? Why didn’t I think to do that?” interaction on their end.
Similarly, most people can probably do better software development by doing the following:
- Write more tests, ideally tracking coverage and aiming for 100% coverage.By which I mean 100% coverage with the explicit get-out clause that you’re allowed to mark some lines as not covered.
- Run a linter and fix everything it complains about.
- Write more comments.I’ve got some pushback on this one, and I think it’s true that of the three of these, comments are by far the easiest to do badly enough to be a net negative, but I think it’s probably on balance still better to write comments than not when you’re operating at what feels like the edge of your skill level.
But this seems annoying and fiddly and so you don’t do it.To be clear, it is annoying and fiddly, and I also often don’t do it. But whenever I actually need a project to be good, I will do this, and a bunch of other things besides.
It’s not that there’s no skill in doing these things well. There absolutely is. It’s that doing them badly is still better than not doing them,Most of the time. You can do them badly enough for it to be a negative. and if you do them consistently then you’ll eventually learn to do them well.
It’s also not that these are always good ideas - sometimes there are good reasons to do something badly.
But they will always make your code better, and the thing stopping you doing that is, rightly or wrongly, youPossibly collective-you rather than you-personally if it’s a managerial/team thing. don’t want to do the work.
I think this is probably a pretty general theme: Any time you want to be better at something, it’s tempting to treat your performance as being at the leading edge of your current skill level, but it’s actually not. It’s at the leading edge of your current skill level at the level of effort you are currently putting in, and putting in more effort will get you better results, and trying to develop more skill without increasing your effort level won’t.
We want getting better to be a difficult problem, because that means we can solve it, but in fact getting better is more effectively done with hard work.