Chess Poisoning

An interesting passage from Edison’s Eve by Gaby Wood:

[Stefan] Zweig’s novella, The Royal Game, takes place at the outset of the Second World War on a boat from Europe to South America. One the boat is the reigning Russian chess champion, a man without finesse or intellect except in this particular domain. The narrator and a group of other passengers pay him to play against them; just as they are losing, a mysterious man intervenes on their behalf and leads them to a draw with the champion. The man, Dr. B., is urged to play a game one to one, but he says he has not sat at a chessboard for at least twenty years. He explains to the narrator that he came by his instinct for chess another way.

Imprisoned in an empty hotel room by the Nazis for months, with nothing to read or write with, in a cultural vacuum designed to make him submit to interrogation, Dr. B. had been beside himself. One day he discovered a book in the coat pocket of one of his captors and, hoping it would be Homer or Goethe, something he could memorize and learn from, succeeded in stealing it. To his great disappointment, the book was nothing but 150 championship games of chess, something he had not played since he was a student; but it was all he had. He began by improvising a chessboard and pieces with his bedspread and breadcrumbs he had saved; soon he could see it all in his head. Dr. B. found that learning the games sharpened his mind, but after some weeks he came to an impasse: he knew the games too well, and would have to invent new ones, playing against himself; but the division of his mind into two conflicting camps, “Ego Black” and “Ego White,” became too much for him–before long he was trapped in a chess fever, hallucinating, shouting, violent. He woke up in a sanitorium, suffering from what he calls “chess poisoning.” On being set free from there and from the Nazis, Dr. B. had been advised never to play chess again. Now, however, on the boat, he consents to one game — for this reason: he wants to “discover whether what went on in my cell was chess or madness.”

Souls and Artifacts

What difference is there between a sensitive and living watch, and a watch made of gold, iron, silver or copper?

Denis Diderot, as quoted in Edison’s Eve by Gaby Wood

On Fascination

If the story about Claude Shannon is true, as told by Jimmy Soni and Rob Goodman in A Mind at Play, a life of deep work can be largely a life of pursuing our curiosities. Shannon is known as the founder of information theory and as the founder of digital circuit design theory and one of the most influential geniuses of the 20th century.

A story similar to Shannon’s is told in Walter Isaacson’s biography of Leonardo Da Vinci. Of course, Da Vinci is known for his art, but he was also an accomplished anatomist, architect and engineer. And not just on paper. In fact, Leonardo’s competencies are so many they’re embarrassing to list (see the wikipedia page).

Here are some interesting commonalities between Leonardo and Shannon. When Shannon was a kid, he was interested in tinkering, circus arts, Morse code, and math. When Leonardo was a kid, he was interested in nature and drawing. While these are activities that anyone could be forced to practice, they could equally be pursued as a matter of curiosity. And that appears to be how Shannon and Leonardo did it.

At some point, Shannon and da Vinci needed to monetize their talents. They were forced to work on things they didn’t want to. But they never gave up on what fascinated them. The objects of their fascination are what we remember them for. And they eventually served as the basis for their wealth and creative freedom.

I don’t think it’s a mistake to say that when people are looking for a passion to guide their careers that they might be in search of something that’s simply fascinating to them.

