Let's add a whole bunch of simplicity

Simplicity is something that seems pretty uncontroversial. Everyone wants their code, their writing and their products to be simple, elegant, and easy to use, and almost no one argues explicitly that we should make things more complicated or difficult. That’s why we live in a world where everything is perfectly designed, there’s no such thing as code debt and it all just works, right? Hah…

Of course, that’s not how code, or the world works. Things tend to get more complicated and tangled over time. And sometimes this is ok - it’s as easy to fail because you took too long getting your code perfect, as it is to fail because of hacky code. Successful projects are usually somewhere around “slightly embarrassed” with their code - neither proud, nor disgusted or terrified.

But we talk about things like simplicity or even tech debt in the same terms as we talk about features - as something to add or increase. Of course, the opposite is true, and it’s hard - you can’t?add?simplicity to something, you can only remove complexity.

How do we do that? A good place to start, both with products and code, is with the cognitive model. The best place to start is to ask, “what is the job we are trying to do”? Getting that as tightly defined as possible, and as narrowly as possible, is a pre-requisite. And you’re not really done until you can start talking about the things you *won’t* be doing - just like a strategy, it’s not helpful if it doesn’t tell you what not to do.

Once you have what feels like the cleanest, tightest story you can tell, the next step is to look for the atoms - the smallest pieces of behavior or data that you need to be able to do that job. Nouns (data model) are a good place to start, followed by verbs (actions, functions, affordances) on those nouns. Finally, constraints are useful too - being able to say “X can never do Y”. Looking at how the actions and constraints fit together will give you a good sense of whether you’re on the right track - if you find that you have to do a lot of contortions to get all of the functionality to work, it’s a good signal that you haven’t gotten down to the right set of atoms, or that you are trying to do too much overall.

Simplicity isn’t something that can be actively “added”, but it is possible to work on it and improve both code and products in a deliberate way - but it does take discipline. At the end of the process above, you will?absolutely?find that your reasoning implies that you throw away a piece of code or a feature that you like. That’s the moment that’s the hardest - when the design tells you that simplicity is in the direction of losing something that you don’t need but want anyway.

Making things easier to use and understand is a different, and distinct process from building in the first place - a process of stepping back, asking questions, and finding the fundamentals of what you’re trying to get done, and then ultimately doing the hard work of removing everything else.

Rajasuba Subramanian

Software Engineer | Bar Raiser at Amazon

2 年

This reminds me of the quote, “Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” Source : https://www.goodreads.com/quotes/19905-perfection-is-achieved-not-when-there-is-nothing-more-to

Chris Rowland

Sales and Marketing Director at AmeriTex Pipe & Products

2 年

This is Great! I’m in a completely different industry (building materials for heavy construction), but the theme is right on point across virtually every area of business. Thanks.

回复

要查看或添加评论,请登录

Sam Schillace的更多文章

  • AI analogies and historical lessons

    AI analogies and historical lessons

    How to make sense of it all. I've decided to keep the primary posts over on Substack.

    1 条评论
  • Motion, Thought, Systems and AI

    Motion, Thought, Systems and AI

    In which I ponder how motion is like thought, why LLMs are like early steam engines (hitting things and pumping water),…

    4 条评论
  • Looking back at the Schillace "laws"

    Looking back at the Schillace "laws"

    Way back in, I think, March or so of 2023, after I’d spent a little while trying to build things with GPT-4, I wrote…

    5 条评论
  • A strange tech parable

    A strange tech parable

    In my role at Microsoft, part of what I do is spend time with the leadership team that runs M365, Office, and Windows…

    12 条评论
  • Simplicity, Clarity, Humility

    Simplicity, Clarity, Humility

    There is an old joke: “sorry this letter is so long, I didn’t have time to write a shorter one”. It’s funny, but it’s…

    4 条评论
  • A matter of context

    A matter of context

    It’s interesting that, as we talk about using AI more and more, the phrase we use is “human in the loop” instead of “AI…

    3 条评论
  • The tension between Chaos and Order

    The tension between Chaos and Order

    I’ve been spending the last week in Japan, meeting with makers and crafts people. as always, it’s a humbling…

    4 条评论
  • No Prize for Pessimism

    No Prize for Pessimism

    A book! I’ve been writing these letters for about 12 years now. I started writing them when I was at Box, as a way to…

    10 条评论
  • Adding Value in the Age of AI

    Adding Value in the Age of AI

    If you wrote out all possible combinations of, say, 1000 letters, the vast number of them would be nonsense. And the…

    3 条评论
  • Don't use AI to make work for humans

    Don't use AI to make work for humans

    I’ve started to notice an interesting pattern. More enlightened teams and people are using AI to get lots of work done…

    5 条评论

社区洞察

其他会员也浏览了