Follow

This is a very hot take and also not a new one but here we go: the goal of a properly functioning software engineer is to obviate themselves, not by solving the customer's specific problems but by blurring the line between using a computer and programming one to the point where users can solve their own problems.

· · tootstream · 1 · 25 · 67

Hey since this is blowing up let me remind all of you that I literally wrote a book on this & related subjects.

amazon.com/dp/1718167423

@enkiv2

I have a very expansive take on what qualifies as 'programming' and a very dim view of the idea that a division of labor makes sense to apply to computing (ie, that there are disjoint sets "programmers" and "users")

@deejoe @enkiv2

It really worries me that so many programmers sneer at Excel and Access. Those tools exist because they allow users to do programming; yet somehow this is not cheered, but seen as an enemy of 'proper' programming.

(of course then systems programmers sneer at 'mere web developers', etc)

I don't understand the division and I never have. It doesn't seem to be about wanting to make the tools better - more a resentment that user-accessible programming tools exist AT ALL.

@natecull @deejoe @enkiv2 I uh, can give my two cents on that...!

At the last place I worked, users were often using excel sheets and access databases, created by other users a decade ago, and modified bit by bit over time. They'd been used so long no one remembered how they worked, and their creators were long gone, but the staff relied on them so much that they didn't know how else to do their jobs. We'd learn these existed at 3am if it 'broke'.

@natecull @deejoe @enkiv2 Think like a macro enabled spreadsheet to keep track of how much product has been loaded into trucks, and how much was still left to go. Very clever, honestly, but in the hands of people who didn't know what a spreadsheet was.

@natecull @deejoe @enkiv2 So us IT people would get calls at 3am complaining that the 'program' wasn't working anymore. When we asked which program, it would turn out to be some excel document that had been copied and re-copied over the years; and a few copies back, someone had probably typed over a formula field and broken something.

@natecull @deejoe @enkiv2 And it was our fault it wasn't working, because of course it was. This spreadsheet we didn't make and didn't know about and would probably take weeks to untangle and figure out (not just from a technical point of view, but because we didn't know their jobs well enough to guess why any of it did anything).

So these things were the bane of our existence, basically. :blobmelt:

@Lexi Spreadsheets definitely have a debugability problem. :/

@cstanhope
They're also difficult to revision-control in any meaningful way. :(
@Lexi

@Lexi @natecull @deejoe
This is the thing. We need to separate big computing from small computing.

If you're getting paid for it or someone gets hurt when it breaks, it's big computing and should be bulletproof. (Throw TDD and formal methods and everything else at it.)

For everything else, it's small computing, which should be as fast and loose (and flexible and expressive) as possible.

Big computing is ADA and small computing is LISP.

@Lexi @natecull @deejoe
90% of the emergencies in computing come from using dirty hacks when you need precision engineering.

90% of the slow frustration in computing comes from using precision engineering when you need dirty hacks.

