Skip to content

Commit b7ac9d6

Browse files
committed
add post
1 parent b0403e4 commit b7ac9d6

File tree

6 files changed

+199
-3
lines changed

6 files changed

+199
-3
lines changed

pages/assets/learning-cycle.png

105 KB
Loading

pages/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ Contact:
2020
* langma@gmail.com
2121
* [GitHub](https://github.com/ml8)
2222
* [LinkedIn](https://tinyr.us/me)
23+
* [@ml8@hackyderm.io](https://hachyderm.io/@ml8)

pages/posts/hi-im-transgender.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ slug: hi-im-trans
44
type: post
55
date: 2022-03-31
66
draft: false
7-
tags: ['post', 'trans']
7+
tags: ['transgender', 'nontechnical']
88
---
99

1010
___Originally posted 3/31/2022 [on

pages/posts/resting-with-code.md

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
---
2+
title: "Resting in your work (or: doing isn't enough)"
3+
slug: hobby-projects
4+
type: post
5+
date: 2024-12-31
6+
draft: false
7+
tags: ['programming', 'growth mindset', 'hobby projects']
8+
---
9+
10+
> Embrace a creative practice by doing low-stakes, reflective personal projects.
11+
__Create__ and allow your creations to be imperfect sketches. Take advantage of
12+
the freedom from pressure and give yourself space to rest, reflect, and
13+
__learn__. Mastery requires it.
14+
15+
## Keeping a software sketchbook
16+
17+
A few weeks ago--with some free time during the Thanksgiving holiday--I sat down
18+
to write a static site generator.
19+
20+
The world didn't need another one.
21+
22+
Especially the bare-bones and completely undistinguished [one that I ended up
23+
writing](https://github.com/ml8/sg).
24+
25+
The project doesn't really contribute anything new to the world; in fact,
26+
there's not much that is novel in __most__ of my hobby projects. And that's on
27+
purpose.
28+
29+
They are __sketches__. I'm not particularly proud of or attached to them, and
30+
rarely do I do any hobby work that has any complexity or is algorithmically
31+
interesting.
32+
33+
So, why?
34+
35+
There's a bunch of typical reasons that are given for this sort of hobby work:
36+
maintaining a growth mindset, staying malleable in tools and technologies,
37+
"staying up-to-date," etc.
38+
39+
But the way that I think of my hobby work is that __it is my creative
40+
practice__. It is a way for me to __rest in my art__ as an element of a path to
41+
mastery.
42+
43+
One could argue that my time would be better spent contributing to open source
44+
projects. Things that I use, or things that others may find useful[^1].
45+
46+
However, I think there's a lot of value in these types of small and unpolished
47+
toy projects, and that their value is derived precisely from the fact that they
48+
are small and there is no expectation that they are polished, or even meaningful.
49+
50+
As professional software engineers, one of the things that we must recognize is
51+
that our brand of engineering differs from other disciplines. Though we share a
52+
disciplined and scientific approach to developing technological solutions,
53+
software engineering has a high degree of creativity, and the lack of physical
54+
constraints leads to a malleability and practically-infinite solution space.
55+
56+
Our best-practices and principles are abstract---DRY, Law of Demeter, SOLID,
57+
design patterns, etc.---or loose suggestions. Software engineering is a
58+
discipline of trade-offs, and our touchstone texts on software design provide
59+
situational advice, at best.
60+
61+
In other words: we don't have handbooks; we have style guides and requirements.
62+
63+
So, as a professional in a creative discipline, I think having a creative
64+
practice is an important part of my growth. Just as artists have sketchbooks, so
65+
do I---my hobby projects.
66+
67+
## Resting in our art
68+
69+
These software engineering sketchbooks are more than rote practice of technique.
70+
By creating them, we create spaces for reflective practice.
71+
72+
Solving new---and even toy---problems forces us to practice our creativity,
73+
adaptive thinking, and problem solving. And avoid stagnating. We talk all the
74+
time about the importance of and the __why__ for having a "growth mindset."
75+
Exploring new spaces through low-or-no-stakes projects is a perfect example of
76+
__how__.
77+
78+
But these sketchbooks are also our personal galleries. Places to spend time
79+
idling and processing---__resting__. When we leaf through our projects, or sit
80+
deep within one, we give ourselves time and space to reflect on our work.
81+
82+
This sort of pressure, judgement, and risk-free reflection and consideration is
83+
often not possible in our professional work, where, at the end of the day, we
84+
must deliver some product to stakeholders. In our personal work, there is no
85+
stakeholder, no urgency, and no risk.
86+
87+
We can ask ourselves what worked, or what didn't. We can start a project anew
88+
with a different approach, informed by our reflection. This allows us _explore,
89+
discover, and evaluate trade-offs_ in algorithms or design---real confidence for
90+
how we might improve our work.
91+
92+
When we experiment with new patterns, play with new tools, or work in areas of
93+
the stack that we don't typically work in, we __develop theory__. Traversing
94+
and building abstractions allows us to generate, discover, and evaluate theories
95+
about principles and ergonomics.
96+
97+
What made this code easier to write? To understand? More performant? With looser
98+
synchrony? And how may those ideas be translated to new domains or problems?
99+
100+
__This sort of theory crafting and application is not often possible or emerges
101+
more slowly when our tasks are scoped to a particular product or feature.__
102+
103+
## Supported by educational psychology
104+
105+
Constructing, applying, and evaluating theory is required for mastery because it
106+
is _how we learn and generate knowledge._
107+
108+
It is probably an uncontroversial statement to say that we __learn by doing__.
109+
But what does this mean?
110+
111+
### Kolb's learning cycle
112+
113+
The idea of _learning cycles_ in educational psychology has existed for almost a
114+
century and many different cyclical models for learning have been proposed. The
115+
one that I---and I presume many educators (or former educators 😅)---are
116+
familiar with is one due to
117+
[Kolb](https://en.wikipedia.org/wiki/Experiential_learning).
118+
119+
![Kolb's Learning Cycle](/assets/learning-cycle.png)
120+
121+
In Kolb's model for experiential learning, knowledge is derived from reflection
122+
about experiences; the learning cycle describes ___how___. It is comprised of
123+
four macro phases:
124+
125+
* __Concrete experience:__ Something happens. We encounter something new, make
126+
an observation about the world, gather data from experimentation, etc.
127+
* __Reflective observation:__ We reflect upon this experience. We consider
128+
whether the experience was something we expected or not. We think about how it
129+
aligns with what we already know about the world. What knowledge do we have
130+
that support the experience? Or is it contrary to what we know?
131+
* __Abstract conceptualization:__ We try to incorporate this experience into our
132+
existing knowledge. We develop or augment theories and processes. We create
133+
__new hypotheses and beliefs__ about the world.
134+
* __Active experimentation:__ We test our hypotheses. How can we confirm or
135+
refine our new understanding of the world? Can we add [justification to our
136+
beliefs](https://plato.stanford.edu/entries/knowledge-analysis/#KnowJustTrueBeli)?
137+
What new experiences might help us understand more?
138+
139+
The model is cyclical in nature: as we encounter more experiences in the world,
140+
we iterate. The importance of the cyclical nature is not just its repetition,
141+
though, it is the relationship and dependency between each of these activities.
142+
143+
## Just "doing" isn't enough
144+
145+
What the cycle means to us is that knowledge is derived from traversing the
146+
_entire_ cycle, not just elements in isolation.
147+
148+
__Doing, alone, doesn't generate knowledge, it is the reflection and subsequent
149+
rethinking of what we might do---and then __testing this__---that does.__
150+
151+
So, is a toy project like a static site generator really meaningful to my growth
152+
as an engineer? I have certainly worked on infinitely more complex problems than
153+
this, and written infinitely better code to do so.
154+
155+
But doing this one-off project, allowing myself the space to write code without
156+
any sort of expectations, I allow myself the time and space to reflect on the
157+
process. And to think about what I would do differently next time.
158+
159+
And by keeping a sketchbook and continuing to do these sorts of toy projects, I
160+
ensure that __there always is a next time__ and that it is __a next time free
161+
from expectations__. A next time that will also allow me to rest and reflect on
162+
my (shitty 😉) work.
163+
164+
165+
166+
[^1]: Or that maybe I should be doing more complex projects, or ones with more
167+
interesting algorithms, things that might build a more interesting portfolio
168+
than a [skate dryer](https://github.com/ml8/attiny85-skate-dryer). That's
169+
orthogonal to this post. 😅

pages/static/style.css

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ body {
99
background-color: var(--bg-color);
1010
color: var(--text-color);
1111
max-width: 800px;
12+
width: 80%;
1213
margin: auto;
1314
padding: .2em;
1415
line-height: 1.5em;
@@ -49,3 +50,23 @@ pre {
4950

5051
@media only screen and (min-width : 480px) {
5152
}
53+
54+
img {
55+
display: block;
56+
width: auto;
57+
height: auto;
58+
max-width: 100%;
59+
max-height: 90%;
60+
margin: 20px auto;
61+
}
62+
63+
blockquote {
64+
border-left: 10px solid var(--border-color);
65+
margin: 10px;
66+
padding: 10px;
67+
font-style: italic;
68+
}
69+
70+
blockquote p {
71+
display: inline;
72+
}

templates/post.html

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
{{template "header" .}}
22

33
<h1>{{ .Page.Title }}</h1>
4-
<div id="tags">
4+
<!-- <div id="tags">
55
{{template "tags" .}}
6-
</div>
6+
</div> -->
77
<div id="content">
88
{{ .Page.Content }}
99
</div>
1010

11+
<hr>
12+
13+
Want to chat about this? Engage with me on Mastodon:
14+
<a href="https://hachyderm.io/@ml8">@ml8@hackyderm.io</a>.
15+
1116
{{template "posts" .}}
1217
{{template "footer" .}}

0 commit comments

Comments
 (0)