If you weren’t aware of being fascinated by anything, how would you look for an object of fascination? This is my best stab at answering the question,

  1. Don’t try to accomplish something. Instead, see what happens when you try something, and just keep trying things. We often punish ourselves be forming attachments to outcomes. Of course, this is normal. We depend on outcomes. But it’s contrary to building and sustaining an intrinsic interest and a love for what you’re doing. Accomplishment is fatiguing. Seeing what happens is exciting.
  2. If there’s something you want to try doing, don’t try to do it the right way. Try to do it the way that interests you. This is often how innovation occurs. da Vinci was fascinated with spirals and consequently came up with his own way of painting hair. He thought that the real world doesn’t have sharp visual boundaries, so he invented techniques for blurring boundaries and invented a legendary style, while making important observations about visual perception in the process.
  3. Avoid any form of accountability for the objects of your fascination. Do not sacrifice an intrinsic interest for extrinsic rewards or you’ll lose your fascination. Do not pursue approval or money, until you’re curiosity has moved on, or you need the money. Shannon worked on his breakthrough paper in information theory on his own clock and released it when he was ready, without anyone breathing down his neck. He went on to work on other curiosities, like artificial intelligence, just pursuing his curiosity.
  4. Do not be afraid that you are wasting your time on what fascinates you. There may be no better use of your time. It’s in the late night hobby projects and private obsessions that you express your unique individuality. One of the most excruciating life regrets is a failure to live according to one’s sense of personal identity. The time spent pursuing the objects of your fascination may be no truer expression of your individuality. This is how Leonardo became Leonardo, and not just Verrochio’s pupil. This is how Shannon became Shannon and not another student of Venevar Bush, or worse, a drone working on less imaginative puzzles.

There aren’t many more effective ways of feeling alive and inspired than doing things you’re truly interested in. Nor are there many better ways of cultivating self knowledge. When you do share what you’re working on, it will be one of the most effective ways of  letting people close to you know who you are.

 

 

A Framework for Becoming a Better Software Engineer

Learning feels best when there’s a sense of cohesion about it. It feels good to refine a theory or build toward something clearly envisioned. It doesn’t feel good to advance in one area, only to discover that you’ve slipped in another.

In an effort to systematize my deep work sessions, I’ve started zeroing in on some organizing concepts to get a balanced sense of progression. These are the basic ingredients for planning my deep work sessions:

  1. Rotating skill domains for identifying a strength to cultivate.
  2. Work cycles for structuring deep work sessions.
  3. Weekly calendaring for determining when I’m going to pursue skill-building.

Skill Domains

There are four kinds of skills I need to exercise routinely to maintain balance in my know-how. These are:

  1. development skills
  2. problem solving skills
  3. surveying skills

Development skills involve writing different kinds of applications (how do I write a DBMS? an OS? a web server?). This about writing apps that don’t exist. Reading and doing “code as I code” exercises are activities you’ll use in preparation for writing apps that don’t exist. Execution is about choosing a problem, owning it, and writing your own code to solve it. No copy-paste.

Problem solving involves identifying the abstract properties of problems and fitting a performant solution (Should I use a hash map here? How do I measure this? How do I test for correctness?). Problem solving involves less code, more handwriting and sketching, but not necessarily less time. You may need to dust off some math you haven’t used in a while. Expect a lot of hypothesis testing and long walks for thinking. Maybe you know how to write great code, but if you can’t solve hard problems, you’re only skimming the surface.

Surveying is about comparative shopping (Which library should I use? What are the tradeoffs? What’s the community support like?). You can’t write all of the code. You can’t build all of the tools. This is where you choose a language on the basis of its fit for a project, where you choose a platform or a piece of hardware. Expect to read a lot of docs, code, and books.

These three skill domains are not wholly distinct. You’ll likely solve a lot of problems relevant to development, and your surveying is going to acquaint you with new solutions to problems. But each of these skill domains offer different enough perspectives that you can get a sense of when you’re doing one instead of the other. You can then formulate small projects — maybe twenty hour projects — to appreciably advance your skills in a well-rounded manner. Always plan your skill-building projects first. Get your environment set up. Test your tools and your approach. Set a concrete deliverable as your goal, and then execute.

Work Cycles

So you know that you want to learn how to build a DBMS. Maybe you’ve found a course or tutorial you like. How will you structure your time to maximize learning? Ultraworking Work Cycles. I love this idea so much.

The hardest part of learning is staying focused. The fundamental problem of focus is remembering what you were trying to do. Work cycles prevent you from forgetting. Journaling is great. Creating daily rituals — great. But work cycles will provide you with the kind of fine-grained, in-the-moment focus you need to press through substantial cognitive challenges.

