1. 59
  1. 14

    I like this point of view. A software artisan has control over how they work. Not everything has to be measured and optimized for efficiency as if your backlog was a conveyor belt.

    1. 5

      Same here - it’s a refreshing point of view to look at developer energy. In corporate terms, morale would be the term.

      1. 4

        But then, you have to measure and optimise corporate morale as well, so that you can grade managers and have an objective metric to evaluate your efforts on that front /s

    2. 12

      Yeah, I’m unconvinced. The point of a unicycle is not transportation, is play and perhaps exercising. I don’t care how much you enjoyed your unicycle rides, you’re not unicycling to and from work everyday.

      In the end, it’s still an argument that using vim somehow translates into efficiency gains, just an even more convoluted one, and as hard, if not harder, to prove.

      I do agree that most tools claiming to improve efficiency do so on very shacky grounds, so, although I’m not buying into a specific thing, I tend to just use whatever makes me comfortable, too.

      1. 15

        Imagine you hated your job but couldn’t get the energy to quit or do anything about it. One day you see your old unicycle in the garage and think it would be hilarious to show up on it to work, so you do.

        What happens next? Who knows. Maybe the joy reminds you why you should take the plunge and quit or maybe it makes your day just a tiny bit better.

        The whole point is that you can’t know until you try and that play, joy, and experimentation can be their own rewards. I think balancing this concept with productivity buys you: pragmatism. A bit of play, a bit of hard work and you just might end up better for it.

        1. 4

          In the end, it’s still an argument that using vim somehow translates into efficiency gains

          Not really. The author concedes that there really isn’t an efficiency gain from using vim over VS Code, for example. The point is they enjoy it more and feel more connected to their work, and that this is a significant part of the experience of programming that stands apart from efficiency.

          1. 3

            I don’t care how much you enjoyed your unicycle rides, you’re not unicycling to and from work everyday.

            I actually used to. Every day for several months. The only reason I stopped and switched to a regular bike is because a couple bad falls threatened my ability to play Cello.

            1. 1

              I mean, there are people out there using emacs, I have no trouble believing some people might commute by unicycle /sarcasm

              Seriously though, I had a couple e-scooter falls and already started to reconsider anything with less than 4 wheels, so, I get it =P

              1. 3

                (I actually use emacs, lol)

                I had a couple e-scooter falls

                Wanna fall even harder? In any case, I’m not going to ride that kind of stuff without serious protection: head, wrists, knees, elbows.

          2. 5

            I fully agree with you. In addition, I’d ask you to consider the difference between pragmatism and utilitarianism. When we say that a unicycle is not “pragmatic”, we really are speaking in terms of utility; we have a specific objective that we want to maximize, and we are willing to ignore other concerns in favor of that objective. But, in terms of pragmatic ethics, we should consider all of the effects of our choice, and not just the projection of those effects to our utility function.

            To relate this to programming, consider how we typically want to maximize performance. We pick battery usage, throughput, latency, or some other objective; and optimize it directly. However, if we want to be more pragmatic, then we should really consider the entire programming experience holistically, so that we don’t ignore any of the effects caused by our optimizations.

            1. 1

              I feel like you have “pragmatism” and “utilitarianism” switched.

              Utilitarianism was originally about maximising overall happiness. There’s a generalisation of that, where each rational agent (that we’re not unfortunately) is supposed to have a utility function it is trying to maximise. That utility function pertains to the state of the whole world, including one’s own happiness, but also a host of other criteria.

              Which is why I would have said riding the damn unicycle if it gives you joy is the utilitarian choice. But that’s a nitpick, I actually agree with your main point.

              1. 1

                I think we agree, and English is in the way. Maybe working symbolically will help. Utilitarians first choose a definition of utility which aligns with their feelings, and then study functions of type:

                u : Choice → Utility

                Pragmatic ethicists recognize that we can instead study the entirety of a choice’s effect upon the world:

                p : Choice → Effects

                And now we link the two ethical views by noting that utility is a projection from effects:

                f : Effects → Utility

                Which shows that utilitarianism is a sort of myopic pragmatism which only looks at what makes the observer happy and not at the entirety of the world.

                1. 2

                  Yeah, the original utilitarianism was indeed narrow minded. Ultimately, we want more than happiness.

            2. 3

              This post is very validating but coming from the opposite direction.

              I used linux as my main driver for 6 years. I hated myself through 4 months of using emacs. I spent at least that long in awe of typed FP, trying to learn from pretentious Haskell posts, confused why its so hard for me to understand category theory while being told that JavaScript is a stupid language for stupid people. … later … I worked professionally in haskell/elm & was let down - how can anything live up to 6 years of hype? I spent a year designing & implementing languages as well as type systems in various languages (js, ruby, rust, clojure) to prove to myself that I am not completely incompetent.

              I now do js/ts & svelte for frontend & clojure for other things (the only language that has lived up to my internalised hype).

              You’ll never find me trying to convince a rust front end developer (yew/whatever it is now) to use svelte, its clear our tastes are different.

              So I can’t help wonder why I keep seeking these people to respect my choices?

              Its destroying my mental health to watch these clickbait headlines of “rust destroys X” & feeling like I have to defend my choices constantly.

              1. 7

                In a more direct response.

                I’ve tried the unicycle, I enjoy the beauty & elegance of the dutch style bicycle.

                1. 2

                  My approach is to try new things and see if they fit for me.

                  Because others are not me, we will get different benefits from new things.

                  It’s okay to be yourself! Find what you like and use those things! Don’t be afraid to try new things and don’t be afraid to decide things aren’t for you!

                  1. 2

                    I am afraid of trying new things because of the amount of times I’m gaslit when I look up basic things on stack overflow.

                    I don’t want to grow thick skin, I want to be in healthy supportive communities.

                    Right now I’m trying learn prolog because I find it so beautiful but I’m terrified of asking questions on forums because someone will say “oh that’s trivial”, or “that’s a stupid question”, or when I share my work to be responded by “this is the wrong approach” just because it was not their/the approach.

                    Don’t make it sound like its an easy choice to put yourself out there, its really not.

                    Worst of all, as I start have people under me, I see the influence of these communities come out & I hate it.

                    I’ve managed put myself out there & learn these things, but I know so many who (understandably) are terrified about trying FP & obscure tech.

                    Its not because they are incompetent, but that they don’t have the arrogance it requires to survive these communities.

                    1. 2

                      Right now I’m trying learn prolog because I find it so beautiful but I’m terrified of asking questions on forums because someone will say “oh that’s trivial”, or “that’s a stupid question”, or when I share my work to be responded by “this is the wrong approach” just because it was not their/the approach.

                      My very limited experience with the Prolog community has been that it’s a small bunch and they are enthusiastic about newbies.

                      1. 1

                        when I share my work to be responded by “this is the wrong approach” just because it was not their/the approach.

                        It’s important to share some of your code early and don’t expect your code to be perfectly idiomatic when you’re just learning. The point of such feedback is (or should be) to teach you about idiomatic code. You can write Fortran in any language, but the way to become proficient and really see how the language shines is to learn how to write idiomatic code.

                        Try not to take such feedback too personal and definitely don’t identify with your code!

                  2. 2

                    I’ve been thinking about this lately, as someone who’s come to hate using their current language because of the core team. While I love the language itself, there’s a certain friction that arises now, to doing anything that tangentially benefits the team behind it, no matter how indirect.

                    1. 2

                      A company I used to work at used cucumber tests as a major part of the test suite for the piece of software I was working on. I came away from it with the impression that having tests that look like (usually) natural English gains you absolutely nothing in terms of tests that are easier to write, understand, or modify. I would have much preferred if the tests just used the same programming language as the production code we were testing, and if the programmers working on it could write abstractions pertinent to the tests in the same way we’d write code normally, rather than having to operate through the abstraction layer of the natural(ish) English text.

                      This has been my impression of all the features in the Ruby ecosystem I’ve used, that rely on notation that looks like natural English text. Ruby has basically never made me happy as a developer, and I’m perfectly happy to no longer be writing anything Ruby-related. In the terms of this article, my morale as a developer went down instead of up as a result of having to use these “unpragmatic” language ecosystem tools and features.

                      1. 2

                        One place I worked where cucumber testing was super useful was when we had non-developers (accountants in fact) sanity-checking the tests. We previously had issues with agreeing specifications with domain specialists, then developers writing tests/code that had slight mismatches with the agreed specs. Documenting the specifications in Cucumber parlance allowed the agreed on specification to be the tests. Helped out a lot.

                        Everywhere else I’ve worked with technically trained domain experts (ex-developers, current developers) has done just fine with test-unit or rspec style tests and cucumber was an abstraction too far for little gain.

                        1. 1

                          Interesting. I wonder if the next gen step is, the programmer writes a test, then asks Copilot to summarize what the test does, then gets the subject matter experts to sign off on the summary. You can do that without Copilot, of course, but it’s tedious. Using Copilot drops the tedium to the point where it’s worth doing.

                      2. 2

                        I would love like files of code to be like rooms in a house, or stories in an anthology: each with their own character. Or at least to have little decorations here and there: funny variable names inside a function, or a comment that references pop culture. At a previous workplace, we would go “Oh yeah, that’s in the file with the burn_garbage function!” or “Nice, who added # Gondor calls for aid / # And Rohan will answer to this worker and supervisor :D”

                        1. 2

                          Pretty much why I started making a game engine in C. “Why would you do that to yourself?” I was asked.

                          Well, learning and for fun. I don’t need other reasons than that. Just fun alone is enough.

                          Sure I would’ve made that game twice already if I used a ready engine. But where’s the fun in that, especially since i’ve already done that.