Got into a discussion with someone on Twitter about what makes a programming language "good for beginners". They seemed to want to talk about syntax and stuff. My questions are:
- how hard is it to install
- how easily can you import useful data and output results in a useful format
- how likely is a beginner to know someone who can help them solve problems they run into
- how many resources (tutorials, example code) are out there
- can you easily do all this without the command line
@darius Excel as a platform for learning about logic, working with datasets, and dependencies is a lovely thing.
@darius Spreadsheets are the modern BASIC: the only way most people know how to make a computer do a thing they want.
But the problem with powerful products designed for a niche, is that you can make a half-assed version of anything with them. So people do, constantly.
A PM at a pervious job had a GANTT chart in a spreadsheet, using cell sizes and background colors, which they updated by hand. There's a lot of that kind of thing out there.
@darius Making the computer do stuff is good, but a spreadsheet really isn't a very good tool for general jobs.
I think it's an indictment of the whole industry that every computer doesn't ship with a powerful, general system which is simple for an average user to understand and use.
IT takes a shitload of creativity to build stuff in Excel. Imagine if that got applied more directly to the problem, instead of how to express it in Excel.
@darius ⚠️ My Own Personal Experience Alert ⚠️
I had a really rough time wrapping my head around Excel (and still do, to an extent) because I've never really found a good resource on functions and stuff, and the behavior of things like copypasting has always been strange to me. Plus getting stuff into the right format. IDK. always have had a rough time with it
I was introduced to TI-Basic a year or two after being introduced to Excel and I had a MUCH easier time with that one. The big things that made it good were
- No memorizing functions or symbols, everything comes from categorized menus
- No install, it was right there on my calculator
- The calculator home screen was basically a REPL for the math parts of it
- Really great online wiki with a ton of references on advanced ways to use things (http://tibasicdev.wikidot.com/home)
- Code went from top to bottom instead of the weird cell-structure that didnt click for me until after I learned Haskell (lol)
@artemis funny you mention Haskell because I just realized that the spreadsheet model for data propagation is functional programming!
But yes some flavors of BASIC are great candidates too
@darius I think the reasons TI-Basic worked for me are all due to the core principles you cited though
- No intsall
- Easy to enter data manually or transfer over the link cable
- It was easy to find people online to ask questions, and i had friends I could try stuff out with
- Great wiki
- No command line
@darius The fact that I could send a program to my friend over a link cable was one of the best parts too, because I could be like "look at this cool thing" and then upload it to _their_ calculator right then and there with no effort
@darius Excel being the defacto development environment for office solutions is what makes it so hard to replace Microsoft in that space. Though most people writing code in Excel probably don't think of themselves programmers.
Everything is a spreadsheet.
And if it isn't, it's a spreadsheet that dynamically fetches data from Sharepoint to produce a PDF.
@darius i keep wishing for something that is spreadsheets but a little more database, a little less brittle, a little less indecipherable-once-it-gets-very-complicated. these are all programmer prejudices, of course, but i don't think they're wrong. i just think the massive programmer prejudice against spreadsheets as a whole idea has sort of kept a lot of the people who could make this happen from doing anything in the space between spreadsheets and other things. it seems so possible though.
@darius From a enterprise software UX designer point of view I support this position 100% due to the simple fact that Excel is *the* competitor to any entreprise app and the most asked feature for any of them is "can it export to Excel?"
So many processes rely on some Excel sheet with formula that somebody made that spits out stats or kpi or generate dashboards.
One very strong point of Excel is that it's crazy easy to share your "program" with other people on company locked computers.
@streetwanderer @darius Maybe an aside but as an enterprise application developer, I also tend to take every “Can it export to Excel?” in enterprise feature requests as A Challenge. What feature am I missing? What are you trying to code here that the software doesn’t do yet?
So often those questions lead to undiscovered workflows and “shadow” Enterprise code. There’s nothing wrong with “we’ve been doing this process for 15 years with this creaky collection of undocumented VBA macros”, but…
@streetwanderer @darius As an enterprise developer my job is “We can do better”. We aren’t stuck to shadows of the past and software built by amateurs with huge domain experience but few software development skills.
Sometimes that comes across as “anti-user” but the goal is improving user experience with trade off to “user programming flexibility”. But I do feel like every Export to Excel button in some way is a professional failure to meet user needs.
@darius I think another important consideration is would the tool scratch an itch for the learner and get them interested? Spreadsheets are great for some things, but if the learner is interested in making game-ish things I think Scratch is a great place to start. Building on "Logo", a lot of work was done to make the system intuitive and easy to learn, avoid syntax errors entirely, and be approachable for kids.
@Eliot_L Yes that's totally fair! Basically replace "import useful data and output results in a useful format" with "do something that the programmer finds really helpful/interesting"
@darius my first programming language was logo and it was amazing in that regard; i don't specifically recall the environment beyond "could manage it as a grade schooler" but then for years i was chasing the high of getting a little turtle to draw a little star
@darius I think someone I worked with at Spotify said they'd implemented a Spotify client in Excel. I never saw it, but it's a pretty cool feat.
In my last job we used Excel to create our “Interim Training database.” You could almost here it buzz and whirrr as it opened and closed multiple windows in order to data enter. Only one person could use it at a time. I loved it! A low-tech built for purpose database connected to a user-friendly dashboard.
Five years later, they are still using it, and it’s meeting operational and compliance needs. One of the coolest things I’ve ever done.
@darius these are all very good and important criteria. one of mine is "do you need to create an account and essentially get a corporation's permission to start using it / share your work with others".
@darius definitely frustrating how we have seemingly solved the shit out of the stuff widely considered most "core" to programming (syntax, logic, maths, libraries) while the landscape of how to get it, what the prereqs of running it are, and how to share what you make with it are a totally uneven landscape of semi-hidden chasms.
@darius I don't disagree with your criteria, but I'm realizing points 3 and 4 makes for an uphill slog for any new entrants that are intended for beginners... Which makes me think that creating a language just for beginners is probably not a correct approach.
(I can see your argument about Excel. Although I think it needs some better error messages. 😆 )
@darius The two points touching on access to support I think about a lot when choosing frameworks or whatever in developer learning resources, it's safe to assume looking outside the immediate interface for answers will continue to be routine, whether that interface is entirely programmatic or not.. Spreadsheets ftw!
@darius your post reminded me of a post I saw a while back regarding storytelling being effective for teaching programming to girls. Turns out this is being studied and has some recent backing:
It’s not a specific language / platform but I think it’s a similar line of questioning you’re exploring in your thread!
@darius excel is to programming what powerpoint is to design...
i.e. unironically the best on-ramp you could possibly devise for beginners!
@darius Sorry, this is why software is turning to sh**. People choose a programming language based on how easy it is to point and click or get help off stack overflow. To hell with actually learning how to program. I agree syntax is not as important as capability, but hand someone a piece of crap like Excel where the corporation bounds your skill, and GIGO.
@darius I taught my niece Ruby using Hackety Hack years ago. It was an easy install, Ruby is (imo) fun and generally useful, and there's plenty of Ruby help/resources out there. It looks like Hackety Hack is no longer maintained, but that would have been my answer 10 years ago 😆
I can't think of anything better than Excel today. Do kids still learn TI-BASIC on their graphing calculators?
@darius I think also the community around the programming language is super important. e.g.
- Can women participate without fear of harassment (if there is not currently some semblance of gender balance in the community and its organisers then the answer will be no)
- Is it acceptable for community members to make beginners feel stupid / give non-answers telling them to search google etc
- Are racists/nazis tolerated
It's pretty rare for a programming language community to not fail at all these tests..
@darius This reminds me of the conversations I have with CS faculty on my campus when I talk about our "Creative Coding" course. They want to start with math and syntax, and I want to start with "what do you want to make?"
Hometown is adapted from Mastodon, a decentralized social network with no ads, no corporate surveillance, and ethical design.