Feel yourself getting tired, cranky, brain foggy? Work cycles will help you realize that you need to step away from the keyboard for a moment and reset. When you take a break, work cycles will make sure that you can recall what you were doing when you stepped away. (Thank you to Jason Benn for recommending Ultraworking.)

Weekly Calendaring

When I’m busy (when am I not busy?) I like the idea of pursuing one project per week. To make it easy on myself, I’ve created a Github project and written a short Python script to pump out a directory of files: one scheduling file for each day of the week, and one file to store goals for the week.

In the project root, I keep a backlog of training goals. Every week, I start with a project taken from the backlog, some goals assigned to Monday at the least, and another directory of files assigning myself a project for the next week. As I work, I update my goals for the day, I track what I’ve accomplished through my work cycles, and at the end of the day, I schedule goals for the next.

Summary

Different systems work for different people. Sometimes different systems work for the same people at different times. For me, the crucial factors are (1) knowing what categories of knowledge I need to track, (2) staying focused, and (3) being able to distinguish preparation from execution (execution always results in a deliverable that I produce, it’s never pure consumption or emulation). Ask for advice from people who are good at what they do. Experiment and adjust as you go.

A Review of Cal Newport and Scott Young’s TopPerformer Course

I took Cal Newport and Scott Young’s TopPerformer course. Newport is known for blogging at StudyHacks and writing two best selling books on career advice, So Good They Can’t Ignore You and Deep Work. Scott Young is known for taking on impressive learning challenges and blogging about them here.

TopPerformer builds on a lot of the material in Newport’s books to teach people a system for cultivating expertise predicated on social skills. Young and Newport make it clear that if you want to get good at something, you need to get good at building rapport with experts — people whose skills are paired with a lifestyle that you’d want for yourself. It’s easy to form a false impression of the lifestyle that goes with a lot of careers. Getting to know people who actually hold those careers can relieve you of any misconceptions. How do you meet potential mentors? How do get actionable, high-quality advice from them? That’s the topic of the first phase of the course.

The second phase is about designing a deliberate practice project. It’s surprisingly easy to choose projects that don’t take you in the direction you want to go. For example, you might aim to build depth in your understanding of fundamental computer science, but then plan a project that skims the surface of popular machine learning libraries. The lessons on project design are there to prevent this kind of misalignment between goals and projects.

The remaining lessons of the course focus on principles of deep  work in the pursuit of mastery: blocking time, managing energy, maintaining focus, and tracking progress. This is all material that’s familiar from Newport’s books, but it’s packaged for immediate action.

How would I rate this course? Favorably.

Around the time that I started taking TopPerformer, I was in San Francisco, attending courses in computer science at Bradfield. There were plenty of talented software engineers around to have chats with. The environment really helped me appreciate the message that Young and Newport were pumping: get to know top performers, find out what actions they took to build mastery, and just do the work.

TopPerformer helped me get some projects going and start experimenting with deep work techniques I hadn’t encountered in Newport’s book. It provided me some mental models I’d been missing to help me better organize my time. And — this is the biggest payoff — it helped me to formulate questions that I could ask experts to avoid wasting my time on projects that wouldn’t elevate my game. There’s no getting back lost time, as they say.

On the Delegation of Curiosity

Web browsing is something you do when you’re bored. Nothing has engaged your attention, so you go looking for something that sparks your curiosity. Browsing also happens when you were working on something, but a sidebar of recommended content has jostled you out of focus. YouTube works this way.

I Google for “Tom Leighton recursion”. I click on a result. I’m taken to a lecture on independence, instead of recursion. In the sidebar, I don’t see anything that looks like recursion but I see Elon Musk, I see something about the Avengers, something about linear algebra. Everything I see in the sidebar I’m interested in. The list was constructed partially from my channel subscriptions. The important thing for me to keep in mind is that I’m not interested in any of those things right now. I’m interested in recursion. And so I leave YouTube.

