davideisinger.com

My personal website
Log | Files | Refs | README

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