'The Problem With Programming and How To Fix It' (alarmingdevelopment.org)
Jonathan Edwards has been programming since 1969 (starting on a PDP-11/20). "Programming today," he writes, "is exactly what you'd expect to get by paying an isolated subculture of nerdy young men to entertain themselves for fifty years. You get a cross between Dungeons & Dragons and Rubik's Cube, elaborated a thousand-fold."
theodp summarizes the rest: To be a 'full stack' developer, Edwards laments, one must master the content of something like a hundred thousand pages of documentation. "Isn't the solution to design technology that doesn't require a PhD...?" he asks. "What of the #CSForAll movement? I have mixed feelings. The name itself betrays confusion -- what we really want is #ProgrammingForAll. Computer science is not a prerequisite for most programming, and may in fact be more of a barrier to many. The confusion of computer science with programming is actually part of the problem, which seems invisible to this movement."
It wasn't always this way, Edwards notes, citing spreadsheets, HyperCard, and the many incarnations of Basic as examples of how programming technology can be vastly easier and more accessible. "Unfortunately application programming got trampled in the internet gold rush," Edwards explains. "Suddenly all that mattered was building large-scale systems as fast as possible, and money was no object, so the focus shifted to 'rock star' programmers and the sophisticated high-powered tools they preferred. As a result the internet age has seen an exponential increase in the complexity of programming, as well as its exclusivity."
"It is long past time to return to designing tools not just for rock stars at Google but the vast majority of programmers and laypeople with simple small-scale problems," the essay concludes, arguing we need new institutions to fund changes in both the technology and culture of programming.
"We've done it before so we can do it again, even better this time."
theodp summarizes the rest: To be a 'full stack' developer, Edwards laments, one must master the content of something like a hundred thousand pages of documentation. "Isn't the solution to design technology that doesn't require a PhD...?" he asks. "What of the #CSForAll movement? I have mixed feelings. The name itself betrays confusion -- what we really want is #ProgrammingForAll. Computer science is not a prerequisite for most programming, and may in fact be more of a barrier to many. The confusion of computer science with programming is actually part of the problem, which seems invisible to this movement."
It wasn't always this way, Edwards notes, citing spreadsheets, HyperCard, and the many incarnations of Basic as examples of how programming technology can be vastly easier and more accessible. "Unfortunately application programming got trampled in the internet gold rush," Edwards explains. "Suddenly all that mattered was building large-scale systems as fast as possible, and money was no object, so the focus shifted to 'rock star' programmers and the sophisticated high-powered tools they preferred. As a result the internet age has seen an exponential increase in the complexity of programming, as well as its exclusivity."
"It is long past time to return to designing tools not just for rock stars at Google but the vast majority of programmers and laypeople with simple small-scale problems," the essay concludes, arguing we need new institutions to fund changes in both the technology and culture of programming.
"We've done it before so we can do it again, even better this time."
I see that many professionals might be able to use basic programming skills to be more efficient and productive. But most programming tasks require basic logic, math, reading comprehension and critical thinking skills. The very skills many entities in our education system are failing in their attempts to teach. Not to mention the drift away from the 3 R's and the moves to gender and social focus points of our educational curriculum
;)
I wonder what percentage of individuals have the core foundation to even absorb how to write code.
Just my 2 cents
Maybe I misread/misunderstood this article but I read this as, 'let's dumb down computer programming".
Yes! Good! We need to get over this god-complex if we're ever going to sort out our profession. Programming *needs* to be easier, you can't just continually hire super-intelligent people because there just aren't enough of them. And even when you do, they still produce poor bug-ridden code, because the task is just too hard.
The level of complexity in computing is all but impossible for any reasonable human to handle. A really big portion of my days is spent finding things in other people's code (ie mainstream libraries) that don't work as they should, and god knows what mistakes I am personally putting out into the world. If big players (eg this week I found horrible problems with Google & Dropbox code) can't provide consistently working libraries what hope do the rest of us have, with tight deadlines and limited intelligence.
Every other profession, medicine, law, accountancy, engineering, have to deal with the fact that not everyone is a genius, and have systems and checks in-place that means people don't have to be flawless to work in them. Until computing is the same, it will remain a wild-west hobby. Programmers need to get over their pride.
He seems a lot smarter than I am and so I do not want to dismiss what he is saying... but I cannot possibly see how programming is harder than it used to be.
It seems like he is looking at the languages and tool chains used in the enterprise, and complaining that they are not suitable to get Joe Sixpack programming, while ignoring all the incredibly easy ways for somebody to make something useful at home. And, I'm sorry to say it, but the most obvious counter-example to what he is saying is... Python.
The Daddy casts sleep on the Baby. The Baby resists!
Everyone must be a surgeon.
Not those rare few uppity elites who can afford the education.
It's discrimination I say!
We need to change how the human body operates to make it easier for more people to work on.
Like I said - god complex.
You are not a surgeon. Also, we need waaaaaay more programmers than surgeons.
You don't need to be super-intelligent to program effectively. You just need to be able to think logically and break down tasks. It doesn't need to be made easier, because if you can't do those two things you shouldn't be programming.
"'let's dumb down computer programming".
What's wrong with that? The trick would be HOW to dumb down computer programming without ending up with an intractable shambles like the last 50000 attempts to do so.
You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
Borland Delphi (and later, C++ Builder, maybe) were great examples of how components could be visualized, packaged, and used for development.
It's really a shame nobody has pushed this direction. It worked really, really well.
..don't panic
I think what you're talking about has already happened. The best example would likely be Ada SPARK, but that's in the very opposite direction of the "Java is too hard" mindset that TFA advocates.
This is my signature. There are many like it, but this one is mine.
There, fixed that for you.
I have to disagree. The necessary CRUD, GUI, and relational idioms to do the job of typical business applications are mostly the same as the 80's. The web and silly fads came in and mucked it up, turning bicycle science into rocket science by pounding a square peg into a round hole.
Nobody seems interested in exploring and developing new standards to make CRUD and productivity applications easier again. The arcane fidgety nature of the state of the art is too much job security: simplification may trigger an IT bust.
For example, the Oracle Forms developers at our shop can crank out applications at about 1/7 the pace of the "web" oriented developers. The result is not aesthetic, but they work and get the job done. (Oracle is a jerk in other ways, but Forms just works.)
But our shop has to migrate away from Oracle Forms because Oracle stopped making a Forms client and converted it to Java. Java doesn't get along with our security infrastructure. Flash and Java made the same mistake of making their client into do-all behemoth, which resulted in security holes. If they or the industry had focused on making just a "GUI browser" (hopefully with an open standard), we could toss HTML browsers for productivity applications. HTML browsers are better for e-brochures, and not eCRUD.
So, if you want to fix it, learn from past products that work, and produce a stateful "GUI Browser" standard. Let's go back to coordinate based clients instead of client-size auto-flow placement. The server side can resize for the client size as needed. That way we have one placement engine instead of the 50+ placement engines we have now (browser brands & versions). Client-side layout sucks big productivity donkey dicks. (This is not the same as proposing only WYSIWYG as some critics have claimed, because the server can still do auto-flow if desired.)
Put on the client just enough to get the client job done, shifting the rest to the server, but otherwise learn from the failure Java applets and Flash and don't make the client into a do-everything monstrosity. (Resisting Emacs jokes.)
Table-ized A.I.
You've got to factor in product and project managers too. As in "guys, we've got a big potential customer who suggested that sweaters might be toasted, so can you get this done by next week? I already told them we'll have a demo, so don't let me down." and "it would set us apart and be disruptive to the toaster industry if this could wash dishes too."
See subject: Delphi = awesome & can build STATICALLY compiled VCL single .exe programs. I used it for APK Hosts File Engine 9.0++ SR-1 32/64-bit for Windows https://www.google.com/search?... that even registered /.ers like & use (small sampling w/ dozens more like it in reviews by /. peers) https://linux.slashdot.org/com...
THEY DID PUSH IN THAT DIRECTION FOR LINUX!
* TRY FreePascal 3.04 + Lazarus 1.8.2 IDE for it (EXACT duplicate of Delphi @ syntactic level + IDE)!
I used it to PORT the program above to Linux APK Hosts File Engine 2.0++ 64-bit for Linux h t t p : / / a p k . i t - m a t e . c o . u k / A P K H o s t s F i l e E n g i n e F o r L i n u x . z i p
APK
P.S.=> Delphi BEAT C++ & VB in 4/6 tests in Visual Basic Programmer's Journal 1997 oct issue "Inside the VB5 Compiler" & tied 1 w/ C++ & lost only 1 (so did C++) to VB (ActiveX formload) ESPECIALLY in MATH & STRINGS by 2-4x FASTER... apk
On one hand, you're entirely correct.
On the other hand, why isn't there some Lego-like programming environment that wraps up complicated functionality in lick-and-stick modules, for those cases which are simple? Where you plop down modules, and drag outputs to inputs? So what if it only handled the majority of what noobs want to do, wouldn't that be enough to be useful?
There have been numerous programming environments which take all the programming out of programming, at least for simple tasks. A user could get a lot out of Hypercard without writing any code, even making use of binary plugin blobs in some cases. Unfortunately, I feel much of what killed Hypercard due to disuse by the masses was the everyone-must-pay mentality in Mac-land. Much of what got me to give up using Macs is the high percentage of simple tools whose Linux or even Windows analogue is free, but which cost money on Macintosh — and not a dollar or two, either, but often tens of dollars for really very primitive functionality. If you wanted to do e.g. some simple serial port call and response in a Hypercard stack, you had to pay for that functionality, probably because the development tools were not only nonfree but actually expensive. It's a bit more confusing today, when Xcode costs nothing.
Another example of programming taken out of programming is found in the various game creation kits, like SEUCK or any of the many text adventure builders — the latter more than the former, of course.
With the full understanding that doing anything the software wasn't designed to do is going to require coding or at least scripting, why isn't there a drag-and-drop programming environment worth using by now?
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"