PurelyFunctional.tv Newsletter 406: design, false nominalization?
Sign up for weekly Clojure tips, software design, and a Clojure coding challenge.
Clojure Tip 💡
design, false nominalization?
Most verbs have a noun form. For instance, you can take the verb to read and get a reading. Or you can take the verb to submit and get a submission. Linguists call this phenomenon nominalization. You nominalize a verb (or by extension, and adjective) so that it can serve a different role in the sentence. A noun can be the subject or object of a sentence. You can start attaching adjectives to it.
It's well understood that nominalizing verbs in your sentence, in terms of writing style, tends to make it more abstract and less direct. A common writing tip is to use the verb form instead of nominalizing it. It makes the writing more direct, clearer, and shorter. "Perform a form submission" becomes "Submit a form".
If nominalization abstracts our sentences, can it unnecessarily abstract our thinking? That idea is called false nominalization. You turn a verb into a noun, then start to treat it like a thing, not an activity.
A good example to me is the term creativity. This is a double abstraction. The verb is to create, which is something people do, some more than others. Then it gets turned into an adjective to describe people who create, a creative person. Then the quality that creative people have gets nominalized as creativity. The two levels of abstraction make it really hard to think clearly because it's totally divorced from a real thing. So we start asking questions like "what is creativity?" and "how do we manifest creativity?". The simple act is mystified. Books are written. TED overflows with talks on it. There is no such thing. Just create a lot and the rest will follow. At the end of the day, that's what the books suggest, anyway.
I've been wondering if design isn't also a false nominalization. The verb to design is obviously something we do. It means to plan out ahead of the construction. You think about the thing before you create it. You could think it out in an outline, a sketch, or even a prototype.
The problem is that people start to ask abstract questions like "what is good design?". Notice the nominalization. I posit that, because design is an action, you can't ever find a satisfying answer. And book after book will give tips and try to describe this abstract thing. But people will disagree because it's an imaginary construct. We need to go back to reality. Maybe the we can have a real conversation.
Book update 👃
I have submitted the final draft! The production folks are doing their magic to make it printable and publishable in ebook form. I'm actually a little skeptical that my book can work well on e-readers. E-readers are design primarily to re-flow blocks of text. My book is largely not large blocks of text. Most pages are highly laid out diagrams and small bits of carefully placed text. We'll see. Either way, I designed it to be read as a printed book. Just take that into account when you buy it.
Also, I am very lucky that two awesome programmers have agreed to write forewords. Oh my goodness! I'm very excited.
You can buy Grokking Simplicity and use the coupon code TSSIMPLICITY for 50% off. You can buy it now and it will be shipped to you when it's printed. Thanks to those of you who have already purchased 😘
Keynote last week📢
I have been very skeptical about online conferences. The thing I love the most about conferences is conversation and meeting new people. It's wonderful to get to know the people behind the tech. Zoom can't really do that.
But oh, my! The magic that @reborg brought to re:Clojure kindles my hope that online conferences can be special. Though you can't really have serendipitous conversations in the hall over coffee, the fact that people don't have to travel opens up a lot of possibilities. For instance, in Dan Friedman's keynote, which was billed as a conversation with him, he brought in several other people to demonstrate ideas. Though there was awkwardness, like there always is over Zoom ("you're muted", "can you hear me?", "can you see my screen?"), the synergy of different people was apparent.
Likewise, during my keynote, despite massive technical difficulties (my internet went out a few minutes into the talk), the fact that the Sussmans could attend and chime in was wonderful. Now I'm thinking about running an online conference myself.
I recorded a new episode about Guy Steele's influential paper Lambda: The Ultimate GOTO. In 1977, the debate about structural programming was in full swing and Steele showed how function calls could be as fast as GOTO because they are compiled as a GOTO in many cases. The conclusion, though, is that function calls are equivalent to GOTO, so structural programming, by itself, can't be the end of the story to write clear programs.
Quarantine update 😷
I know a lot of people are going through tougher times than I am. If you, for any reason, can't afford my courses, and you think the courses will help you, please hit reply and I will set you up. It's a small gesture I can make, but it might help.
I don't want to shame you or anybody that we should be using this time to work on our skills. The number one priority is your health and safety. I know I haven't been able to work very much, let alone learn some new skill. But if learning Clojure is important to you, and you can't afford it, just hit reply and I'll set you up. Keeping busy can keep us sane.
Also, if you just want to subscribe for a paid membership, I have opened them back up for the moment. Register here.
Stay healthy. Wash your hands. Wear a mask. Take care of loved ones.
Clojure Challenge 🤔
Last issue's challenge
- Sequence and parallel combinators - submissions
Please do participate in the discussion at the submission links above. It's active and it's a great way to get comments on your code.
This week's challenge
This week's challenge is to describe your design process. How do you think before you build? What questions do you ask? What do you look for? Do you sketch, plan, and prototype?
Please submit your design process as comments to this gist. Discussion is welcome.