
Good programmers copy; great programmers appropriate - alidlo
https://alidlo.com/appropriating
======
johnsonjo
That was an interesting read I agree and find that code names that rely on a
word that means a specific thing in a given field is really helpful as well.
For example with Neural Networks we extend the analogy that originated from a
graph/network into an image of the brain and add a new term and properties, so
when we add the term neuron we can give it the property that behaves like it
does from the field it originated from such as being able to fire. This
creates a wonderful mental model that not only explains the purpose of the
algorithm to "learn" much like brains do, but also serves as a way for people
to remember, much like a pneumonic device, all the different pieces that go
along with the algorithm.

I also find trying to draw analogies from different fields can lead to new
discoveries for yourself and others. In the case of the neural network maybe
the person who invented it said, what would it look like if we were to model
the human brain in a computer? Obviously the intent there would be for your
model to function as a human brain. You could always do it the other way
around and start with an existing model and say what properties could I add or
remove to this system to make it perform a different and interesting function?
If I add this new property does it make it a different enough function that I
have to change the underlying analogy? I think if you ask the right questions
and seek their answers then this is one way in which you can evolve ideas.
Also this way of stating different disparate ideas and evolving them is a good
teaching method. For example I was once explained that a binary search tree
with all items inserted in order was just a fancily decorated linked list, and
though kind of silly it gave me an aha moment and connected the two more
deeply in my mind.

~~~
alidlo
yea definitely, a name sets boundaries of intention; and if you appropriate it
from other domains helps to boostrap understanding.

>If I add this new property does it make it a different enough function that I
have to change the underlying analogy?

actually ran into this situation the other day, but for the name of a project
I'm working on. the intention of my idea changed, so I felt like I had to
change the name, too.

a name, in that way, has a two-fold effect, it helps shape understanding but
it also guides what we feel we can/can't do with something

------
johnsonjo
> It’s said that there are only two hard things in computer science: cache
> invalidation and naming things.

I've always heard the joke as "there are only two hard things in computer
science: cache invalidation, naming things, and off by one errors."

EDIT: I didn't read all the way to the end of the article before posting this,
so of course it has the original joke at the bottom haha.

"There are two hard problems in computer science: cache invalidation, naming
things, and off-by-1 errors." \- Leon Bambrick

~~~
alidlo
I include a quote at the end of most articles, and I actually included that
one at the end of this one, too.

here's the tweet where it came from:
[https://twitter.com/secretGeek/status/7269997868?ref_src=tws...](https://twitter.com/secretGeek/status/7269997868?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E7269997868&ref_url=https%3A%2F%2Fmartinfowler.com%2Fbliki%2FTwoHardThings.html)

~~~
johnsonjo
Yeah sorry I jumped the gun and posted before I read it all. Haha, I guess
that's one way for me to look naive and foolish :)

~~~
alidlo
not at all, just an off-by one error (;

