Nate Meyvis

Software wish lists are useful

When people ask me how to learn software, I often say that:

  1. They're probably overrating books and underrating experimentation;
  2. They're probably overrating tutorials and underrating non-tutorial projects.

Generative AI is making these even more true. You can experiment with a huge range of possible projects, with all sorts of cheap or free tools and deployment options, and with the help of better and better always-available tutoring in LLM form.

I do this when I'm trying to learn new tools: I certainly read about them and about the relevant fundamentals, but actually undertaking projects with them is a central, indispensable part of the learning process. It's getting more and more valuable to have a list of software you want: as tools get better and faster, simply finding a project you care about is likelier to be a limiting factor.

Further notes:

  1. The ability to see useful, not-yet-existing software is a close cousin of being bug-sighted. Even if you never build or commission the software you want, it's valuable to improve your sense of what software might reasonably be doing.
  2. Lacking a clear sense of what would count as software performing well makes it much harder to learn from a project. The whole experience of building software presupposes that you know, and are working toward, something better as opposed to worse. This probably won't be a problem if you defined the thing you're working on. (And if it is a problem, you'll learn to close the gap between your first description of something and a real, if approximate, specification of it.)
  3. Most of us feel way more motivated to work through problems and mistakes when the thing we're building is antecedently meaningful to us. The educational value of working through problems is one of those underrated-even-by-people-who-rate-it-highly things.
  4. If you are like me, you'll have a bunch of these projects fail for reasons that are not "the tools aren't ready yet" or "I just never had time to build out the prototype." Rather, they'll be revealed as ideas you overrated or didn't properly conceive. This kind of lesson has, I think, helped me think about software more generally.
  5. I cannot resist mentioning this Feynman method:

You have to keep a dozen of your favorite problems constantly present in your mind, although by and large they will lay in a dormant state. Every time you hear or read a new trick or a new result, test it against each of your twelve problems to see whether it helps. Every once in a while there will be a hit, and people will say, “How did he do it? He must be a genius!”1

So: learn by doing, do by making things you want, and make things you want by keeping a list of things you want. Have fun!


  1. Does anyone else notice that so many really snappy and opinionated paragraphs turn out to be either original to or reported by Gian-Carlo Rota? I kinda think we're due for Rota to be a trendy figure in the Silicon Valley intellectual scene.↩

#generative AI #psychology of software #software