Difference between revisions of "The problem with current day programming and its causes"

From apm
Jump to: navigation, search
(Related: added * New software crisis)
m (added Up: '''Software trouble pages''')
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
Current day (2021) programming <small>(aka telling computers what to do – everyone needs to do that these days)</small> has an accessibility problem. <br>
+
Up: '''[[Software trouble pages]]'''
The effect is that so called "end users" when they see obvious trivial problems that they would easily be able to fix <br>
+
 
in a few minutes when passing by these probems absolutely (very frustratingly) cannot fix these because: ... <br>
+
Current day (2021) programming <small>(aka telling computers what to do – pretty much everyone needs to do that these days)</small> has a severe and worsening accessibility problem. <br>
 +
A top level symptom of this accessibility problem is that most of us have become degraded to so called "end users". <br>
 +
And when we as "end users" encounter/pass-by obvious trivial problems that we would expect to be able to easily fix <br>
 +
(for ourselves and others) in a mere few minutes then to a good chance we absolutely can no longer do so. <br>
 +
A very frustrating and damaging experience that continues to grow worse. <br>
 +
In the following an analysis of underlying sub-problems and causes of the symptoms:
  
 
== Problems ==
 
== Problems ==
  
– There is a big (and growing) stack of tools to learn before even to begin (to tell computers what to do beyond what the developers designated to users). <br>
+
=== Job caused by flawed fundamentals: "full stack developer" ===
 +
 
 +
– There is a big (and growing) stack of tools that needs to be learned before we can even to begin <br>"to tell computers what to do" beyond what the developers designated to be possible for "end-users". <br>
 
'''It has gotten so bad that''' a job description emerged: "full stack developer".<br>
 
'''It has gotten so bad that''' a job description emerged: "full stack developer".<br>
 +
 +
=== Situation caused by flawed fundamentals: ridicule of proposals for fixing the fundamentals ===
  
 
– Code can't be accessed and fixed directly from within the space designated for the "users" (typically GUIs). <br>
 
– Code can't be accessed and fixed directly from within the space designated for the "users" (typically GUIs). <br>
Overall the "wall of inaccessibility" between designated "users space" and designated "developer space" seems to have been been steadily growing. <br>
+
Overall the "wall of inaccessibility" between designated "users space" and designated "developer space" seems to have been steadily growing. <br>
 
Only locally shrinking maybe a bit sometimes but never overall shrinking. <br>
 
Only locally shrinking maybe a bit sometimes but never overall shrinking. <br>
 
'''It has gotten so bad that''' even suggesting that something could almost totally remove that barrier can make one subject to ridicule. <br>
 
'''It has gotten so bad that''' even suggesting that something could almost totally remove that barrier can make one subject to ridicule. <br>
 
<small>Guess what's going to be suggested here ... </small>
 
<small>Guess what's going to be suggested here ... </small>
 +
 +
=== Process caused by flawed fundamentals: "deployment" ===
  
 
– Publishing something that is more than "locally running toy code" but <br>
 
– Publishing something that is more than "locally running toy code" but <br>
Line 19: Line 30:
 
'''It has gotten so bad that''' this bloated unnecessary process now has attained a name: "deployment". <br>
 
'''It has gotten so bad that''' this bloated unnecessary process now has attained a name: "deployment". <br>
 
And a whole terminology and an "industry" has evolved. <br>
 
And a whole terminology and an "industry" has evolved. <br>
 +
 +
=== Dilemma caused by flawed fundamentals ===
  
 
– The current tools for programming have ...  
 
– The current tools for programming have ...  
Line 27: Line 40:
  
 
The causes for these problems (on a very high abstraction-level) are likely twofold:
 
The causes for these problems (on a very high abstraction-level) are likely twofold:
* '''(A) the increasing centralization of the internet – an emerging governance problem''' – <small>(Philosphically: This may perhaps be an "eternal" problem of any intelligent social life that periodically waves up?? maybe ...)</small>
+
* '''(A) the increasing centralization of the internet – an emerging governance problem''' – <small>(Philosophically: This may perhaps be an "eternal" problem of any intelligent social life that periodically waves up?? maybe ...)</small>
 
* '''(B) a technical software crisis''' – (sheer technical difficulty and an economics caused focus on short term investment focusing on fixing symptoms rather than fixing causes)
 
* '''(B) a technical software crisis''' – (sheer technical difficulty and an economics caused focus on short term investment focusing on fixing symptoms rather than fixing causes)
  
