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.
Hey since this is blowing up let me remind all of you that I literally wrote a book on this & related subjects.
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")
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.
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 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.
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
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...!
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 @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.
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.)
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.
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".
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)
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.
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.
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!
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.
@deejoe I am very happy to meet you.
"Division of labor is a relationship not to be gotten into lightly." -- me in 2012,
"I think software finally gives us a way to avoid division of labor." -- me in 2015, http://exple.tive.org/blarg/2015/11/15/the-thousand-year-roadmap/#comment-33801
"Abstraction should be distinct from division of labor." -- me in 2017, https://www.reddit.com/r/BarbarianProgramming/comments/6ofqy6/vocabulary_softwarecrisis/dkoq9fw
@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.
There's an ebook version: https://www.amazon.com/dp/B07GJG4YMW/qid=1534458469
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 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.)
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.