Skip to content

Commit 9d19d8b

Browse files
author
Steve Krouse
committed
## Good meetings and reading
### Questioning the idea of crusade I've been doing a lot of questioning these days. Today I did my questioning with Omar Rizwan and my cofounder Eli. Maybe Bret's importing of the idea of "cause" from social activism into engineering isn't such a great idea? Maybe it's more fun and useful to solve problems for real people on their own terms - without having a bait-and-switch reason why. ### Finishing Learnable Programming Technically not 100% finished, given that I need to read all references, and I'm [not entirely done](/notes/no-silver-bullet) with No Silver Bullet.
1 parent ced126d commit 9d19d8b

File tree

3 files changed

+112
-2
lines changed

3 files changed

+112
-2
lines changed

_data/git-log.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

notes/bret-victor/learnable-programming.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,44 @@ This reminds me of my idea to build a more human-readable regex. I continue refl
340340

341341
## Okay then
342342

343-
...
343+
> The design principles presented in this essay can be used as a checklist to evaluate a programming system for learning.
344+
345+
I am the only person I am aware of to [take this seriously](https://medium.com/@stevekrouse/woof-d9adf2110fc6).
346+
347+
To evaluate this checklist, as a checklist, I'd have to say that it's more provacative than it is helpful.
348+
349+
### These are not training wheels
350+
351+
> A frequent question about the sort of techniques presented here is, "How does this scale to real-world programming?"
352+
353+
Yep, I get this question a lot.
354+
355+
> This is a reasonable question, but it's somewhat like asking how the internal combustion engine will benefit horses. The question assumes the wrong kind of change.
356+
357+
I'm not sure I buy this argument anymore. It's like asking, how the ICE will *interact* with horses, not benefit them. That would be akin to asking, how do these changes benefit programmers, which is not what these people are asking.
358+
359+
> Here is a more useful attitude: Programming has to work like this... Given these requirements, how do we redesign programming?
360+
361+
This is an emperical claim about the usefulness of a given attitude towards solving a problem. I am doubtful that it this is true.
362+
363+
#### No Silver Bullet
364+
365+
Hard to believe I've never read this before! Notes continued [here](/notes/no-silver-bullet).
366+
367+
## Footnotes
368+
369+
My acquaintance Christina Cacioppo (which makes sense) and Stripe's Patrick Collison (which is more confusing) gave feedback on this essay.
370+
371+
And *another* imporing to read Mindstorms! I didn't realize he says it *4* times!
372+
373+
## Reflections...
374+
375+
Well it'd take so much time to reflect on my reflections on this essay that I don't even want to go there.
376+
377+
But I will say that I got a lot out of this. It's difficult to imagine a world where I haven't read Will Wright, Fred Brooks, and the other tangents I went down here. I have a much deeper sense of Bret's world now that I've gotten a sense of his influences. I am excited to dig into Tufte, possibly tomorrow morning!
378+
379+
This is less related to this particular essay, but... I'm also beginning to detect a communication style that Bret (and others in social activism) use that is compelling (because it plays off of our favorite emotion: outrage), but not helpful for solving problems. It makes me wonder where the "get up and go" to persue a social cause comes from, if not from outrage (or the desire to be right, or to achieve high status). That is, I am theorizing that people with social causes are *less*, not more, concerned with the happiness of other people, despite them purporting to work on their behalf. If they were truly interested in the needs of other people, why not help people in the terms which they want to be helped?
380+
344381

345382
<script>
346383

notes/no-silver-bullet.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
title: No Silver Bullet
3+
---
4+
5+
# [No Silver Bullet](http://www.cs.nott.ac.uk/~pszcah/G51ISS/Documents/NoSilverBullet.html)
6+
7+
Hard to believe I've never read this before!
8+
9+
> Skepticism is not pessimism, however. Although we see no startling breakthroughs--and indeed, I believe such to be inconsistent with the nature of software--many encouraging innovations are under way. A disciplined, consistent effort to develop, propagate, and exploit these innovations should indeed yield an order-of-magnitude improvement. There is no royal road, but there is a road.
10+
>
11+
> The first step toward the management of disease was replacement of demon theories and humours theories by the germ theory. That very step, the beginning of hope, in itself dashed all hopes of magical solutions. It told workers that progress would be made stepwise, at great effort, and that a persistent, unremitting care would have to be paid to a discipline of cleanliness. So it is with software engineering today.
12+
13+
Wow, this is a really powerful metaphor for me. It makes me think of Bret's "Future of Programming" DBX talk where he makes fun of how little progress we've made since the 1950s. But what if that's because back then there was so much more progress to be made? What if we've reached a plateu for *essential* reasons? What if the things we are trying to improve about software are difficult and take time, and would be better tackled slowly, and in the context of solving real world problems: that's where React and Cycle came from.
14+
15+
## Does It Have to Be Hard?--Essential Difficulties
16+
17+
### Complexity
18+
19+
He says programming has large number of states, side-effects, duplication, non-composibility. Seems like functional programming solves many of these problems.
20+
21+
### Conformity
22+
23+
I'm not sure if he's talking about conforming to other software or to people's requirements here. If software, then he's talking about composibility/modularity/abstraction again, FP topics. If people, then that's essential complexity and not a problem in my book.
24+
25+
### Changeability
26+
27+
Software changes much more than most products. Huh this is so obvious but I never thought about it. Along with the complexity section, he makes strong arguments for why software development is *better* than other engineering displines. It's just that we hold it to a higher standard.
28+
29+
### Invisibility
30+
31+
> Software is invisible and unvisualizable.
32+
33+
Haha - this is directly attacked in Learnable Programming.
34+
35+
## Past Breakthroughs Solved Accidental Difficulties
36+
37+
### Unified programming environments
38+
39+
Yeah, Unix really did get composibility right. It's like Haskell without the types.
40+
41+
And that's what stinks about Unix: it's all one datatype: text. Unix with good types, a Haskell based OS, that would be cool.
42+
43+
## Hopes for the Silver
44+
45+
Lol, Ada.
46+
47+
## Reflections
48+
49+
His main argument is that in order to argue for a silver bullet, one must argue that 9/10 of the time programmers spend is on accidental complexity.
50+
51+
> An order-of-magnitude gain can be made by object-oriented programming only if the unnecessary type-specification underbrush still in our programming language is itself nine-tenths of the work involved in designing a program product. I doubt it.
52+
53+
This is compelling. But a false way to analyze this. It focuses your attention on the *activities* of programmers, instead of on their *outputs*. If, for example, there was a one-button way to take an application from someone's brain and encode it to a binary program, that would be a many-order-of-magnitude shift in productivity.
54+
55+
Or another less crazy example is that building a in-browser text-editor is accidental complexity, only in the context of being able to use CodeMirror as a drop in solution.
56+
57+
In other words, essential vs accidental complexity is *context-dependent* in that it depends upon what you have to build upon.
58+
59+
60+
61+
62+
<script>
63+
64+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
65+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
66+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
67+
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
68+
69+
ga('create', 'UA-103157758-1', 'auto');
70+
ga('send', 'pageview');
71+
72+
</script>
73+
<script repoPath="stevekrouse/futureofcoding.org" type="text/javascript" src="/unbreakable-links/index.js"></script>

0 commit comments

Comments
 (0)