The "[[annotated lambda diagram]]s" (ALDs) discussed here would be an attempt in tackling the latter point: (B). <br>
+
----
 +
 
 +
For what can be done regarding point (B) see:
 +
* ultra fine-grained [[content addressed]]ness
 +
* consistent [[progressive disclosure]]
 +
* [[Future of human computer interaction]] ([[Higher level computer interfaces for deveusers]])
 +
* [[Projectional editor]], [[Structural editor]]
 +
* Making programming a nicely guided puzzle game [[Typed holes]]
 +
* <small>[[Purely functional programming]], [[Visually augmented purely functional programming]]</small>
 +
 
 +
----
 +
 
 +
Perhaps especially noteworthy:
 +
* The Hazel project (Cryus Omar, David Moon, Andrew Blinn, et.al.)
 +
* The various explorations of Jonathan Edwards (especially newer work on versioning/diffing)
 +
 
 +
A lot of the work of [[Category:Conal_Elliott|Conal Elliott]] seems quite relevant.
 +
* High level: [[Tangible values (Conal Elliott)]]
 +
* Low level: [[Compiling to categories (Conal Elliott)]]
 +
* Low level: [[Denotative design (Conal Elliott)]] ... <br>making comprehensibility and reliability of software scaleable rather than exponentially dropping with composition.
 +
 
 +
----
 +
 +
The "[[annotated lambda diagram]]s" (ALDs) discussed here <br>
 +
would also be an attempt in tackling the latter point: (B). <br>
  
 
== Related ==
 
== Related ==
  
 
* [[Software]]
 
* [[Software]]
* [[New software crisis]]
+
* '''[[New software crisis]]'''
 
* [[Annotated lambda diagram]]
 
* [[Annotated lambda diagram]]
 
* [[Annotated lambda diagram mockups]]
 
* [[Annotated lambda diagram mockups]]
 +
 +
[[Category:Programming]]

Revision as of 13:17, 11 July 2023

Up: Software trouble pages

Current day (2021) programming (aka telling computers what to do – pretty much everyone needs to do that these days) has a severe and worsening accessibility problem.
A top level symptom of this accessibility problem is that most of us have become degraded to so called "end users".
And when we as "end users" encounter/pass-by obvious trivial problems that we would expect to be able to easily fix
(for ourselves and others) in a mere few minutes then to a good chance we absolutely can no longer do so.
A very frustrating and damaging experience that continues to grow worse.
In the following an analysis of underlying sub-problems and causes of the symptoms:

Problems

Job caused by flawed fundamentals: "full stack developer"

– There is a big (and growing) stack of tools that needs to be learned before we can even to begin
"to tell computers what to do" beyond what the developers designated to be possible for "end-users".
It has gotten so bad that a job description emerged: "full stack developer".

Situation caused by flawed fundamentals: ridicule of proposals for fixing the fundamentals

– Code can't be accessed and fixed directly from within the space designated for the "users" (typically GUIs).
Overall the "wall of inaccessibility" between designated "users space" and designated "developer space" seems to have been steadily growing.
Only locally shrinking maybe a bit sometimes but never overall shrinking.
It has gotten so bad that even suggesting that something could almost totally remove that barrier can make one subject to ridicule.
Guess what's going to be suggested here ...

Process caused by flawed fundamentals: "deployment"

– Publishing something that is more than "locally running toy code" but
a part of an interactive online program (even if it's a tiny trivial change like adding a button trivially combining some data)
has become increasingly difficult.
It has gotten so bad that this bloated unnecessary process now has attained a name: "deployment".
And a whole terminology and an "industry" has evolved.

Dilemma caused by flawed fundamentals

– The current tools for programming have ...

  • either a deterringly steep learning curve ...
  • or quickly run out of expressiveness.

Likely causes (high abstraction level)

The causes for these problems (on a very high abstraction-level) are likely twofold:

  • (A) the increasing centralization of the internet – an emerging governance problem(Philosophically: This may perhaps be an "eternal" problem of any intelligent social life that periodically waves up?? maybe ...)
  • (B) a technical software crisis – (sheer technical difficulty and an economics caused focus on short term investment focusing on fixing symptoms rather than fixing causes)

For what can be done regarding point (B) see:


Perhaps especially noteworthy:

  • The Hazel project (Cryus Omar, David Moon, Andrew Blinn, et.al.)
  • The various explorations of Jonathan Edwards (especially newer work on versioning/diffing)

A lot of the work of seems quite relevant.


The "annotated lambda diagrams" (ALDs) discussed here
would also be an attempt in tackling the latter point: (B).

Related