1. 1

    One thing I use pyenv/rbenv for is managing multiple versions of python or ruby. In this approach would that require installing and uninstalling software each time? What if I’m offline when I want to switch between versions?

    1.  

      I’m doing the same with shell.nix per project. Software is installed once, until garbage collected. You can create a reference to the project, so nix will not garbage collect it. I suppose that if you’re offline, just copying shell.nix from one project on your machine to another would at least give you exact same version of python/ruby, without needing to download anything. Of course, for anything on top, you’ll probably have to download stuff.

    1. 1

      Beyond Tellerrand, a thought experiment taking a couple of minutes, where you are exceeding the scope on purpose, pushing the boundary far further than it should be. This helps to explore the space around the actual context, will help fine-tune what is the boundary and more important, what your name WILL NOT BE. It’s a way to see a sharper image of the scenery you are looking at.

      Could you clarify what you mean by this? I googled Beyond Tellerrand and it only got me a conference, not a technique.

      1. 2

        Not OP, and just an intermediate in German, but Tellerrand means the edge of the plate, so this might just mean thinking beyond the horizon, or thinking outside of the box.

        1. 2

          It’s a saying (in german). Meaning: If you only look at what’s on your plate, you’ll constrain yourself to given boundaries. Looking “beyond tellerand” encourages you to explore the land behind that boundaries.

        1. 6

          Cool setup/write-up, neat but punchy little box. The thing that impresses/depresses me most though is learning from the Fiber7 site that you can get a symmetric 25Gbps connection in parts of Switzerland for about $70/mo. It even includes 200 TV channels. I mean … c’MON. Not fair.

          1. 1

            There is also a symmetric 1Gbps offering for 777CHF/year, where they even give you a whole IPv6 ::/64 space. Pretty neat.

            I shared the article because it also talks about using NixOS to configure the system.

          1. 24

            Upgrading @golang versions is actually a pleasurable task for me:

            1. I’m 99% sure nothing will break.
            2. Speedups of 5-10% are common.
            3. New compiler or vet warnings tell me how to improve my code.
            4. Excellent release notes.

            Does any other language get this as right?

            1. 6

              Go’s secret sauce is that they never† break BC. There’s nothing else where you can just throw it into production like that because you don’t need to check for deprecations and warnings first.

              † That said, 1.17 actually did break BC for security reasons. If you were interpreting URL query parameters so that ?a=1&b=2 and ?a=1;b=2 are the same, that’s broken now because they removed support for semicolons for security reasons. Seems like the right call, but definitely one of the few times where you could get bitten by Go.

              Another issue is that the language and standard library has a compatibility guarantee, but the build tool does not, so e.g. if you didn’t move to modules, that can bite you. Still, compared to Python and Node, it’s a breath of fresh air.

              1. 2

                I’ve been upgrading since 1.8 or so. There have been (rarely) upgrades that broke my code, but it was always for a good reason and easy to fix. None in recent memory.

                1. 1

                  1.16 or 1.15 also broke backwards compatibility with the TLS ServerName thing.

                2. 4

                  Java is damn good about backward compatibility.

                  From what I recall, their release notes are pretty good as well.

                  1. 2

                    As someone with just a little experience with Go, what’s the situation with dependencies? In Java and maven, it becomes a nightmare with exclusions when one wants to upgrade a dependency, as transitive dependencies might then clash.

                    1. 3

                      It’s a bit complicated, but the TL;DR is that Go 1.11 (this is 1.17, recall) introduced “modules” which is the blessed package management system. It’s based on URLs (although weirdly, it’s github.com, not com.github, hmm…) that tell the system where to download external modules. The modules are versioned by git tags (or equivalent for non-git SCMs). Your package can list the minimum versions of external packages it wants and also hardcode replacement versions if you need to fork something. The expectation is that if you need to break BC as a library author, you will publish your package with a new URL, typically by adding v2 or whatever to the end of your existing URL. Package users can import both github.com/user/pkg/v1 and github.com/user/pkg/v2 into the same program and it will run both, but if you want e.g. both v1 and v1.5 in the same application, you’re SOL. It’s extremely opinionated in that regard, but I haven’t run into any problems with it.

                      Part of the backstory is that before Go modules, you were just expected to never break BC as a library author because there was no way to signal it downstream. When they switched to modules, Russ Cox basically tried to preserve that property by requiring URL changes for new versions.

                      1. 2

                        The module name and package ImportPath are not required to be URLs. Them being a URL is overloading done by go get. Nothing in the language spec requires them to be URLs.

                        1. 1

                          Yes, but I said “TL;DR” so I had to simplify.

                      2. 2

                        I also have only a little experience with Go. I have not yet run into frustrations with dependencies via Go modules.

                        Russ Cox gave a number of great articles talking about how Go’s dependency management solves problems with transitive dependencies. I recall this one being very good (https://research.swtch.com/vgo-import). It also calls out a constraint that programmers must follow:

                        In Go, if an old package and a new package have the same import path, the new package must be backwards compatible with the old package.

                        Is this constraint realistic and followed by library authors? If not, you’re going to run into problems with Go modules.

                        I’ve run into dependency hell in: Java, JavaScript, Python, and PHP – In every programming language I’ve had to do major development in. It’s a hard problem to solve!

                          1. 1

                            Is this constraint realistic and followed by library authors? If not, you’re going to run into problems with Go modules.

                            It is (obviously) not realistic for most software produced in the world.

                        1. 2

                          I had a different experience, going from Java 8 to Java 11 broke countless libraries for me. Especially bad is that they often break at run- and not at compile time.

                          1. 1

                            I strongly agree. The first time major stuff broke was Java 9, which is exceedingly recent, and wasn’t an LTS. And that movement has more in common with the Go 2 work than anything else, especially as Java 8 continues to be fully supported.

                        1. 2

                          The author of the article is also on lobste.rs: hi @francesco!

                          Reflecting what @nelson wrote, I also liked the depth of the article. Through this article I also found out about https://uica.uops.info/, that tool is super useful for figuring out how different code behaves.

                          1. 3

                            I found it hard to get past how inaccurate the description of row-oriented stores is, although it’s correct enough to explain the difference.

                            Seems clear that sharding by timestamp is a key technique for answering observability queries efficiently. The rest seems more tenuous, but at least plausible.

                            1. 2

                              The part I’m still failing to understand is how one moves from columnar stores, where events are ordered by timestamps, to tracing (which is something Honeycomb supports). Subsequent events don’t share timestamps, and now we’re having a relational data (that is, two events are in a relation).

                              1. 2

                                When computing an aggregate, you only have to read one column. That’s a substantial I/O saving. If you’re filtering first, you can read the filter column to build a bitmap (1 bit per row), then read the aggregation column; still far less I/O than reading whole records.

                            1. 11

                              Aren’t we coming the full circle again? In the early days, everything was done on the mainframe, then personal computers came, so more work was able to be done there, while the binaries were shipped to servers. Now cloud is beginning to look like one big mainframe, and everything is moving onto it, so personal computers are becoming irrelevant — the main difference with the old days is that current personal computers are quite powerful. Aren’t we just lazy at making reproducible environments?

                              1. 5

                                There is the aspect of laziness about making reproducible environments, but there are projects where it’s legitimately about computing power, and there’s also a shifting of expectations and requirements in terms of “terminals”, as in, things that the developers use.

                                I mean yes, Docker is basically “works on my machine”-as-a-service, but I’ve really seen (and, once or twice, worked) on projects where compile times on a very beefy high-end laptop were on the order of 3-4 hours, and 32-core build servers were a necessity. Even with laptops that cost a fortune, compilation speeds were a real bottleneck.

                                And then… there’s also the matter of the development machines themselves. For a variety of reasons, some legitimate, some extremely stupid, you really do see more and more thin, light, two-port machines being used for these things. Being able to develop on a comfortable, quiet, low-power system, while outsourcing the beefy build to loud, air-conditioned datacentres is pretty attractive.

                                Running an IDE in a browser isn’t, at least as far as I’m concerned, but this is just a contingency of our age. People got tired of many madnesses in the last 40 years, and they’ll get tired of this one. But planting the seed of easily-accessible, on-demand development environments and build machines is worth it, I guess.

                                Plus, there’s really the commercial aspect. It’s not really a technical matter. Technically, I mean, as far as you and me and all other developers are concerned, a cloud IDE is never going to come even close to an application that’s constrained neither by the myriad of quirks that browsers have, nor by the fact that GUI programming for the web is barely where GUI programming for “real computers” was 30 years ago (minus things made inevitable by our times, like internationalization, responsiveness etc.). But it’s going to make way much more money.

                                There’s a nice essay by Rudolf Winestock that keeps being posted around when stories like these pop up called The Eternal Mainframe, and the man has a point. Well, several, but this one’s one of them:

                                The fact that minicomputers, microcomputers, and workstations were ever successful indicates that the computer and telecommunications industries were still immature. It may also indicate that Big Blue and the Death Star were price gouging, but that’s another story.

                                I also think that widespread deployment of computers, with compute time that you don’t rent, was in good part a historical accident – mind you, a happy one, but ultimately something that just can’t prevail in our industry.

                                1. 1

                                  I think the problem has historically been network support - PCs pre-date widespread reliable internet, not to mention that we’re not using dumb terminals now but clients on computers that do a bunch of processing clientside, if only to avoid latency problems for e.g. responsive UI.To clarify, by “responsive UI” I mean a UI whose response time is very low, not the “responsive” buzzword.

                                1. 12

                                  It’s abundantly clear that the author doesn’t know who the authors of this book are, so some context to bear in mind:

                                  Sandi Metz teaches OOP to people who have built a giant mess and need help refactoring. She focuses on taking non-OOP code and using principles from it to solve problems. Her conference talk All The Little Things is one of the best refactoring talks I’ve ever seen.

                                  The other author is Katrina Owen, who is also well-known for her talks on refactoring. Notable, she is also the creator of Exercism.

                                  Both of these people focus on practical advice for digging your way out of a messy codebase by refactoring.

                                  1. 2

                                    Isn’t this an appeal to authority?

                                    As I haven’t read the book, I can’t comment on more, but it seems to me that the OP is bothered that the book is not much about OOP (despite being advertised as), and there is a lot of refactoring. Your comment seems to suggest that the book authors indeed focus mostly on refactoring, so OPs criticism might be well placed.

                                    1. 2

                                      The OP is bothered by the teaching approach that the authors are taking. He seems to want a book about designing ideal OOP systems from first principles, and this book was never intended to be that.

                                      The preface to the book could just as well have been a response to this blog:

                                      Despite what one might predict, novices often have an easier time with this material. As they are unencumbered by prior knowledge, their minds are open, and easily absorb these ideas.

                                      It’s the veterans who struggle. Their habits are deeply ingrained. They know themselves to be good at programming. They feel quick, and efficient, and so resist new techniques, especially when those techniques temporarily slow them down.

                                      This book will be useful if you are a veteran, but it cannot be denied that it teaches programming techniques that likely contradict your current practice. Changing entrenched ideas can be painful. However, you cannot make informed decisions about the value of new ideas unless you thoroughly understand them, and to understand them you must commit, wholeheartedly, to learning them.

                                      Is it any wonder that a person hate-reading this would come away with a negative view? (I just discovered the OP is into Urbit. That explains a lot)

                                    2. 1

                                      It’s abundantly clear that the author doesn’t know who the authors of this book are, so some context to bear in mind:

                                      It’s true. I pretty much never dig into who wrote a given book.

                                      Both of these people focus on practical advice for digging your way out of a messy codebase by refactoring.

                                      And that’s how indeed this book feels to me.

                                      My review came out ranty, primarily because of frustration. I was asking around for good books/examples of code to study and critique OOP. Multiple people recommended 99 bottles, and it’s not about OOP, but about refactoring code. And at very, very small scope for that matter, using examples that probably confuse a lot of people and possibly backfire. (Number6 inheriting from BottleNumber?!)

                                    1. 27

                                      This is perhaps the most unfair review I’ve ever read of anything, but I suppose it has to be what I expected after reading your other work. At this point I think it’s clear you just like to hate things

                                      1. 10

                                        I agree, however I also liked the essay.

                                        It’s a gimmick, not very well done, but I’m giving the author the benefit of the doubt. I believe he’s honestly just trying to figure things out. Sucks to try to figure things out when you already know everything, but sadly many of us live in that spot.

                                        I do my best to encourage coders to vent and write about how they’re processing and learning about their work. I do this no matter what I feel about their writing technique, style, or maturity level. I learn when I watch other people learn.

                                        1. 3

                                          I haven’t read the book under review, so I don’t know how fair the review is. What would be your take of the book, why does the review seem unfair?

                                          1. 19

                                            Top two reasons the review is unfair IMHO:

                                            • It’s a book of exercises and the main complaint of the article is that it’s full of exercises. Exercises are not real code, of course they are not they are meant to be small enough to demonstrate the idea under study
                                            • The only code from the book that is quoted is the example of procedural code to be refactored and then the article says “this is procedural, not OOP!” Of course it is! It’s the procedural example! And the author even says that if this code were never going to change or get more complex this is how one should write things, so complaints that making it more OOP doesn’t make it better are shared by the author
                                            1. 8

                                              It’s a book of exercises and the main complaint of the article is that it’s full of exercises. Exercises are not real code, of course they are not they are meant to be small enough to demonstrate the idea under study

                                              What’s the point of exercise when it has nothing to do with what you’re trying to learn? When you reduce the exercise to absurd simplification, it’s just a waste of time that confuses people. Do weightlifters practice by lifting spoons with their fingers?

                                              The only code from the book that is quoted is the example of procedural code to be refactored and then the article says “this is procedural, not OOP!”

                                              All code in the book is not a meaningful OOP. It starts with not-an-OOP, and then goes on twisting the code without making it meaningfully OOP. The self goes unused 95% of the time, using classes as namespaces. The only time it is used is for a utterly contrived and confusing wrapper around a number that is there to show polymorphism.

                                              Even comparing to typical lame examples of cats & dog objects making sounds, it falls short as there isn’t even any side-effect involved to talk about.

                                              1. 4

                                                it falls short as there isn’t even any side-effect involved to talk about.

                                                If you believe OOP requires side-effect, then you’re talking about a very different kind of OOP than the one taught by the book, I agree. As I think we’ve agreed in other threads, the term OOP is over-broadly used to describe radically different things. Some of those things involve side effects.

                                                1. 6

                                                  If you believe OOP requires side-effect, then you’re talking about a very different kind of OOP than the one taught by the book, I agree.

                                                  It’s not that it’s required. It’s that without any side-effect in sight there is no meaningful difference between procedural, functional, OOP style. All other OOP books I’ve read in one form or another describe an importance of using messages to make objects do something: trigger other messages, change internal state, print something on the console. How can it teach about OOP when there isn’t any OOP to talk about. Where is the state encapsulation where each method just returns a value. All that is presented is a little bit polymorphism.

                                        1. 4

                                          Is there any explanation why some codepoints are narrower, and some are bellow the baseline? That seems quite weird.

                                          1. 3

                                            Nice work, but I think I manage to break it by pointing it to nixos/nixpkgs.

                                            1. 4

                                              there are definitely repos that have so many files in the first 5 levels that the viz stalls! If I had more time, I would at least convert this to use Canvas instead of SVG, but sadly this was a timeboxed exploration! Hopefully someday

                                              1. 1

                                                Same for torvalds/linux :D Edit: got it running, took a while, looks like it’s not actually able to render everything or there are too many files.

                                              1. 7

                                                Yes you need a job orchestrator to abstract away your machines.

                                                You should be running Hashicorp’s Nomad unless you are a Really Massive Shop With People To Spare On Operating Kubernetes.

                                                In nomad I can run arbitrary jobs as well as run and orchestrate docker containers. This is something Kubernetes can’t do.

                                                In nomad I can upgrade without many gymnastics. That feels good.

                                                1. 13

                                                  Operating a simple kubernetes cluster isn’t that bad, especially with distributions such as k3s and microk8s.

                                                  You should be running Hashicorp’s Nomad unless you are a Really Massive Shop With People To Spare On Operating Kubernetes.

                                                  You should do what works for your team/company/whatever. There’s more than just Nomad and Kubernetes and people should be equipped to make decisions based on their unique situation better than someone on the internet saying they should be using their particular favorite orchestration tool.

                                                  1. 6

                                                    There’s more than just Nomad and Kubernetes

                                                    For serious deployment of containerised software, is there really? I did quite a bit of digging and the landscape is pretty much Nomad/Kubernetes, or small attempts at some abstraction like Rover, or Dokku for a single node. Or distros like OpenShift which are just another layer on Kubernetes.

                                                    I’m still sad about rkt going away…

                                                    1. 1

                                                      LXD is still around and developed!

                                                      1. 3

                                                        LXD is for system containers, not application containers. Pets, not cattle.

                                                        I really enjoy using LXD for that purpose, though. Feels like Solaris Zones on Linux (but to be honest, way less integrated than it should be because Linux is grown and illumosen are designed).

                                                    2. 2

                                                      Well said ngp. Whether you want to talk about Kubernetes or the class of orchestrators like it, it’s clear that there are enough tangible benefits to the developer and devops workflow that at least some of the paradigms or lessons are here to stay.

                                                    3. 2

                                                      No, I do not.

                                                      1. 2

                                                        I’ve only heard “you should run Nomad instead” in online comments, every time I hear about Nomad in person (eg from infra at Lob) it’s “we’re migrating from Nomad to X (usually Kubernetes) because Y”

                                                        1. 1

                                                          I haven’t tried Nomad yet, even though I heard nice things about it, and it seems they like Nix. What would be Ys that others list, what are the corner cases where one should avoid Nomad?

                                                          1. 1

                                                            I think when a lot of work would be saved by using existing helm charts.

                                                            Or when you need to integrate with specific tooling.

                                                            Or when you need to go to a managed service and it’s easier to find k8s.

                                                            And finally I think when you need to hire experienced admins and they all have k8s and not nomad.

                                                      1. 3

                                                        Isn’t career just a fancy word used to convince people they should spend more time at work? That is to say, we work to earn money to support life outside of work, and if we define our life through our work, we end up with a self fulfilling prophecy.

                                                        1. 1

                                                          If you’re very lucky, your career and your vocation are the same thing.

                                                          1. 2

                                                            Eh, the word “vocation” (calling) is something that sends chills every time. It implies that we have a purpose to be something, sent from a divine being. In truth, we can be whatever our surrounding allows us, that supports us in surviving.

                                                        1. 9

                                                          Sponsors: Warner Music Group, Universal Music Group, DARPA

                                                          What the fuck ?

                                                          1. 41

                                                            It is a joke, refers to GithHub copilot and its carelessness against licenses. If you look at the code, you will see that after some sleep time it will serve you back your original file :D

                                                            1. 4

                                                              I’ve assumed that there was a real NN behind this satire until I’ve read this thread. I think that the problem here is that the website miscommunicates its purpose.

                                                              Also I couldn’t find any direct reference to the source code, and a quick search on DuckDuckGo and GitHub doesn’t show up anything.

                                                              1. 5

                                                                Is there the source code for Copilot available somewhere? I doubt it, but wondering would it change anything if it were.

                                                                1. 4

                                                                  Control-U on the webpage

                                                                  I think sometimes we forget that websites are code too

                                                                2. 5

                                                                  Lame. At least actually train a NN.

                                                                  1. 5

                                                                    If you receive copyrighted material and process it, in addition to costs associated to and computational power, how much would you risk in legal terms?

                                                                    1. 3

                                                                      Copyrighted material must be processed in order to play it, by the very nature of how computers work the material must be copied in part or in full a number of times during processing - there is actual exemption in copyright law to allow for this otherwise the very act of playing back material would be illegal by the letter of the law.

                                                                    2. 4

                                                                      Q: What would the NN actually do? You want just enough learning/wiggle room for it to be controversial like Microsoft Copilot, methinks. Perhaps a NN that generates a song inspired by the input song, with a slider for how similar you want the song to be.

                                                                      Then you could break it down by degree - at what point is the song “the same song with a note or two different”, vs “a different song that shares most of the notes”?

                                                                  1. 25

                                                                    It looks like the maintainer has resigned due to IRL harassment from channers: https://github.com/tenacityteam/tenacity/issues/99

                                                                    1. 9

                                                                      Based on their followup comment, seems like harassment is an understatement, they were assaulted. :((

                                                                      1. 4

                                                                        Assault with a knife and a running Investigation by the Federal Criminal Police Office. So it doesn’t actually matter anymore what 4chan might have bothered, I hope they really catch those guys for good.

                                                                        1. 6

                                                                          It’s likely that they’ll catch and convict the one person who did the assault, and that nobody else will have any liability. I say this as somebody who’s followed the activities of hate groups for years.

                                                                          1. 1

                                                                            Well that would be at least something. If we can push such activity back to online harassment it’ll already be a win.. Or rather: I wouldn’t be surprised if they can’t find out where/who it was and the charge is so light for some technical reasons that nothing actually happens. I think it’s fair to convict at least the person that was ready enough to start going at people with a knife, these are ticking bombs anyway in my experience. But yeah, it’s probably not the last “raid” of 4chan.

                                                                        2. 2

                                                                          Is the context for this preserved somewhere? The comment is replying to @alicemargatroid but I don’t see any posts from them in that issue. Seems like GitHub may have Optimized our Experience.

                                                                      2. 4

                                                                        As near as I can tell in the five minutes I’m willing to spend looking in to this, the joke on 4chan was that the project should be named “Sneedacity”. Apparently “sneed” is some sort of meme, in-joke, or something. And instead of leaving it as just some joke comment people started “campaigning” to name it Sneedacity.

                                                                        🤷

                                                                        1. 5

                                                                          Huh. I assumed it was a play on Au (gold) vs Sn (tin) with “ee” filled in to make it pronounceable.

                                                                          1. 18

                                                                            Your mind is operating on a slightly higher level than 4chan…

                                                                            1. 4

                                                                              I’m glad I’m at least operating on a different level, whether you want to call it higher or lower. Wow. When I first heard about the policy change announcements, I thought about grabbing the source from the last change set before the transition, tossing it into a git repo, and putting builds online for the platforms I use + Windows. ’Cause I use it regularly and generally build it from source for myself.

                                                                              Now I’ll just keep building it for myself, and won’t jump into this fray. It’s not like I was really going to do any more maintenance than fixing the odd wx upgrade breakage anyway. Bleh

                                                                          2. 4

                                                                            Apparently it’s 4chan-speak for “special needs”, though with the amount of fake symbol-recontextualizing 4chan does I’m not sure if I believe it.

                                                                            1. 4

                                                                              Formerly Chuck’s.

                                                                              1. 1

                                                                                Eh?

                                                                                1. 4
                                                                                  1. 2

                                                                                    “Sneed’s feed and seed” “Formerly Chuck’s”

                                                                                2. 4

                                                                                  I believe a poll organised by the dev for the name was won by “sneedacity” and the dev refused to use the name therefore starting this situation.

                                                                                  1. 14

                                                                                    Sorry, but this reads as blaming the victim. Sure, the dev decided not to use the name, but angry 4chan mob appearing in front of his place is way above any meaningful escalation.

                                                                                    1. 9

                                                                                      I am stating the facts as I know them, please read less into a single sentence.

                                                                                      1. 6

                                                                                        I don’t think it was intended like that at all: it was just establishing what happened exactly, not assigning blame. That’s how I read it anyway.

                                                                                      2. 4

                                                                                        The term “legitimately won” is basically meaningless when it comes to internet polls.

                                                                                        1. 2

                                                                                          Well yeah, but what I mean is that people came and voted and didn’t “hack” the result, whatever that is supposed to mean.

                                                                                  1. 2

                                                                                    This is a really nice, detailed writeup. I’ve seen already quite a few of them (starting with the videos from Honeycomb about their Retriever system). However, I can’t find any good material about tracing storage backends. Anyone has some good ones to recommend?

                                                                                    1. 6

                                                                                      I actually delete mail a lot rather than keeping everything around.

                                                                                      1. 2

                                                                                        Yeah, this has been my strategy for years. I just delete majority of emails, and never had issues. There was a period when I diligently archived the emails, but now I realize I never went to read them.

                                                                                      1. 15

                                                                                        Aren’t these tricks exactly what’s in the project’s README: https://github.com/junegunn/fzf#fuzzy-completion-for-bash-and-zsh?

                                                                                        1. 2

                                                                                          Sure looks like it. I will note that I’d totally missed some of the shell completion stuff that’s in there (I’m not sure if it’s a recent addition), despite having used fzf for years now.

                                                                                        1. 48

                                                                                          This is advocating that you always be a disposable commodity within a labor marker. A repackaging of the “free labour” idea from liberalism - that wage labour frees the worker to engage in any contract as they please. But the reality of being an exchangeable commodity is rather different.

                                                                                          1. 30

                                                                                            You can still be indispensable through your unique contribution and areas of focus that others would not have pioneered. By making it easy for people to follow in your footsteps and take over from you, you are influential, you change the way things work, and people notice that. When it’s for the organization’s betterment they appreciate it too. :)

                                                                                            I don’t want to be indispensable in the sense of a bus factor. I do want to be indispensable in the sense of “Wow, it’s a good thing /u/kevinc works here.”

                                                                                            1. 16

                                                                                              That’s perfectly reasonable, but in order for it to work, there has to be a company at the other end that needs, values, and can recognize innovation and unique contribution. All companies claim they do because you don’t want to project a boring software sweatshop image, but realistically, many of them don’t. Only a pretty small fraction of today’s computer industry checks out the “needs” part, and you still got two boxes to go. For many, if not most people in our field, making yourself indispensable in the sense of a bus factor is an unfortunate but perfectly valid – in fact, often the only – career choice that their geography and/or employment allows for.

                                                                                              1. 9

                                                                                                Well technically we’re all bus-replacable. Some of us have enough experience and/or good-will built up in the company that if you actually do what the article proposes, you actually won’t be easily replacable even if you make yourself “replacable”. It’ll be either too expensive for the company to find and train your replacements, or they’ll lose on the value you’re bringing.

                                                                                                What the article doesn’t mention, though, is that you can’t do any of that stuff if you’re a green junior dev. It’s easy to find a job when you’re good at it and you can prove it, but just getting kicked out on the street while I was still young in the industry would scare me shitless.

                                                                                                1. 1

                                                                                                  I agree you want to find a workplace that does value you, and even if you do find that, you have to watch for the organization changing out from under you. Just, on your way there, you can earn some great referrals by giving what you know instead of hoarding it.

                                                                                                  As an engineer, is it valid to make yourself a wrench in the works entrusted to you? I think no. But to your point, you’re a person first and an engineer second. If survival is on the line, it’s another story.

                                                                                                  1. 3

                                                                                                    Just, on your way there, you can earn some great referrals by giving what you know instead of hoarding it.

                                                                                                    I absolutely agree that it is invalid to make yourself a wrench in the works entrusted to you, but computer stuff is absolutely secondary to many companies out there.

                                                                                                    Note: I edited my comment because, in spite of my clever efforts at anonymising things, I’m preeeetty sure they can still be traced to the companies in question. I’ll just leave the gist of it: so far, my thing (documentation) has not earned me any referrals. It has, however, earned me several Very Serious Talks with managers, and HR got involved in one of them, too.

                                                                                                    I know, and continue to firmly believe (just like you, I think) that good work trumps everything else, but I did learn a valuable lesson (after several tries, of course): never underestimate good work’s potential to embarrass people, or to make things worse for a company that’s in the business of selling something other than good work.

                                                                                              2. 8

                                                                                                I think this is a bit unfair. I’ve worked with people who have hidden information and jealously guarded their position in a company and it makes it harder to do your job. You have to dance around all sorts politics and all changes are viewed with suspicion. You have to learn what any given person is protecting in order to get what you need to do your job. You hear stories about people getting bribed to do their jobs. People won’t tell you how to do things, but will do them so they are unreplaceable. People build systems with the eye towards capturing other parts of the organization.

                                                                                                Most of that would go away if people did what was described in the article.

                                                                                                1. 9

                                                                                                  Maybe if IT workers had a better way of protecting their job security – such as a union – there wouldn’t be the motivation to do this kind of thing.

                                                                                                  (Note: I don’t do this kind of thing, but I totally understand why someone would, and worker solidarity prevents me from criticizing them for it.)

                                                                                                  1. 2

                                                                                                    I don’t know if I agree with you in this specific case. It was at a place that never fired anyone. People who were not capable of doing their jobs were kept for years. It seemed to be more predicated on face saving, inter team rivalry and competition for budget.

                                                                                                2. 6

                                                                                                  Yes, I had the same thought as you. It’s true that “if you can’t be replaced, you can’t be promoted”, but since when are people promoted anymore? The outlook of this article is that job security is not something you can always take for granted; indeed, that you can take upward (or at least lateral) mobility for granted. Maybe that’s true for highly-marketable (white, cis-male, young, able-bodied) developers in certain urban areas, but at my age, I wouldn’t want to count on it.

                                                                                                  1. 4

                                                                                                    Being a disposable commodity doesn’t necessarily imply low value. You can do something that is highly uniform and fungible, and also well compensated, I think.

                                                                                                    1. 17

                                                                                                      you think wrong. Historically “deskilling” (this is the term for when a worker becomes standardized and easily replaceable) corresponds to salaries going down. This happens for a variety of reasons: you cannot complain, you cannot unionize easily, you cannot negotiate your salary. You get the money you get just because your employer has no mean to find somebody that can do exactly the same and get paid less. If that becomes possible and you don’t have rights that protect (minimum wage, collective agreements, industry-wide agreements) or collective organizations that can protect you, the salaries go down. Fighting deskilling is not necessarily the most efficient strategy and doesn’t have to be the only one, but for sure giving up on that is no good.

                                                                                                      On top of that, deskilling is coupled with more alienation, less commitment and in general a much worse working experience, because you know you don’t make a difference. You become less human and more machine.

                                                                                                      Programming, I believe, naturally fights against deskilling because what can be standardized and therefore automated will eventually be automated. But the industry is capable of generating new (often pointless) jobs on top of these new layers of automation of tasks that before were done manually. Actively pursuing deskilling is unreasonable also from an efficiency point of view, because the same problem of “scale” is already solved by our own discipline. The same is not true for most other professions: a skilled factory worker cannot build the machine he’s using or improve it (with rare exceptions). A programmer can and will if necessary. Deskilling means employing people that will only execute and not be able to control the process or the organization, leaving that privilege and responsibility to managers.

                                                                                                      1. 7

                                                                                                        the article is not about deskilling, it’s about communicating your work with your peers. Those are very different things.

                                                                                                        1. 8

                                                                                                          it says explicitely to try to be disposable. Disposability and deskilling are equivalent. The term, in the labor context, is not just used to say “this job should require less skill to be done”. It’s used for any factor that makes you disposable or not, regardless of the level of skill involved. Clearly skill plays a relevant role in the vast majority of the cases. What he’s advocating is to surrender any knowledge of the company, the platform and so on, so that you can be easily replaced by somebody that doesn’t have that knowledge. You’re supposed to put in extra effort deliberately (not on request from your boss and maybe often going against company’s practices) to make this process more frictionless from your employer. That’s what the article is saying

                                                                                                          1. 3

                                                                                                            it says explicitely to try to be disposable.

                                                                                                            While it does say that, I think that the actual meaning of the article is “make the work you do disposable”, not “make yourself disposable”. That way you can go through life making changes that make it easier for everyone around but also highly profitable for the company so that while the work that you currently are doing can be done by whomever, the potential value you bring at each new thing you do is incalculable. So they’d keep you, of course.

                                                                                                            1. 1

                                                                                                              What he’s advocating is to surrender any knowledge of the company, the platform and so on, so that you can be easily replaced by somebody that doesn’t have that knowledge.

                                                                                                              Are you suggesting that the replacement will not have that knowledge, or will at the moment of replacement have gained that knowledge?

                                                                                                              Disposability and deskilling are equivalent.

                                                                                                              This is not the case in my mental vocabulary, and I don’t think it is the case in the article linked. Disposability is about upskilling as a team, becoming more engaged in craft, and having a community of practice, so that the community doesn’t rely on a single member to continue to upskill/self-improve.

                                                                                                          2. 1

                                                                                                            While I agree that deskilling is a thing, it might be more something that affects blue collar workers working on an assembly line than IT professionals (to an extent). Replacing someone isn’t just firing the more expensive person and hiring a cheaper one. It involves onboarding and training, which may take several months, which directly translates to lost earnings.

                                                                                                            1. 1

                                                                                                              It happened to plenty of cognitive workers throughout the work. Deskilling is also replacing accountants, fraud analysts or many other professions with ML models that live on the work of data labelers somewhere in Pakistan.