Recently there's been some discussion about how pe...
# thinking-together
r
Recently there's been some discussion about how people mainly use spreadsheets for making lists (e.g., according to @ibdknox and @jonathoda, most users have never even made a formula). If that's true, than what is the state of the art for end-user programming? Does the 1% of users that have created a formula still trump everything else? Or does that mean there's another model that we should consider more successful? And even if the spreadsheet is still the most successful model, what's the second most successful? Because the gap between the first and the second is in reality much smaller than many of us assumed.
šŸ‘ 2
i
I couldn't get a committed number and 1% sounds low to me. But even if we assume that's correct, that's still on the order of 8 million people, or ~50% the size of professional developers!
šŸ‘ 4
i
Depending on how fuzzy you want to make your definition of "programming", I'd like to propose one possibility for most widely-used, with a degree of dynamism in between making a list and making a formula: turning some text into a hyperlink. Which would make the WWW the most successful, which kinda feels right.
i
For the question to be useful, I think you need an explicit definition of programming, like Ivan said.
E.g. if we're willing to remove computers from programming, then the most successful version is "management" in all its forms, where processes are broken down and procedures are given to individual agents (whether that's in a factory, or at home with the kids + dishes)
everyone in the world programs to some degree effectively every day, they just may not do so with a computer
āž• 1
šŸ‘ 8
m
I think there may be 3 levels of the most basic kind of programming: • automating some repetitive calculation with a formula • adding conditionals • some sort of iteration (in excel this one is so easy that it may come before conditionals)
šŸ¤” 1
I consider an "advanced excel user" to users who use excel functions and maybe conditionals.
in some paper someone mentioned that they went through all the emails of some big corporation (I think it was enron) because they were made public in a trial and they searched for attached excel spreadhseets and ran some analysis on those. That may be an "easy" way to get some tangible numbers
r
Just adding where I got the 1% number, I wasn't sure if this was supposed to be interpreted literally https://futureofcoding.slack.com/archives/CLYCGTCPL/p1573916033110200?thread_ts=1573703587.087300&cid=CLYCGTCPL
j
Personal communication from someone at MIcrosoft Research
Don’t sneer at making lists. Look at all the code it takes to build TodoMVC.
😮 1
ā˜ļø 1
m
The Enron spreadsheet corpus is useful fodder for analysis. But the difficulty is that spreadsheets are used by lots of different people for lots of different things.
So yes, some are used for making lists, but the beauty of the spreadsheet is the gradual transition from data storage to data organization to computation.
šŸ‘ 3
r
Heh, I definite wasn't looking down on lists, I love lists. Here's another relevant personal anecdote: For the first half of my career I was a UI designer, I then I switched to iOS development, and I started easily making far more money than I ever made as a designer. One of the things that baffles me about this, is that I find the job of a programmer in many ways easier than being a designer. For one, your definition of success is more straightforward (does your program work?), but I also just find searching for solutions to problems to just be easier for programming. E.g., I'd take searching for a solution to a programming problem on Stackoverflow over trying to figure out how to do something in Adobe Illustrator any day of the week. In other words, I also generally find the technical minutiae of being a programmer easier than being a designer. So it's confusing to me that programmer's are paid so much more.
šŸ’” 4
That might only seem tangentially related, but the point is that using application like Excel really well seems to me just as complicated as programming.
šŸ’Æ 1
k
Don’t sneer at making lists. Look at all the code it takes to build TodoMVC.
@jonathoda Doesn't that conflate building software with using software? The term "make a list" could be rewritten "use list-making software"?
@ibdknox
everyone in the world programs to some degree effectively every day, they just may not do so with a computer
Oh yes. From the notes I shared here last year from Bonnie Nardi's _"A small matter of programming"_: People engage with formal systems all the time. Baseball scorecards. Knitting patterns. Following the rules of a game or sport. The book describes several others. http://akkartik.name/post/nardi
i
Yeah, it's a great book šŸ™‚
s
Could part of the barrier to progress in this area be due to the perspective that the problem to be solved is one of ā€œprogrammingā€? Even calling this group ā€œFuture of Codingā€ sort of implies that ā€œno codeā€ isn’t part of the future. For example, I don’t think the spreadsheet was invented with the intent of it being programming tool, though it has arguably become the most popular programming tool. I’d guess it was invented to help people do a class of things they would otherwise have to hire programmers to do.
šŸ’Æ 2
āž• 1
šŸ™‚ 1
i
I think it's no secret that a lot of folks here aren't making programming tools in the traditional sense. Eg: I'm making a 2d/3d modelling tool for artists, that conveniently just so happens to have a notion of evaluation. Sneaking code in through the back door, as it were. Perhaps we need a name for that stuff: "oh, code!"
šŸ˜„ 2
šŸ˜‚ 3
āž• 1
a
If that's true, than what is the state of the art for end-user programming?
I think a lot of people use spreadsheets, but I have no sense of the relative proportions. For data work, "end" users are also working with text-based coding (often in notebooks) and some well made GUI tools. I haven't used all the products below, but all of them have happy users: • For wrangling rectangles of data: Pandas in Python, dplyr in R (my personal favorite) and SQL, and GUI tools like Alteryx and Trifacta. • For data visualization: Javascript/R/Python all have increasingly powerful and easy-ish to use options for viz, there are chart chooser tools like DataWrapper and Flourish, and GUI tools with sophisticated grammars of graphics like Tableau.
j
Wrt most users never writing a formula, I think there’s a couple of different interpretations worth sussing out. • Most users never write a formula and spend time laboriously copying out data and doing calculations • Most users never write a formula and pay other users to develop custom ā€œprogrammedā€ sheets that they then enter data into • Most users never write a formula and are still fantastically productive with spreadsheets. There’s some overlap here, but the fact that a system has a powerful component that doesn’t get used isn’t necessarily a failure of that system, even in a context where we think providing that power is good. What I think would constitute a serious criticism of spreadsheet software is users occasionally try to write a formula, but get confused and frustrated and give up.
i
Let's get into the weeds — I personally know a handful of folks who have learned that you can type
=
and then band-select a number of cells to produce a sum. That's all they know. I suspect that puts them on the edge between the 1% and the 99%, though which side of that edge and how wide the edge is, who's to say.
šŸ¤” 2
k
@Ivan Reese
Sneaking code in through the back door
One example I've periodically noodled on is a more powerful email filter. By the time you provide the capability to inspect attachments and perform n-gram analysis you start naturally needing to treat existing emails as a test corpus.
šŸ° 3
w
Part of the challenge is just what's ready-to-hand. I recall sitting next to an analyst who, while working on an Excel sheet, would also use the four function calculator on his desk. Why? Well, the calculator works even when he isn't in Excel or on the computer, and since the sheet was already configured to show something else, there wasn't a good scratch spot to put the needed formula.
šŸ° 3
😄 1
d
Not sure how much of Nardi's book covers this paper (Spreadsheets and end-user programming: Nardi, et al.), but I found it to be a great look at spreadsheets and programming
s
@Ivan Reese ā€œI think it’s no secret that a lot of folks here aren’t making programming tools in the traditional sense. Eg: I’m making a 2d/3d modelling tool for artists, that conveniently just so happens to have a notion of evaluation. Sneaking code in through the back door, as it were. Perhaps we need a name for that stuff: ā€œoh, code!ā€œā€ Right, and that might be appropriate for your problem, but I’m suggesting that evaluation/code may not be needed for many/most of the tools which would allow people to do the things they are currently hiring programmers to do. That is, the range of the things people typically want to make may be small enough for them to build from a well abstracted set of primitives in a no code way.
ā¤ļø 1
w
@Steve Dekorte I love it, "oh, code!" That's perfect. Definitely modeling tools give me a feel of "fuck it: take the cartesian closure of this and call it a day." (The reference here is to category theory where a Cartesian Closed Category is, basically, one with structures, unions, and functions.) For example, you add a little bit of parametric modeling. You think it would be nice to nest these so that parameters to a big model can be passed into its parts. Then the next thing you know, you want to be able pass models as parameters. Why not?
i
@wtaysom :) @Steve Dekorte We're making the same point, I think. Excel is an "Oh, code" tool. So is Factorio. So is Zapier. These are things that don't look like "programming", but it turns out you use them to build dynamic, logical systems. You're doing programming, there's still evaluation, but it's an experience that's been designed for you, not for programmers (eww). My beef with "no code" (well, one of my beefs) is that many of these tools are just... frustratingly superficial non-textual programming environments. Given that the distinction between "coding" and "programming" colloquially is basically nil, it feels like "non-fat" all over again — sure, you've removed the text-code, but you've substituted it with something much worse! What you really want is good fat a full & rich programming environment, but created for non-programmers. Aside: The name of this community is a poor fit, and that's probably just going to have to be a meme that we relish in.
ā¤ļø 1
āž• 1
šŸ‘ 6
g
I could have sworn I got to this video from someone else linking to it nere but it shows that in one form Excel is that environment. Excel is a purely functional programming language that is very visual with immediate feedback.

https://www.youtube.com/watch?v=0yKf8TrLUOwā–¾