@Lexi @natecull @deejoe
Nobody uses a vice grip to do important mechanical repairs the way people use PHP (the developer's equivalent of the excel spreadsheet) to build important software -- almost entirely because people consider programming language preference a part of their identity while they don't think of physical tools the same way.

@enkiv2 @natecull @deejoe Makes sense! Our problem was historic, really--left over stuff from old ways of doing things. We spent years creating more robust replacements for crucial stuff like this and encouraging users to keep us in the loop. It was just scary whenever we found that the only way new employees at some remote branch had been taught to do their job was dependent on a flimsy excel 2000 document...!

@Lexi

This violates your notion of how things are supposed to be done, but we all probably have stories like this. Peripherally, mine are about mainframe programs that are *still* running after, what? 30 years? Spreadsheet formulae, ha! How about no source & no toolchain?

This *is* how the world works. Messy reality mated to universal machines under deadlines and other constraints by messy, imperfect monkeys.

@enkiv2 @natecull

@enkiv2 @Lexi @natecull @deejoe One thing that I'd argue is that there needs to be a good way to move from small to big computing, before the small computing gets contorted into things that are too hard to understand.

I think a lot of this requires responsive development organizations in companies, though, and that's one of the first things to get cut.

@bhtooefr @Lexi @natecull @deejoe
Absolutely. Every big computing project starts as a small computing prototype.

I suspect that the constraints are so different that it's better off if a total rewrite and change of tools between prototype and release is done. Otherwise you get hacky stuff left over. (Not even hacky code -- just concepts and structures that have no place in serious code that needs to be maintained by angry strangers.)

@Lexi We "real programmers" forget how corners of our large "repositories" work *all the time*. So that particular problem is hard for everyone.

@natecull @deejoe @enkiv2

@natecull @deejoe @enkiv2 Spreadsheets are a decent intro to functional programming.

We need more programming tools as accessible as spreadsheet formulas.

And tools like spreadsheets need more modern programming helper tools so they can be maintained properly.

@deejoe @enkiv2 Who ever said “disjoint sets”?

Remember “eat your own dogfood”?

@wrenpile

I did. I was qualifying the distinction I'm addressing.

@enkiv2

@deejoe @enkiv2 But “disjoint” means “no members in common”. Did you mean that?

Honestly, the idea baffles me.

@wrenpile @deejoe
Does dogfooding a domain-specific tool that isn't the developer's domain even count as being a 'user'?

@enkiv2 @deejoe Maybe not, that would just be alpha testing.

But Microsoft really really didn’t want its programmers using non-MS oses and utilities back in the day.

@wrenpile
Sorry, getting myself in front a proper keyboard so I can try to address this without getting too reactive. I'm receiving your responses as being sort of ... fighty and don't want to inhabit that direction.

What I mean is, I think there are definitely some folk who see programmers and users as distinct. Yes, members of disjoint sets. One, or the other, but not both.

@enkiv2

@wrenpile

Probably this is most accessible if you walked up to the typical holder of the wee computer we now call a smartphone and ask that person if they consider themselves a programmer, or even a sysadmin. They'd almost surely look at you funny.

@enkiv2

@wrenpile

Those of us with more experience or education or training in how to get computers to do things certainly *use* computers and in a trivial sense can be called "users". But that's not generally what we mean--we mean *just* users. As in, not programmers or developers or otherwise "good with computers".

@enkiv2

@wrenpile

There's a certain justice in excluding those more adept from those who consume the results of their efforts--cf the difficulty in inhabiting the beginners mind, forgetting what it is like not to know a thing, forgetting that one had to learn it.

@enkiv2

@wrenpile

That said, our skills only at their best include the kind of empathy and communication and life experience and so forth to be able to delve out what the desired behaviors of the computer are to be (or anti-desires--what the computer absolutely must *not* do in the course of doing the things it must do, or that it would be nice for it to do if it's not too much trouble kind wizard)

@enkiv2

@wrenpile

So there's a sense on both sides that the programmer or developer or designer or whomever can do more, and that the role of the putative user is more limited, passive, consumptive than it is. Both in terms of their role in defining what is to be done, but in accepting their responsibility for what gets done.

@enkiv2

@wrenpile

Maybe I'll just point to the existence and currency of the term "UX" as to how deeply established this idea of consumer computing is. You're a bad programmer if you don't program well for someone who is not you, which is to say, a user.

@enkiv2

@deejoe
Ok, I get what you mean now: you’re talking about *mere* users, people who just want these devices and programs to work, thankyouverymuch (not that there’s anything wrong with that—we can’t be interested in everything.)

I’m sorry if I seemed combative, I just didn’t understand you. Thanks for taking the trouble to spell it out.

@enkiv2

@wrenpile

Heh. Sorry I was unclear, but yes.

At the risk of ruining the good will, I'll throw out there that I think there *may* be something wrong with it: Think the sorceror's apprentice--wanting the benefits of great power without the discipline. But that's commerce for you: Promising someone they *can* have it all, and if they act now, for a special low price!

@enkiv2

@deejoe

The sorcerer’s apprentice issue is real, and it’s an irresponsible sorcerer who gives apprentices powers they don’t know how to use.

In this vein, Microsoft has been complaisantly giving naïve users default root access in Windows for decades without educating them about what that means, a practice that has caused immense damage.

@enkiv2

@deejoe I am very happy to meet you.

"Division of labor is a relationship not to be gotten into lightly." -- me in 2012,
akkartik.name/post/libraries2

"I think software finally gives us a way to avoid division of labor." -- me in 2015, exple.tive.org/blarg/2015/11/1

"Abstraction should be distinct from division of labor." -- me in 2017, reddit.com/r/BarbarianProgramm

Me in 2018: mastodon.social/@akkartik/1004

@enkiv2

@enkiv2 how did I miss this? Its absence in the lab library will be rectified by Sunday, according to the shipping gnomes in Jeff's balls. :blobpats:

@djsundog
LOL

You missed it because it was published this morning :)

@ciaby
There's an ebook version: amazon.com/dp/B07GJG4YMW/qid=1

I don't think they'll give you an epub though. If you specifically need epub, I can convert it & send it to you.

@enkiv2
Yeah, but it's kindle. PayPal payment for a epub version? Does it work for you?

@ciaby
You don't need to pay me anything lol. Give me a few minutes & I'll DM you a link.

@enkiv2 I just got the ebook and I like it very much so far. Thank you!

@enkiv2 is there a kindle or ebook version? Quick google says no, but thought I'd ask just in case... :)

@wdtz Yes, amazon has an ebook. (For some reason, it doesn't connect the ebook to the print book. If you click on my author page, it's listed, though.)

Sign in to participate in the conversation
Eldritch Café

Une instance se voulant accueillante pour les personnes queers, féministes et anarchistes ainsi que pour leurs sympathisant·e·s. Nous sommes principalement francophones, mais vous êtes les bienvenu·e·s quelle que soit votre langue.

A welcoming instance for queer, feminist and anarchist people as well as their sympathizers. We are mainly French-speaking people, but you are welcome whatever your language might be.