Why did I leave? I left because I was engaging in what I’ll call deliberate querying.

Deliberate querying happens when you have an explicit question that you’re trying to answer, and you’re using search technology to help you arrive at an answer.  You have a question. You look for an answer. You don’t switch questions until you’ve exceeded the time allotted to your search or you’ve arrived at an answer.

Browsing starts with foraging for something to do. Querying is a step in something you’re already doing, i.e. trying to answer a question. Why does the distinction matter?

Some questions are very important to me. If I don’t answer them, I retain an epistemic debt. I can’t do my work properly. I can’t dress appropriately for the weather. I can’t determine where I’d like to eat this evening. Every time I capitulate to browsing, the debt increments because the delay matters. I need answers to important questions as soon as I can get them. That’s why they’re important.

Aside from epistemic debt, there is also the matter of the meaning or significance of what I’m doing. Our capacity to imbue our experience with importance is dependent on our capacity to form a coherent narrative involving that experience. When I engage in deliberate querying, I know what I’m about. I’m going to answer a question. My question. I’m not going to allow a service to suggest a random assortment of questions that I should be interested in. I’m not going to allow myself to be overwhelmed by a large volume of questions. I’m going to stay focused, because that’s how I know what I’m about. When I answer the question, I feel like I own what I accomplished. When I browse, I feel like I simply allowed time to pass.

Browsing isn’t all bad. But it should probably be as deliberate as querying. When I need to recover from hard work, I can allow myself to be bored or I can browse. Sometimes I want to be exposed to new things. Browsing is good for that. But most of the time, I’m actually trying to fill my day with a sense of accomplishment and browsing (or the temptation to browse) covertly gets in the way.

The Most Obvious Cognitive Booster for Knowledge Workers

If you are a knowledge worker, you probably need to learn things and solve problems. If you want to learn things and solve problems, you need to be able to focus. If your body is in pain or degrading from underuse, you will be distracted from your work. If your body is exercised through prehab, rehab, or fitness training, you will have fewer distractions, fewer sick days, more focus, more mastery of your craft. The effects of exercise on attention are one of the most studied and easily exploited advantages available to you.

I mean, my God, look at this! Why aren’t you exercising to help you with your work?

If you are a workaholic, your day only needs to have two phases:

  1. exercise so that you can have a good work day
  2. have a good work day

If you are not a workaholic, add another phase. But, keep these two.

How should you get started, assuming that you don’t have much experience with this sort of thing? Find a fitness expert who has lots of certifications, has written books and articles and/or trains athletes. Take group classes from them or schedule private training, if you can afford it. Approach your training with a student’s mindset. Your goal is to learn, so find trainers who have knowledge.

Good trainers:

  1. Often have certifications in StrongFirst, MovMat, GymnasticBodies, or FMS
  2. Like to talk about muscles you’ve never heard of
  3. Talk a lot about mobility and stability
  4. Walk you through warm up protocols
  5. Understand the roles body temperature and nutrition play in recovery
  6. Walk you through flexibility and cool down protocols
  7. Talk a lot about form and correct your form

Bad trainers:

  1. Have you doing anything without assessing your form as you do it
  2. Push you so hard you feel like you’re going to get injured (or just die)
  3. Are inarticulate in communicating fitness knowledge
  4. Are not fit themselves
  5. Fail to challenge you

Facilities with interesting equipment are nice. But good trainers are the bottom line. Here’s the gym I’m going to right now, if you’d like a model of what a good facility with good trainers looks like.

Perspective is All That Matters

Know what your problem is, Shapiro? It’s that you just have this really shitty way of looking at things, ya know? I don’t have that problem. I just look at the dopeness. But you, it’s like you just look at the wackness, ya know?

The Wackness (2008)

