www-baldurbjarnason-com-uaaq9d.txt (10319B)
1 • [1]Archive 2 • [2]Newsletter 3 • [3]Book 4 • [4]AI Book 5 • [5]Contact 6 7 [6]Baldur Bjarnason 8 9 Web dev at the end of the world, from Hveragerði, Iceland 10 11 21 November 2022 12 13 Programming is a Pop Culture 14 15 (What follows is an extract from [7]Out of the Software Crisis, lightly edited 16 to work as a blog post.) 17 18 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 19 20 21 So I think what happened is computing has turned into pop culture and the 22 universities are not helping in general, at least not in the US. 23 24 So, Cicero---anybody know a good Cicero quote having to do with the present 25 and past? Let's check your classical education here. So, you know who 26 Cicero was. He was one of those old Roman guys. 27 28 So, Cicero once wrote: 'He who knows only his own generation remains 29 forever a child.' 30 31 [8]Programming and Scaling (Alan Kay, 2011) 32 33 The programming pop culture defines change—any change—as progress. Most 34 developers, myself included, have a fascination with novelty. If it’s new, then 35 it must be an improvement. You even hear this stated outright as an argument by 36 developers: it’s newer and therefore better. Trends in software development are 37 rarely based on objective observation or sensible practice. This endless 38 chasing of trends leads to projects being needlessly rewritten, code being 39 abandoned, and new projects being started when fixing the bugs in an old 40 project would have done the same. The stocks of the software development system 41 are flushed out at a moment’s notice simply because the developers found 42 something shinier. 43 44 Experienced developers are aware of this tendency in themselves and work to 45 mitigate it, but younger developers are often under the mistaken impression 46 that this is how software development works. Unless they can pare back this 47 tendency or are matched with teammates who hold them back, this tendency can 48 lead to immense destruction of value for an organisation. 49 50 Pop cultures favour the visual aesthetic of the day. We all know what sort of 51 aesthetic designers commonly favour. Small, low-contrast text, lots of 52 whitespace, no pure whites or pure blacks (just greys). The details vary with 53 fashion, but each generation of designers has a preferred visual aesthetic. 54 That aesthetic tests poorly; the text is illegible; the layout doesn’t have 55 enough contrast. The information density is so sparse it’s effectively 56 non-existent. 57 58 Looks pretty, though. 59 60 Coders have a similar tendency, their preferred aesthetic is just a bit 61 different, but as with designers, it tests horribly when put in front of 62 genuine users. The exact details of the preferred aesthetic tend to vary from 63 generation to generation. One group prefers light-on-dark text (despite not 64 suffering from conditions that benefit from dark mode) and unusable 65 hyper-complex layouts where everything is configurable. Another group goes for 66 ultra-minimalism where nothing is shown by default. You constantly scrub around 67 and hunt for a button, a widget—anything that even vaguely resembles an 68 affordance. This is usually not an issue if you have designers on the team. If 69 you’re letting the programmers design the user interface or are a programmer 70 designing a user interface, you need to be aware of it. 71 72 But this adherence to a specific aesthetic isn’t limited to designs. It’s also 73 an issue when it comes to the code itself. 74 75 The programming pop culture favours specific code aesthetics based on the 76 trends of the day. I’m not talking about code style or formatting. The code in 77 a project should adhere to a single style, simple as that. The issue is that 78 the programming pop culture demands that code exhibit the latest popular 79 aesthetics of rigour, formality, and cleverness. Whether the code actually is 80 rigorous, formal, or clever matters less. A few years ago, as the popularity of 81 the Ruby programming language peaked, a certain dynamism and trickery were en 82 vogue. It didn’t matter if you were writing in Ruby, JavaScript, or 83 Objective-C. Your code had to have a level of “magic” to it. Metaprogramming, 84 syntax-hacking languages to create ad hoc Domain-Specific Languages, tricks 85 with extreme late binding, and more were frequent topics on developer weblogs 86 and forums. Even a phrase like “objective-c runtime metaprogramming” will date 87 you to a specific generation of native app developers almost down to a single 88 year. 89 90 As with all of these pop culture trends in programming, this led to unreadable 91 code that was impossible to work with or fix as soon as it faded from popular 92 consciousness. 93 94 The current trend is towards the aesthetics of correctness. Everything has to 95 look like it has strong or static typing. It doesn’t have to really have static 96 typing. That can all be made up after the fact in a declaration file. It merely 97 needs to have the aesthetics of types. Type annotations everywhere, 98 implementing logic through type system trickery, and forcing any and all 99 dynamism out of the system in the name of correctness is the name of the game. 100 101 A part of this trend is the unpopularity of the approaches and languages that 102 are seen as less rigorous. CSS is dropped in favour of statically typed 103 CSS-in-JS approaches. HTML is dropped in favour of a strict inline XML-like 104 markup format called JSX. Just a few years ago, everybody in web development 105 hated and dropped XML and XHTML specifically because it was too strict and felt 106 less dynamic and flexible than HTML. At some point, pop culture will bore of 107 this and swing its attention back the other way. 108 109 It’s a fashion industry. Trends come; trends go. The lack of historical 110 awareness is considered by most to be a feature. 111 112 This rigour is useful in moderation. Static typing does prevent bugs. Usually, 113 they are the same sort of bugs unit testing prevents. Both have immense value 114 as tools to manage your software development. Currently, the fashion is to 115 favour static typing over unit testing for establishing a certain base level of 116 correctness in your code. At some point, they are likely to switch again. They 117 have a couple of times in the past. That you could use both at the same time 118 and get the benefits of both doesn’t enter the discourse. Static typing with 119 compile-time correctness checks has its uses. So do dynamism, extreme late 120 binding, and metaprogramming. Most of these approaches can be used together, 121 but that isn’t how pop culture works. Pop culture demands there be only one 122 winner at a time. Choose one, not whichever works the best at each time. 123 124 Product development can’t indulge in being pop culture. Be wary of these 125 popularity contests. 126 127 These issues with programming culture aren’t new. 128 129 Jamie Zawinski calls it the [9]“Cascade of Attention-Deficit Teenagers” model. 130 We can’t do much to change the nature of the field by now—Alan Kay has 131 certainly tried—but we can mitigate the harm done by the trend-seeking. We can 132 work to ensure that everybody on the team, programmers and designers, is 133 aligned, and have the same understanding of what matters and how to accomplish 134 it. 135 136 For that, you need everybody to understand the context they are working in—the 137 works of their field and how they are received. You need to develop taste and 138 understanding. 139 140 You need research. 141 142 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 143 144 Bonus Alan Kay quote on programming as a pop culture that I didn’t include in 145 the book: 146 147 But pop culture holds a disdain for history. Pop culture is all about 148 identity and feeling like you’re participating. It has nothing to do with 149 cooperation, the past or the future—it’s living in the present. I think the 150 same is true of most people who write code for money. They have no idea 151 where [their culture came from]—and the Internet was done so well that most 152 people think of it as a natural resource like the Pacific Ocean, rather 153 than something that was man-made. 154 155 Alan Kay, [10]Dr. Dobb’s Interview with Alan Kay 156 157 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 158 159 [11]Out of the Software Crisis 160 161 [12]Out of the Software Crisis by Baldur Bjarnason 162 163 Software projects keep failing, not because we don’t have the right team or 164 tools but because our software development system is broken. Out of the 165 Software Crisis is a guide to fixing your software projects with 166 systems-thinking making them more resilient to change and less likely to fail. 167 168 [13]Systems-Thinking For Software Projects 169 170 [14] WTF is a Framework? 171 172 [15]The response to Out of the Software Crisis has been amazing 173 174 Join the Newsletter 175 176 Subscribe to the [16]Out of the Software Crisis newsletter to get my weekly (at 177 least) essays on how to avoid or get out of software development crises. 178 179 Join now and get a free PDF of three bonus essays from Out of the Software 180 Crisis. 181 182 [17][ ] 183 Subscribe 184 185 We respect your privacy. 186 187 Unsubscribe at any time. 188 189 You can also find me on [19]Mastodon and [20]Twitter 190 191 References: 192 193 [1] https://www.baldurbjarnason.com/archive 194 [2] https://softwarecrisis.dev/ 195 [3] https://softwarecrisis.baldurbjarnason.com/ 196 [4] https://illusion.baldurbjarnason.com/ 197 [5] mailto:[email protected] 198 [6] https://www.baldurbjarnason.com/ 199 [7] https://softwarecrisis.baldurbjarnason.com/ 200 [8] https://www.youtube.com/watch?v=YyIQKBzIuBY 201 [9] https://www.jwz.org/doc/cadt.html 202 [10] https://link.springer.com/content/pdf/bbm:978-3-319-90008-7/1.pdf 203 [11] https://softwarecrisis.baldurbjarnason.com/ 204 [12] https://softwarecrisis.baldurbjarnason.com/ 205 [13] https://softwarecrisis.baldurbjarnason.com/ 206 [14] https://www.baldurbjarnason.com/2022/wtf-is-a-framework/ 207 [15] https://www.baldurbjarnason.com/2022/ootsc-update/ 208 [16] https://softwarecrisis.dev/ 209 [19] https://toot.cafe/@baldur 210 [20] https://twitter.com/fakebaldur