[HN Gopher] Dieter Rams' design principles applied to software e...
       ___________________________________________________________________
        
       Dieter Rams' design principles applied to software engineering
        
       Author : zedr
       Score  : 146 points
       Date   : 2021-09-16 11:04 UTC (11 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | charlax wrote:
       | Funny! I wrote the same article 6 years ago:
       | https://www.dein.fr/2015-10-01-10-principles-for-good-code.h...
        
         | scns wrote:
         | > Companies that stay successful are the ones which don't fear
         | to constantly disrupt themselves through technological
         | innovation.
         | 
         | Spot on, intel immediately comes to mind. Will playing it safe
         | always lead to mediocrity though? Depends i guess, heard that a
         | good poker player loses less often.
         | 
         | (edit) Enjoyed reading the rest of the article too. In the
         | environmental impact section i missed the idea of using more
         | efficient languages though.
         | 
         | Loved your article "Learnings from six months as a first-time
         | engineering manager" too. I was instantly reminded of the
         | documentary on Michael Schuhmacher on Netflix i watched
         | yesterday. I couldn't care less about Formula 1, but still
         | think that it is an amazing movie and great role model for good
         | leadership. He was asked over radio after he won the
         | championship: "How do you feel?" There are several seconds of
         | silence. He answers: "Ross you are the best. You guys are all
         | great. We did it." I thought: "Wow, he puts the others before
         | himself. A great example of a good King after the theory of
         | archetypes by C.G. Jung"
        
           | mfer wrote:
           | Companies that are successful are the ones that meet the
           | needs or desires people have. Some of those change a little
           | and some a lot. Some it's tweaks and others it's wholesale
           | change. It's not about the technology, it's about the people
        
           | DennisP wrote:
           | Good poker players don't exactly play it safe. They play very
           | cautiously most of the time, but very aggressively when the
           | odds are in their favor. And sometimes they bluff on top of
           | that.
        
           | hyperpallium2 wrote:
           | funfact: Andy Grove had a blurb on the cover of "The
           | Innovator's Dilemma", that coined the term "disruption".
        
           | dhosek wrote:
           | There's a difference between disrupting yourself and not
           | playing it safe.
        
       | ksm1717 wrote:
       | This changes the game for me. Well done.
        
       | lbriner wrote:
       | Prepares to be downvoted...
       | 
       | Why are these supposed to be special? Everyone would agree with
       | these in theory but the problem is not lack of these principles,
       | the problem is how to actually use them in a fast moving business
       | with imperfect tools, imperfect knowledge, imperfect employees
       | and changing goals.
       | 
       | If you looked at my systems, you might say I am not following the
       | principles but I was and am, they just don't always work very
       | well in real life.
        
         | mannykannot wrote:
         | > Everyone would agree with these in theory...
         | 
         | Not me - when I read "Take a moment to step back and look at
         | your code. It should look beautiful to you", my bullshit
         | detector goes off full-tilt. The last person I want reviewing
         | code is someone who wants to apply this principle (I don't so
         | much care if they think this while writing code, if and only if
         | it has no tangible downsides in what they produce.)
         | 
         | This is compounded with the following sentences "Beauty often
         | embodies many useful properties. Code that pleases the eye is
         | often readable, idiomatic, and expressive", as if pursuit of
         | this undefined beauty causes these outcomes.
         | 
         | I am not sympathetic to arguments that this is true "in a
         | sense", as this just adds subjectivity and circumlocution to an
         | issue that should be, like good code itself, as straightforward
         | and to-the-point as is possible while getting the job done.
        
         | fouric wrote:
         | A _lot_ of people don 't (really) seem to agree with number two
         | here:
         | 
         | > 2. Good software is useful
         | 
         | The UNIX philosophy highly prioritizes simplicity (number 10 on
         | this list), and there's always been a large group (and still
         | is) of programmers that interpret this as "sacrifice
         | functionality for the purposes of simplicity".
        
         | [deleted]
        
         | dangus wrote:
         | I think what you might be getting at is that Dieter Rams is a
         | great designer because he is a great designer.
         | 
         | Almost everyone agrees with all or most his design rules. I can
         | agree all day but that doesn't mean I can execute my designs
         | anywhere near as well as he did during his career.
        
       | huhtenberg wrote:
       | Seems to be mixing up _software_ with _code_.                   >
       | 3. Good software is aesthetic         >         >    Take a
       | moment to step back and look at your code.          >    It
       | should look beautiful to you.          >    ...
       | 
       | It's not that the code quality doesn't matter, but this is just
       | apples to oranges.
        
         | twodave wrote:
         | I'd go even further and say code is pretty strictly a
         | liability. If you don't hate your code enough to throw it away
         | and replace it on a whim, then you've made it more important
         | than it should be. Why else would we encourage things like
         | loose coupling and building upon abstractions? That thing
         | you're abstracting away is likely to be thrown away at some
         | point and replaced with something different.
         | 
         | I can understand feeling pride in your work and all that, but
         | let's not pretend--the code I write today is probably best
         | viewed through beer-goggles, not in a wedding dress :D
        
           | atoav wrote:
           | While I think the core of your idea is right, some could
           | understand it the wrong way:
           | 
           | > If you don't hate your code enough to throw it away and
           | replace it on a whim, then you've made it more important than
           | it should be.
           | 
           | You shouldn't write code you _hate_ just to avoid attachment.
           | What you should do instead is to develop the ability to (as
           | product designers tend to say)  "kill your darlings". You
           | should love the code you create, but you should love the
           | freedom even more that comes with being able to wipe it away
           | with one stroke. Like sand drawings in a zen garden you
           | should accept that nothing is ever final and don't let the
           | things you created excert power over you.
           | 
           | You can also be proud of what you created as well, not
           | because the thing is the thing it is, but because you made it
           | and you were happy with how it turned out under the
           | circumstances of the moment, maybe you even learned some
           | things. Circumstances and the whole world change (including
           | you), so what you created might not be up to the task
           | anymore, you might be able to create something even better,
           | more reduces, more clear, etc.
           | 
           | And you can feel all that while still happily throwing away
           | your code. It is not a contradicition.
        
       | humblepie wrote:
       | If I follow this it would take me 9 months to build a signup
       | form.
        
         | atoav wrote:
         | The real question is how long the next login form after that
         | would take you. A day?
         | 
         | Good design is not lost once you are done with it. The lessons
         | learned when following through with such things stay and
         | ultimately enable you to build more better things faster.
        
           | polyterative wrote:
           | This speaks to me, but it's hard in a corporate environment.
           | I've been fortunate enough to have some kind of leverage on
           | this and the payoff is huge even if not immediate.
        
         | sdevonoes wrote:
         | I wouldn't mind...
         | 
         | But if I were the CEO/Manager/etc. I guess I would mind.
        
       | catalyst7 wrote:
       | Nicely put
        
       | amelius wrote:
       | There's one difference though. Unlike product designers, software
       | engineers will never be in the spotlights. Not at Apple, anyway.
       | 
       | E.g. tell me how many times you've read an article about Jony Ive
       | versus about an important software engineer at Apple.
        
         | robotresearcher wrote:
         | The most recent SWE in the mainstream spotlight I can think of
         | was Notch, the author of Minecraft. I don't know if the
         | engineering is super-noteworthy, but it was good enough to make
         | a very valuable product in a short time with few people.
        
         | aaaaaaaaaaab wrote:
         | John Carmack?
        
           | GekkePrutser wrote:
           | They did say "at Apple".
           | 
           | But Carmack is from a generation where developers were often
           | still working on something on their own.
           | 
           | I do see a shift to a model where developers are viewed more
           | as a commodity and less as artists. In a "just throw more
           | developers at the problem" kind of way.
        
             | p_l wrote:
             | "Shift"?
             | 
             |  _It 's been around long enough that seminar works on
             | management calling the practice out are disregarded by some
             | as outdated just by age_
        
               | amelius wrote:
               | Everybody wants to commoditize their complement. This
               | includes managers.
        
             | pitched wrote:
             | It feels like the trend right now is that developers are
             | more expensive than managers. So if they're a commodity,
             | it's the most precious kind. If the power dynamic keeps
             | shifting that way though, I bet we'll see some more like
             | artists and less like cogs in the machine. Maybe not so
             | much artists and more like other professionals.
        
               | amelius wrote:
               | Unfortunately, having a unique ability is no guarantee
               | for not being treated like dirt, history tells us. E.g.
               | look at how women have been treated historically up to
               | recently.
        
         | scns wrote:
         | At Apple? Maybe not. But elsewhere?
         | 
         | Maybe no articles written about them but books or chapters
         | ([0], [1]) written by them.
         | 
         | In the spotlight? You betcha, i think watching talks by Brian
         | Cantrill is highly entertaining. Rich Rickeys' talks are highly
         | regarded on HN (making a mental note to watch them). Carmack
         | talking at Quakecon for hours about many different things.
         | 
         | (edit) formatting and links
         | 
         | [0] https://www.amazon.com/Coders-Work-Reflections-Craft-
         | Program...
         | 
         | [1] https://www.amazon.com/Masterminds-Programming-
         | Conversations...
        
           | Uehreka wrote:
           | > At Apple? Maybe not.
           | 
           | Chris Lattner (inventor of LLVM and Swift) was pretty
           | prominent when he was at Apple. He got stage time during at
           | least one keynote and was well known in the macOS/iOS
           | community. Not to mention that their engineering leads in
           | general get to present their work every year to the devs who
           | will be using it during the WWDC sessions.
        
             | scns wrote:
             | Glad to be proven wrong! Learned some iOS development years
             | ago but are out of touch what is happening in the
             | appleverse at large, no snark intended.
        
       | dang wrote:
       | This submission broke the rules for "Show HN" - this is reading
       | material, not a project people can try out and play with. We've
       | taken "Show HN" out of the title now.
       | 
       | https://news.ycombinator.com/showhn.html
        
       | wanderingmind wrote:
       | Maybe I should add a few
       | 
       | 1. _Good software is carefully balanced_
       | 
       | a good software is created when the user requirements are
       | carefully balanced against resource and time constraints.
       | 
       | 2. _Good software is joyful to handle_
       | 
       | A truly good software should invoke the child like playful and
       | joyful instincts in the users.
        
       | macando wrote:
       | Amazing! I've just recommended Dieter Rams: As Little Design As
       | Possible book on LinkedIn.
       | 
       | Good design is needed everywhere. It's much more than adding a
       | gradient to a Buy button.
        
       | gfiorav wrote:
       | Some of these apply better than others, but holy n4. That's the
       | most necessary point of this post IMO.
       | 
       | `Code isn't "clever" if no-one understands it.`
       | 
       | It will make some code-bros mad though.
        
       | ramshorst wrote:
       | Cool !
       | 
       | I always wonder what modern UI would look like guided by these
       | principles... I am a full-stack product designer.
        
         | scns wrote:
         | How about accessible, consistent (minimal design changes),
         | efficient and fun to use.
         | 
         | The Linux Mint team did a blog post on changes in a new
         | version. The tweaks on the design were really subtle,
         | increasing contrast here and there to improve access- &
         | readability. Back then i tought: "So what?"; now i think this
         | is the correct way to do it.
        
         | criddell wrote:
         | My guess it would probably have to be native clients. It's hard
         | to see how browser based clients can fit many of these
         | principles better than a native client.
         | 
         | The best would be a native executable with no required server
         | component.
        
         | secondcoming wrote:
         | Controls with visible borders, maybe
        
       | ChrisMarshallNY wrote:
       | Love that!
       | 
       |  _> 8. Good software is thorough down to the last detail_
       | 
       | That's my approach. It tends to earn me a bit of scorn, but I do
       | it anyway.
        
         | scns wrote:
         | Well, the coin has two sides. People that have the same
         | mindset, appreciate when someone strives for perfection and
         | creates somethimg really good. But i learning to be fine with
         | 97% was very valuable too i think. It can get problematic when
         | stuff needs to be delivered fast though. Finding the right
         | niche is key i guess.
         | 
         | Most people seem to be content with good enough and that is
         | fine too. Diversity makes it fun somehow, there would be way
         | less to discover and learn if we were all alike.
         | 
         | Maybe striving for greatness instead of perfection might be a
         | way?
         | 
         | P.S.: Bookmarked your stuff last time you commented about
         | testing harnesses and stuff. Haven't done iOS work in years and
         | may never need it. I treasure a work ethic like yours, keep it
         | up.
        
           | ChrisMarshallNY wrote:
           | Thanks so much!
           | 
           | It's a labor of love, and I feel that makes all the
           | difference. I like to think of what I do as a "craft."
        
             | scns wrote:
             | You are more than welcome.
             | 
             | That is a great mindset IMHO, it makes a huge difference
             | when you pour love into your work.
        
         | tgv wrote:
         | "Perfect is the enemy of good", or something akin to that, is
         | also good to keep in mind.
        
           | GekkePrutser wrote:
           | True but "good enough" under too tight deadlines is what
           | leads to security vulnerabilities.
        
             | ChrisMarshallNY wrote:
             | Yup. Also, data-mining by non-tech staff. So many of these
             | breaches, are because some marketing person took a dump of
             | the data, and stored it on an open AWS instance, while they
             | mined it.
        
         | Y-bar wrote:
         | Question. Are those people scorning you because you are
         | thorough down to details, or because you are thorough down to
         | details _at the cost of something else_?
        
           | ChrisMarshallNY wrote:
           | Mostly because they _assume_ that it 's at the cost of
           | schedule.
           | 
           | In my case, that turns out not to be the case. I work very
           | quickly.
           | 
           | I can develop a fairly "full-fat" iOS app, with a lot of
           | functionality, in less than a week. I do it all the time,
           | with test harnesses.
           | 
           | But getting the app to what I consider "ship" shape, is
           | another matter entirely, and can stretch the project to a
           | couple of months (which is still not so bad, all things
           | considered).
           | 
           | One of the nice things about my approach, is that I can start
           | using TestFlight (Apple's beta-test service for iOS) quite
           | quickly. This allows non-tech stakeholders to start actually
           | using the app, very early in the process.
           | 
           | If I have an open-ended schedule (like I do, with the project
           | I'm working on now), it's amazing, because we can refine the
           | project, and work through a lot of the MVP stuff, without the
           | public shame.
        
             | tchalla wrote:
             | > Mostly because they assume that it's at the cost of
             | schedule.
             | 
             | How can you change that assumption?
        
               | ChrisMarshallNY wrote:
               | The only way is the way that I've been forced to work, my
               | entire life.
               | 
               | I'm a high school dropout with a GED, and some rather
               | spotty tech training.
               | 
               | That means that I have had to fight, claw, and prove
               | myself at every single step. No easy slopes for me.
               | Double-black-diamond, the whole way. Very darwinian.
               | Exhausting.
               | 
               | Fortunately, I don't have to prove myself to anyone,
               | anymore. I am working with a bunch of folks that have
               | known me for years, and are quite aware that I'm "for
               | real." I don't make a dime, and don't really care. I
               | enjoy the work.
               | 
               | Kind of a relief, really.
        
               | tchalla wrote:
               | Thanks for that context. I am still curious - How can you
               | change what other people assume that you think is not
               | correct?
        
               | ChrisMarshallNY wrote:
               | I guess I don't understand the question.
               | 
               | I can't prevent other people from assuming anything.
               | 
               | I have a portfolio, with complete, start-to-finish repos
               | of many shipped projects. If no one wants to review it,
               | then there's nothing I can do.
        
             | neo_cs193p wrote:
             | You sound like a good person to learn from. Do you have any
             | video tutorials about your process (how you go about
             | building complex applications in such a short time, what
             | you prioritize, how you plan your work days etc.). I am
             | also curious about the resources you used to build up your
             | developer & project management skills.
        
               | ChrisMarshallNY wrote:
               | I've done training and whatnot for years. Last bit I did,
               | semi-professionally, was a Core Bluetooth class for
               | try!Swift World[0], [1]. Been quite a while, since I've
               | done any classes.
               | 
               | I also have a lot of writings and whatnot, on my personal
               | site[2].
               | 
               | Frankly, I spend most of my time writing production code,
               | so I don't break off too often, to refresh my blog. I
               | should actually do something, soon. It's been a while
               | since I came up for air.
               | 
               | [0] https://www.tryswift.co/world/
               | 
               | [1] https://github.com/ChrisMarshallNY/ITCB-master
               | 
               | [2] https://littlegreenviper.com/miscellany/
        
       ___________________________________________________________________
       (page generated 2021-09-16 23:02 UTC)