A developer always seeks greater understanding of software engineering and design. Sometimes luck intervenes and a mentor helps to advance one's abilities. However, there are only so many of these rare encounters, and thus, not everyone is afforded such opportunities.
This book attempts to remove luck as a limiting factor for one's professional growth in Smalltalk by disseminating material learned over several years of mentoring. lulu
VALLOUD, Andrés, 2011. A Mentoring Course on Smalltalk. hn
> Where is the book that teaches you how to come up with a strategy to tackle previously unseen problems with elegance?
This book describes a set of tendencies that work together to create a positive approach to successful programming.
The connection between computer programming and mathematics, particularly Algebra, is often downplayed. Yet, one should never underestimate it because missing how they complement each other takes the fun away from both.
> “In general, to study means to memorize things in order to apply them later on an as-is basis. For example, with a good memory, one could be a good doctor or a good lawyer, but not necessarily a good mathematician. Memory does not matter. What works is being able to act, to do, to think. Mathematics require a creative, curious, observing, yearning attitude. This attitude is connected with the ability to do for oneself. It is useless to know something if one does not know how to use it.” —Enzo Gentile
As with mathematics, it is impossible to master a computer programming skill without applying it. Therefore, this book contains exercises for the reader to get more familiar with the content being presented.
# Distinctions (The Very Act of Naming)
Take a moment and look around yourself. You can easily recognize familiar objects around you. Have you ever considered the difference between a colorful blob as recorded by your retinas and *seeing things*?
> Sensation: you notice the colorful blob. Perception: you recognize a car. Cognition: it is your car and somebody is driving off with it.
I often think about it. Sometimes, by accident, a snapshot of the colorful blob is recorded on my mind, without any of the boundaries that let me distinguish between different things. It is as if I were seeing a piece of cloth on which several cups of paints of different colors had been almost carelessly emptied. It always seems to be out of focus. Then, just as I am trying to get a better glimpse of it, in a split second the illusion disappears and suddenly I am seeing things again.
> Without exception, living beings have a boundary which distinguishes them from their environment.
[…] *distinctions* are characterized by having a limiting boundary. They represent the act of reifying the existence of, or maybe thinking about, an object. More precisely, a distinction is the consequence of separating something from its environment.
The distinction’s boundary has the quality of being unambiguous. It sorts all locations in the universe into two sets: the inside, and the outside.
Generally speaking, you can think of a distinction as a circle drawn on a piece of paper. As you can see, the circumference unambiguously sorts all locations of the plane into two regions: the inside of the circumference, and the plane with the circle carved off from it. Thus, the circle itself and the rest are now distinct places separated by the circumference.
In three dimensions, we typically think of the book, the chair, the coffee cup, and many other things. When we listen to music, properly tempered tones are associated to a well defined range of frequencies. When we think of time using a wrist watch, we easily draw distinctions in terms of before and after. In general, we construct our experience of the world in terms of distinctions. As far as we are concerned, all the objects we distinguish have precisely defined boundaries.
[…]