Manage for time and mental burden
Features in software are answers to questions. How can customers send what they're looking at to someone else? That's share via email. How can customers distill all the data about my project's tasks down to raw data to analyze it? That's a report, probably with a CSV export.
All of these answers exist on some kind of spectrum. There are simplistic and sophisticated answers. Maybe reporting has no interaction affordances at all; it's an HTML table and a link to download it as a CSV. Perhaps reporting is full of interactions, using metaphors of spreadsheets like sorting or filtering.
It hurts to waste time and effort. We get attached to the things we work on. But that’s the Sunk Cost Fallacy talking. If you don’t think a feature is worth the time it takes to make it great, then it is not rational to ship a crappier version simply because you have sunk time into it.
Julie Zhou, How to Make Things High-Quality
Early in the development of a feature is the time to seriously consider whether to ship the simplistic or sophisticated version of the feature. Before Sunk Cost starts to weigh on our souls. The first few days of building the feature are often about figuring out how much sophistication we can afford to build given the amount of time we have to ship the feature.
It is tempting to stop when it works, but it is only the beginning. That’s the shitty first draft you’d never turn in. Now you must go through the process to make it as simple as possible for others to understand.
Simon Hørup Eskildsen, Shitty First Software Drafts
In a sense, we’re matching a time budget to a mental complexity budget. In one week, we could figure out how to do a very simplistic CSV export. We could get it to work, make the implementation clear, test it out, iterate on code review, and have it ready to ship. In four weeks, we could add all the features that make a crisp and clear customer feature: generating it in the background, emailing a link to download the CSV after its generated, showing progress of the export to a user, etc.
With the teams I work with, we operate with the idea of peak complexity: the time at which a project reaches its highest complexity. Peak complexity has proved a useful mental model to us for reasoning about complexity. It helps inform decisions about when to step back and refactor, how many people should be working on the project at a given point in time, and how we should structure the project.
Simon Hørup Eskildsen, Peak Complexity
Somewhere in the middle of the time allotted to the project, a feature might start to feel like its getting out of hand. Inevitably, there's some surprise complexity or scope that no one anticipated. If the code of the feature were a combustion engine, it is sitting on a stand, partially disassembled, and in need of a rebuilt component.
Maybe we decide that the surprise scope isn't worth the toil and scrap part of the feature. We might decide it is essential and scrap some other part of the feature so we can finish this while affording the time and complexity budget.
Eventually you reach a point where there aren’t any more unsolved problems. That’s like standing at the top of the hill. You can see clearly all the way down the other side. Then the downhill phase is just about execution.
Basecamp Hill Charts
We reach that Peak Complexity, decide how to get through it, and start working downhill. We're now reaping the benefits of the thought and effort we put into managing the complexity budget of the feature, given the our time budget. We're crossing t's and dotting i's, finishing detail work, and getting the project ready to ship.
I find that managing software projects as time plus complexity works far better than viewing it as tasks for people to work on until it's "done".
You could also think about the Apple Watch as the main input device. In contrast to the AirPods, Apple opened the Watch for developers from the start, but it hasn’t really seen much success as a platform. Perhaps a combination of Watch and AirPods has a better chance of creating an ecosystem with its own unique applications?
Bingo.
Graphs are the new hierarchies
In the sense that trees of people (managers and reports, ala Taylorism) are the old guard. Data (folders and files) are old sauce and nodes + edges are new sauce.
In the sense that part of the confusion of our modern world is that e.g. the Koch brothers have considerable influence on how the Republican party organizes itself. Thus, money is the speech that organizes our current regime and acts on policy. But the Koch brothers aren’t on the org chart for the government or the Republican party.
In the sense that hierarchical databases are such old sauce that I’ve never used one. People new to software development don’t even realize they were at one time a thing that competed against the idea of relational databases.
In the sense that writing is linear or organized by chapters in books. But, the web is a wild mess of hyperlinked graphs. Maybe writers want to organize by graphs too!
(Spoiler: you can represent strictly hierarchical data with graphs too!)
Knowing what books someone loves is to know their perspective and their journey, to have something special in common, to share a language.
The CWC Mellor-72 - I love the overall shape, but especially the arrow icon above the 6.
My law of music: there is no song that Aretha Franklin could not perform slower and therefore better than everyone else.
Newly discovered corollary: except possibly Pierre Boulez and Beethoven’s 5th. So slow, nearly belabored. Love it!
Drew Austin on high/low-brow music, how it fits into album reviews and club culture, and how all that has shifted in our current state of distance. Energy Flash:
“For Reynolds, “at home and at album length” refers to a process of decontextualization, the musical equivalent of the modern gallery’s white cube: a belief that any cultural product meriting serious appreciation must prove that it can survive outside of its native habitat by becoming a fungible unit of culture, fitting into the standardized format of Pitchfork album reviews and solitary, focused listening. If music sounds good in a packed nightclub at 3 a.m. but not through headphones on your couch, is it real in the same way that Kid A is real? Right now in quarantine, the contextualizing environments in which culture traditionally incubates are closed off and dormant, so everything has to sound good in the living room whether it’s meant to or not. We live in the white cube now; anything that relies on a specific source of external context is an endangered species. We’re one month into a worldwide experiment to learn whether the internet alone can produce sufficient meaning on its own, or whether we must keep mining our memories of an embodied shared reality to bridge this gap.”
A new cannonball run record set - a surprise and unintentended consequence of pandemic and shutting down the economy. It’s now much easier to drive a car really fast from New York to Los Angeles. The new record is just a few hours over a day.
Top of Mind No. 0
- Managing a backend engineering team at Pingboard.
- Managers can, and should, do deep work. What forms does that take?
- You can build anything from trust; how do you turn accountability into agency amongst teams?
- How can I get more writing/editing/publishing practice in?
- Meditating & reading
The Majestic Monolith can become The Citadel - when a function of the monolith becomes unwieldy, split off an Outpost to service that need specifically. I like to call them sidecars, because that seems more fun!
Introducing Watchsmith - I love the idea of using customizable, bespoke complications to get a foot in the door of customizable Apple Watch faces. I’m trying it right now, so far so good!
I’ve been tinkering this weekend and MVP.css may be one of my new favorite tools. Drop in some CSS and then just use HTML elements as their name would suggest. No layout, no grids, no typographical system. No classes to memorize. Build now, worry about all the other stuff later.
This weekend, I’m revisiting some of David Perell’s writing on writing, thinking, and aiming high. My favorites: Why You Should Write, Learn Like an Athlete, Networked Writing.
Whiteboard, even if you're a distributed team
A lot of us are out here, amongst all the strangeness of the world, trying to figure out how to help our teams adjust to collaborating remotely. It’s long been my observation that nothing beats people in a room together communicating via ad-hoc scribbles on a whiteboard.
Seems like a good time to survey the landscape and see if the situation has improved!
On one end of the spectrum are Google Draw and Jamboard. The former seems better for attempting to draw technical diagrams. I think it's actually better for ironically creating WordArt. The latter seems like an honest, lo-fi attempt to re-create whiteboards online and collaboratively. I don’t think these tools cut it. But, they have the advantage of ubiquity: a lot of companies use Google Suite, so these could come in handy, in a pinch.
Another wild card is to use design software your team might have in place. Sketch or Figma are inherently about visual communication. If everyone has a license and some patience, this could work! If anyone can put some boxes, arrows, and text together, you can basically whiteboard.
I’ve used Whimiscal to create non-trivial visual communications. It works great, it’s easy to share with people, there is some multi-person editing. It's easy to get started in Whimsical and it has some depth, but not so much depth that it's intimidating or overwhelming. Pricing aside, this is where I’d start with my current team.
I have not kicked the tires on Miro, but the concept is intriguing. Looks like there’s real-time, collaborative visual communication/editing. They also brag a lot about their integrations with adjacent project/collaboration tools such that one can embed JIRA cards, mockups, docs, etc. in a whiteboard. If you’re already using this, I’d love to hear your experience with it!
Finally, you don’t need software to share ad-hoc scribbles. You can draw on paper, capture it with a camera, and share that image almost anywhere. You could use sketching/drawing tools to do a fancier version of that. If you have a whiteboard at home, you can draw on it, take a photo, and share it.
It doesn’t matter if the tools aren’t that great or if your company hasn’t adopted any of them. Taking the initiative to collaborate, or having the insight that communicating with words is not cutting it, is much more important.
Wherein the “good old days” are revisited
Remember secretaries and drinking at work? And land-line telephones? And smoking inside? Blech! And an even more unequal society with even more thumbs on the scales?
My wife and I, when we first watched Mad Men:
Oy, Makefiles! And weird preprocessor tricks! And file-scoped variables/memory ownership? And everything is an int, sometimes pretending to be a char.
Me, reading C code, having last written valid, in-anger C code during college
The 1960s and 70s had some nice qualities, but some of them don't hold up to the nostalgia.
That is a beautiful machine. I must have a soft spot for extensive air-cooling schemes. If Windows/PCs were a thing I could get with, I would get with this hardware.
Use as few rules as possible, mostly guidelines
Rules won’t solve your problems, but thinking about them might. To paraphrase a couple well-known quotes:
“Rules are useless, but thinking about rules is indispensable”
Dwight Eisenhower
“No rules survive first contact with a toddler”
Helmuth von Moltke the Elder
😉
It’s folly to think we can generate the exact outcomes we want with rules. Every ruleset leaves more unstated assumptions than it generates clarity. The legalese found in contracts, and its absolute obtuseness, is testament to how hard it is to write clear rules.
That said, thinking about how rules, or a lack thereof, generate outcomes is an essential and worthwhile exercise. I like putting things through the lens of macroeconomic thinking to seek out second order effects, unintended consequences, and perverse incentives that emerge from a proposed rule set. Rules are trade-offs!
In short: humans + rules are a strange, not entirely mathematical thing. Think about how bad actors will abuse rules in their favor and how good actors will be constrained by rules in search of the outcomes you actually want. Then, if you must, write as few rules as possible.