Nobody wants to hang out with someone who has a shitty way of looking at things. Anybody with a shitty way of looking at things probably wouldn’t even hang out with themselves. Your habits of thought dictate the quality of your life. What are the shitty ways of looking at things? What is their Tao?

The shitty way of looking at things is focusing on what is missing, instead of what is provided. If you’re reading this, you possess riches beyond the imagination of people a hundred years ago. Do something with what you have.

The shitty way of looking at things is focusing on what you cannot do, instead of what you can do. Steven Hawking spent decades composing books and physical theory in his head. You can do something. If you practice, you’ll even be able to do something well.

The shitty way of looking at things is focusing on what you have to do, instead of reveling in what you have chosen to do. You aren’t in a fucking death camp. Even people in prison have maneuvers available to them. Make your moves and own them.

The shitty way of looking at things is focusing on what’s falling apart, instead of what you’re building. Things have always been falling apart. What are you building? Who is building alongside you? Appreciate the ruins of what was once great. Then, make something new.

The shitty way of looking at things is focusing on who has more, instead of what you’ve got. Appreciate what you have, or you will never truly have anything.

The shitty way of looking at things is focusing on the flaws in your loved ones, instead of becoming a more admirable human being yourself. Your loved ones will not always be with you. While they are alive, love them.

The shitty way of looking at things is focusing on what you stand to lose, instead of the stimulating novelty of change. You will lose everything in time. You will gain fascinating experiences with every loss.

Acknowledge the wackness, but live in the dopeness.

On Meaningful Work

Saying that a project, a career, a life is meaningful is weird. I don’t know what it means, but I know when I don’t buy it. I know when I find something devoid of meaning.

Maybe I’ve just been reading a bunch of movie news or wondering what a Kardashian is. Meaningless.

Maybe I’ve just eaten the biggest chocolate bar of my life and ranted for 45 minutes about why I will never learn to play card games. Meaningless.

What I’ve done matters to me in a momentary sense, but it doesn’t have any significance in the overall arc of my life. But I did it anyway.

According to one survey, 71% of software engineers don’t find their work highly meaningful, but 57% do find their work highly satisfying. Literature teachers find their work highly meaningful (96%) and highly satisfying (74%). Guess who gets paid way more?

Maybe the survey is bogus. Maybe not. But it fits personal experience with literature and software. It also fits with some work on meaning discussed by Emily Esfahani Smith in her book, The Power Meaning: Crafting a Life that Matters*.

Meaning, Esfahani Smith says, comes from activities such as caring for people, animals, and plants. It comes from developing and maintaining a sense of belonging in a group. A sense of meaning can come from story telling, and it can come from moments that we might regard as sacred or awe inspiring.

Let’s do this as a numbered list. To craft a life that matters, at least in your own mind, you should try to abide by these four pillars of meaning:

  1. Take care of other beings
  2. Find your place in a community
  3. Tell a story about who you are and why you do what you do
  4. Regularly experience awe inspiring, sacred, or transcendent moments

How many software developers get to feel like they’re taking care of anybody when they’re doing their job? How many get to do much story telling? An interesting technical solution might induce a transcendent moment, but that’s probably a vanishingly rare experience for most. Community? If you work at a company with the right culture, maybe you’ll feel like you belong. If you work remotely, maybe not so much.

What’s interesting about the sense that software engineering isn’t highly meaningful (at least to those who do it) is that it can still be highly satisfying to do it. What kind of satisfaction are we talking about? Could it be the pay check? The sense of achievement? The knowledge that you’ve made something that works, generates “value”, and makes you look smart?

The sense of achievement isn’t something to be taken lightly, but achieving  –Lebowski — is not all there is to life. Meaning matters, too. Pursuing the four pillars of meaning can help with that.

*The Power of Meaning should have just been called Crafting a Life That Matters, since the “Power of…” just about anything sounds like a woo-woo manual. But seriously, it’s a great book.