Computing is too easy
aeon.co
aeon.co
Some things might not be possible to fix. Teaching people to RTFM, for instance. No search engine will be able to replace consistent and comprehensive documentation written by the people who know the system intimately, but it's hard to convince most users, many developers, even, that this is actually worth the effort it takes, both to read and write.
Being able to model data and reason about complexity, even for non-programmers, is a something else you can't really get around. Ever had people in your organization with outlandish ideas that just don't compute, right up there with "why don't you just write a program that writes programs". I've had to explain that yes, I can write a program that does what you want, but it's not going to finish before the heat death of the universe. During all of this arguing a whole bunch of computers are sitting idle when they could be doing useful work if only their operators knew how to tell them to.
I too cut my teeth on HyperCard, and the best thing about it really focused on doing things people really needed. Organizing and reasoning about people's data, whether it was appointments, contacts, orders, stock, notes, things that are hard to do on paper, but easy for a machine to handle. It went straight to the core of the issue. How to best tell the computer to do useful work. Of course it failed in many respects, but the real tragedy is that they seemed to stop trying after that.
This is compounded by the trend toward instant gratification in pretty much everything.
- In your normal day-to-day work, you're likely to have productivity pressures that limit your ability to do freeform thinking and learning, so you're pressured to solve small problems in a local way.
- Search engines make it possible to find the answer to almost any question you might think of, and that makes it feel less necessary to do a deep dive into some topic.
- ...and trends in technology make it far easier for consumers (and yes, even producers are consumers) to treat every problem with a "single-serving solution"
However, the larger problem is that we naturally do not know what we do not yet know. A deep R into TFM is quite likely to teach something necessary that I didn't already know.
Think, for example, of a beginning programmer who quite successfully builds all the functional requirements of a simple web app, but fails to consider the non-functional requirements because he didn't know that he had to. SQL injection is something orthogonal to the application's actual purpose, so I won't actually think about it until either I'm stung by it, or someone else tells me about it. I wouldn't know to ask otherwise.
In fact, I think one of the skills you learn as you gain experience in software development is choosing your moments. When you can just google it, and when you need to get a cup of coffee and RTFM.
See also http://www.joelonsoftware.com/articles/LeakyAbstractions.htm... :
During my first Microsoft internship, I wrote string libraries to run on the Macintosh... Everything I did was right from K&R -- one thin book about the C programming language.
Today, to work on CityDesk, I need to know Visual Basic, COM, ATL, C++, InnoSetup, Internet Explorer internals, regular expressions, DOM, HTML, CSS, and XML. All high level tools compared to the old K&R stuff, but I still have to know the K&R stuff or I'm toast.
This is also two areas where the Macintosh failed (perhaps intentionally). Though Hypercard was extensible through XCMDs and XFCNs, It was a huge leap from HyperCard to the Macintosh Toolbox, not just in difficulty, but also because of the tools and documentation simply didn't exist on most people's Macintoshes, and was very expensive to buy.
It's interesting to think about what if things had happened differently. Perhaps we would be sitting here posting from Copland and programming in Dylan today. Or probably not since in that case they would be bankrupt by now. But that reminds me, I think I have a pirated Copland beta laying around somewhere that I never got around to try. I seem to remember you needed two PowerMacs connected by serial cable, with one running a debugger, for it to work.
1. http://www.computerhistory.org/collections/catalog/102713428 2. http://www.apple-history.com/lisa 3. http://www.apple-history.com/128k
Things looked much brighter with the Mac II. But even there you needed expensive 32MB or more RAM, a disk with VM, a large screen, an Ethernet card, a graphics card, for a useful setup. Plus a license of MCL. In sum that was cheaper than a Symbolics, though. Performance was okay for the time, but started to look better with 68040 machines - given that they had lots of memory.
The PPC 604 was appearing when Lisp Machines were already long dead. I don't think in real life single CPU 604s machines were that great.
What I meant when I brought up the PPC 604 is that by the mid-90s cost of hardware was no longer a big issue in providing users with powerful computing environments. But it's clear that power isn't really what sells. Not even to developers, if you look at some of the more brain-dead environments and languages out there.
People will RTFM if it isn't boring, dry, and useless.
There's a fine balance to be struck between nice-to-read prose and giving people exactly what they need, quickly enough for them to actually read your stuff. But the thing is, if your documentation is difficult to read and doesn't flow well, it might as well not have been written. Everybody will give up before they learn.
And vice-versa, if your documentation is TOO nice to read and does too much hand-holding. People will gloss it over and miss important details.
Teaching is hard. Much harder than people give it credit.
And because there are no unicorns who can both intimiately understand the system and be good at documenting it, you should do the next best thing - have a person with enough technical background to be able to talk to the experts, but is also good at writing about it write your docs.
This seems to be the approach taken by most self-published tech writers these days. They're good enough to understand the system, but also decent enough at writing about it.
Maybe it's an overly lazy desire, and nothing will replace the fact that you're willing to focus on reading what people wanted to express about a program. Also, embedded/repl would avoid outdated documentation drift.
This is clearly a joke. And a cruel one.
Laptops are just two steps away from overheating and falling apart no matter how much glue they put in these days.
And operating systems are laggy and messy. They have still 50% of laggines and 90% of messiness of what was the standard two decades ago.
Operating systems are stupid since many years, on every new Version i think "god, please change not too much", cause on every new Version things not getting better and not easier and not smoother.
Yes, they look nicer, they have more "blink" and more animations, but all of this not help me to work better or faster.
as if simply typing the name of or keywords for what you want to find into a search bar isn't fluid and inuitive?
Example i type "browser" -> nothing found. And i am absolutely sure i have installed chrome, seamonkey and ie. ;)
Except now I just realized that 20 years ago was Windows 95. Dang, I'm getting old. :(
Stop making me feel old. :)
I (like to) think the difference is that I have some idea how to reason about cars, because I am at least familiar with the basic laws of physics and get the idea of internal combustion. The "it should just work" crowd aren't just incompetent as creators, they're incompetent as users, because there's no basis for reasoning.
And for people who spend their whole working life riding around in cars (as so many do with computers) it's well worth the trouble and effort to get a driver's license and get that extra bit of autonomy. The same should be true of computing.
And that touches on another thing. Computers are deeply visual. Yes, it can output sound and such. But most of the interaction is done by text and images. This means that when it is just sitting there with the screen off, you don't know if it is idle or transferring your porn collection of the NSA headquarters.
From time to time i wonder what would come out of putting a sniffer on the network and have it play some tones based on the packets picked up and their metadata.
All too often i find myself likening computers to small children. When they are noisy you can relax, but when they become quiet you really need to worry. This in particular when exposed to Windows, and its habit of announcing new USB devices with plings and popups.
People also need to distinguish between "you have to tinker in order to use the thing" and "you can tinker if you need to". Old cars were more tinkerable and less reliable.
Reliability is a curve; a function of how much maintenance is spent on it.
No question at all that a modern car with zero maintenance will be more reliable than an old car was with zero maintenance. But with a surprisingly small amount of maintenance, an old can can be more reliable than a modern car with the same amount of maintenance. Sure, it'll take a while before one of them fails, but I can (and do) keep a thirty year old car running with maintenance that probably averages to about ten minutes a week. I suspect very strongly that if I spent ten minutes a week maintaining a modern car (which, from what I can tell, would be me looking at the lights on the dashboard to see if the car is asking for more water or oil), it would fail before the old car did.
I was one of those kids who had to program games at 7 on a Sol20 in 1977 and than de-bug since every basic was different. When I found out if I could learn Assembly I could play more game I learned that. The day I got the 300 baud modem was life changing and I had to pay for a second line due to everyone else in the house being mad they couldn't use the phone.
EDIT: And then we do 'job' stuff in that class. Including making resumes that include our ability to use basic microsoft/adobe programs. I could have learned to do that without a manual or internet before the class. I can learn way more with internet just messing around in photoshop/gimp every once in a while.
It's really not that hard to get kids into some form of coding today. I've run a Scratch[1] club for 8-10 year olds at my daughter's school and every single one of the kids there loved it. By the end of the first hour, they were all producing some form of animation that they could control and all were desperate to come back for the following week.
Compare that with the steep learning curve of BASIC on an 80s 8-bit machine. It would take days to get anything more exciting than "Hello World!" out of it. Most of the people I know who had Spectrums (I'm British) as kids never went near programming. Their entire use of the command line was LOAD "".
[1] https://scratch.mit.edu/ - just in case anyone's never seen it.
So thank you for teaching some people, because learning is fairly hard, though if you have a good teacher it doesn't seem like it would be as hard to me.
What is Spectrums though?
1) It was hard to distribute his creations
2) Lack of natural aptitude / ability
3) Too easy to consume without producing
We had a little more success with Construct 2. The main difference being that the games could be distributed to an iPad or any other HTML 5 web browser effortlessly. Maybe Scratch addressed that already in the 18 months since we've used it?
I obviously don't know your kid, but I doubt that aptitude/ability is going to be a blocker from getting simple Scratch programs running. I know several others who've run classes to a wide range of ages and abilities and not one of the kids has failed to get to grips with the basics.
I can accept that attitude/interest (wanting to consume rather than produce) is going to be an issue for some children, but that's always been the case. And no matter how easy or hard it is to make things, those children aren't going to want to program.
My point was less about Scratch specifically - there's a few similarish programs out there that can be used instead. It's more that the incentive to learn and availability of distractions hasn't really changed in the 30 years since I was a kid, and if anything the barriers to getting into some form of programming have dropped drastically since those days.
As your parent suggested, not everyone who had computers back than had or felt the need to program them.
That is precisely why I put #2 in my list.
I distinctly remember being baffled by how playing special "music" could turn into something on the screen and spent along time forcing a poor spectrum to listen to my "Rave 92" tape.
The program itself isn't built for that. And the economic interest in not building it for that is obvious - if you let users have access to the full power of the machine, even worse to share their modifications, what do they need you for any more? How are you going to convince people to buy version 15 when they've got version 14 set up the way they want it?
Your options have become increasingly strongly contrasted: Become a programmer or live in user-land. As if a programmer isn't just a more knowledgeable class of user and as if that's not a spectrum. It's nothing special about typing white text into a black screen. Even if we still lived in command line land, I don't think that we'd be better off. I don't feel like it has anything to do with how hard the computer is to use - at least not at a surface level. It seems to me more to do with how programmable your programs are and how easily you can start doing useful things with that power.
There is a currently a very low barrier of entry access point for programming on everyone's computers currently in the form of the web browser. You can view the source for any web page and change things around in the dev tools and console.
Too many people yearn for the good old days of low level access yet are quick to dismiss Javascript as "toy" language. In the old days BASIC was just a toy too. The "real" programmers wrote their code in assembly.
And so is buying cheap unhealthy food. Talking long distance. Hooking up. Being entertained (or at least, finding entertainment). etc etc...
My point being, humanities entire push to modernity is nothing but step after step of making things "too easy."
We are supposed to stop now?