A Mentoring Course on Smalltalk

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.

* **Scope & structure.** The book has 6 dense chapters plus appendices and exercises. Topics move from naming/intent and “Laws of Form,” through boolean composition patterns, to performance-minded design and SUnit-driven validation.

* **Ch. 1 — It’s All in a Name.** How distinctions, labels, and intentions shape design; push for intention-revealing names, tiny methods, eliminating run-time conditionals with polymorphism, and the 7±2 context-size rule.

* **Ch. 2 — Complex conditions.** A composable way to express complex boolean logic (e.g., `[cond1], [cond2] ifAllTrue: […] ifAnyTrue: […] otherwise: […]`) plus extensions like `andAllOf:/andAnyOf:` and “defined/undefined” variants to avoid noisy `isNil` checks. Includes a thorough SUnit strategy. * **Ch. 3 — `CharacterArray>>match:`.** Reframes it as `matches:`; tokenizes patterns into star and match tokens and uses object collaboration (rather than “command” code) to get both clarity and speed; backed by behavior-focused tests. * **Ch. 4 — Validation revisited.** Repurposes SUnit to express validation rules (headless/headful), failure reporting, and suites for pervasive, low-friction validation. * **Ch. 5 — An efficient reference finder.** Models traversal over the Smalltalk “space” (intentions, contexts, breadth/depth strategies) to get efficient reference discovery with clean abstractions. * **Ch. 6 — A pattern of perception.** A perception/decision pipeline (from raw stimuli to chosen action) realized in Smalltalk with clear roles and relationships. * **Appendices.** Design notes, teaching guidance, and full answers to exercises.