Why Johnny can't program (2002)(bricklin.com) |
Why Johnny can't program (2002)(bricklin.com) |
Now think about something like HyperCard. That's an IDE. It's eminently usable and learnable (even friendly), and yet still does all the things an IDE does.
"IDE" doesn't have to be Visual Studio. There have been friendly IDEs in the past, and there's no reason they couldn't be built today except nobody's doing it. There's actually a nasty trend in software development right now that can be summarized as "they're programmers; they don't need usability or discoverability". Look at Git for an example. Ugh. This trend can not die quickly enough for me.
Every hidden thing is a thing that, when it goes wrong, I can't fix. Something "goes wrong" when it's either not working as designed, or it's broken as designed and needs to be reconfigured or otherwise changed: The IDE handles the wrong language, for example, and needs to use a different compiler and have different highlighting and formatting rules.
IDEs that only handle one language are beneath contempt.
The 4GL's like WINDEV made this more the case. We saw it on the command line side with COBOL. That and what happened with 4GL's in general should be a lesson that whatever we build for new users better (a) be consistent with more powerful stuff, (b) easily integrate third-party code, (c) be easy to port, and (d) do good practices by design in case we're stuck with it for 50 years. :O
I liked the debugging features of IDEs when I had to maintain a gigantic PHP codebase. The hours I stepped through code after one click :D
But after I started with JavaScript, which brought graphical debuggers inside the runtime (Browser) I didn't need this feature anymore...
Also IDE get features slower, Atom and Sublime often have more up to date plugins, which allows the use of more alternative languages like LiveScript.
The 'complexity of IDE' is overrated. Once you've memorized the hot keys, it makes a world of difference, running grep to find a piece of code you don't remember hidden under layers of inheritence. You are setting up for failure if you act like a luddite.
Professional programming like professional dancing is simply taking that same idea several steps further.
On a side-note, the questions the author asked were partly solved with efforts like Scratch. That project made a form of programming as easy as playing with Legos. What kids did from there was amazing. Might be lessons to apply in the adult tools.
Makes me think there's a very grey area between declarative programming languages and just plain data. If writing HTML is considered programming, does that make a draftsman drawing up building plans a programmer?
Text based tools are easier to keep modular and advance the process. Without someone doing it, the visual environments seem to stagnate (anecdotally).
An example..in android programming I spend some time marking up my classes with annotations telling the compiler which way I mean some java method or statement to be treated by the compiler which improves the management of the software dev process by reducing the error count down significantly
Most of all in spreadsheets, which the author invented!
I like Jerry Weinberg's phrase for this: oblivious programming.
"[...] this is not to say that many people can't get immersed in systems that require such understanding. They do in many parts of their lives. For example, lawyers and tax accountants routinely work with such complexity in their contracts and planning. Doctors work with an untold number of variables. Someone planning a big party has to work out the food, matching paper goods, favors, invitation list, entertainment, etc. Yet, all of these people rarely program computers in addition. It's just that people who aren't professional or hobbyist programmers usually don't want to get so immersed in something that is infrequently done and not part of the rest of their lives. The question really isn't "Why Johnny can't program" but rather "Why Johnny won't or doesn't choose to program"."
There are exceptions like people in India that get a free college education and take up programming to get a good paying job in the West somewhere.
Whiteboards are often a better solution than computer systems when it comes to patent care, because they simply have fewer ways to fail.
So? Many people solve specific crosswords, but that doesn't mean they can write a generic crossword-solver. The underlying skills are very different.
Smile when you say that. ;)
"Power user", to me, means someone who knows a lot of trivia about specific software but no underlying theory; none of their knowledge transfers to any other system, so their domain knowledge is constantly being obsoleted. Having some power user traits is inevitable and desirable, but being just a power user is a stage you should strive to outgrow.
I admit that that's just a knee-jerk reaction based on my idiosyncratic definitions.
This is true IMO. However you don't need to understand what the IDE is doing to use it now do you? A new user needs to learn nothing more than how to use the project creation wizard, and hit the play/stop button button.
As someone who teaches high school children how to program I assure you from experience and an IDE is much, much simpler than diving into the terminal.
This example requires the user to be able to do the following that an IDE would not:
- copy paste a file path to the terminal
- cd [pasted filepath]
- make [file name]
- ./[filename]
http://c.learncodethehardway.org/book/ex1.html
Versus throwing them into a black box where they are overwhelmed with buttons and gizmos and are encouraged to give up on the idea that they will ever know what's going on. Do you honestly think it's not worth the time to teach students how to use the terminal?
Oh, you're on Windows (like 90+% of normal computer users), well there's this thing called Mingw, or you can use Cygwin, which you use in this thing called a command-prompt, which you've probably never used before. Oh, and make sure you have your PATH environmental variables setup correctly. What's an environmental variable?
It's all turtles. Much easier to open Visual Studio, add a project, type out a main method, and hit compile & run. It's a shame QBasic isn't around by default anymore, limited as it was. Which, come to think of it, was a stripped-down, basic IDE.
His view, if a wedding planner (someone that did this regularly) was a programmer they would use it to solve problem X. My view Problem X is generally not a programming problem. In comparison problem Y ex:(programming a DVR) is a programming problem and millions of people used programming to solve it.
Yet, I don't see any way a weadding planner can save time and really automate things at a high level. Use an online calendar, manage invitations through an electronic address book etc sure. Get a computer to do seating arrangements, yea not worth the effort.
http://www.toptableplanner.com/blog/wp-content/uploads/2010/...