<div dir="ltr"><div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">For instance, let’s say I’m planning a “Book” application. My initial design might involve objects like Book, Page, Paragraph, and Image—a kind of hierarchy. But then I get lost when it comes to assigning tasks to specific objects.<br></blockquote><div><br></div><div>You don't seem particularly indecent to me; most people would get lost when approaching a problem so abstractly. A book application for whom? A reader? An author? A typesetter? A publisher? A bookstore? Your proposed hierarchy seems to suggest that it is a typesetting system in the same domain as TeX. Even though Cuis' Morphic already solved <i>some</i> of the hardest low-level problems, the remaining tasks for an implementer aren't easy.<br></div><div><br></div><div>I think I am less experienced than you. What I often find about more experienced programmers is that they are better at recognizing problems, justifying decisions, and explaining them to others. So, more than a particular book, what I believe helped me the most (and most quickly) was attending the courses taught by Máximo Prieto and Hernán Wilkinson. TDD helps <i>a lot </i>too; it doesn't make my designs necessarily better but eases my anxiety when confronted with options.<br><br>The object model suggests idiosyncratic solutions to problems that in other models are solved differently, or in some cases ignored because they cannot even allow to conceive the problem. I like the books mentioned by Ken (Wirfs-Brock, Valloud) and West's Object Thinking. I also encourage you to take a look at the <a href="https://www.isw2.com.ar/bibliografia-1/">bibliography page</a> on the website for the course Ingeniería de Software 1, FCEyN, UBA.<br><br></div><div>HTH.<br><br>-- <br></div><div>Eze<br></div><div><br><br></div></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 7 Jul 2024 at 13:52, Ignacio Sniechowski via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-family:monospace;font-size:large">Hi Cuisers,<br><br>Hope you’re all doing well.<br><br>I’ve been using Cuis for several years now, and I absolutely love it. To me, it’s the perfect embodiment of how a system should be. The first time I delved into “Design Principles behind Smalltalk” by D. Ingalls, it was a memorable experience. In that article, I discovered an impressive description and roadmap for building systems—especially the concept of Mastery. I find Cuis aligned perfectly with that.</div><div style="font-family:monospace;font-size:large">However, I find the other incarnations of Smalltalk (such as Squeak and Pharo) a bit too complex for my understanding. There are just too many classes, frameworks, and overlapping technologies.<br></div><div style="font-family:monospace;font-size:large"> </div><div style="font-family:monospace;font-size:large">Especially the Mastery principle. I find the other incarnations of Smalltalk (Squeak & Pharo) too complex for me to understand. Too many Classes, too many frameworks, overlapping technologies...</div><div style="font-family:monospace;font-size:large"><br></div><div style="font-family:monospace;font-size:large">As time went by, I realized that I’m still far from being a decent Smalltalker. I suspect the issue lies in how I approach problem design. Choosing the right objects is challenging. For instance, let’s say I’m planning a “Book” application. My initial design might involve objects like Book, Page, Paragraph, and Image—a kind of hierarchy. But then I get lost when it comes to assigning tasks to specific objects.<br></div><div style="font-family:monospace;font-size:large"><br></div><div style="font-family:monospace;font-size:large">While I’m not a professional developer, I heavily rely on programming. Over the past few years, my work in the finance field has led me to use Python extensively (thanks to libraries like pandas, matplotlib, numpy, and yfinance). Python allows me to write rapid code that gets the job done, but it’s not a language I particularly enjoy working with.</div><div style="font-family:monospace;font-size:large"><br></div><div style="font-family:monospace;font-size:large">Now, let’s circle back to Smalltalk. I’ve hit a wall. I’ve come to the conclusion that it’s my mental framework that needs addressing. Smalltalk isn’t just a language; or an environment and a collection of classes. To truly grasp it, you need to immerse yourself in its philosophy and shift how you think.</div><div style="font-family:monospace;font-size:large"><br></div><div style="font-family:monospace;font-size:large">I've tried to focus on thinking in objects. But I still have the feeling that I am missing a lot.</div><div style="font-family:monospace;font-size:large"><br></div><div style="font-family:monospace;font-size:large">Recently, a friend of mine—who considers Smalltalk a brilliant foundational idea despite its limitations (limited libraries and the usual drawbacks)—recommended a few books that “could help.” Here’s the list:<br><br>“The Object-Oriented Thought Process” by Matt Weisfeld<br>“Object-Oriented Programming” by Brad Cox<br>“Object Thinking” by David West<br>“A Touch of Class” by Bertrand Meyer</div><div style="font-family:monospace;font-size:large"><br>While this list isn’t exhaustive, I’d love to hear your recommendations. Smalltalk is an exciting journey of experimentation and immersion, and I’m thoroughly enjoying it. However, I believe I need a solid background in object-oriented design and implementation.<br></div><div style="font-family:monospace;font-size:large"><br></div><div style="font-family:monospace;font-size:large">Any guidance you can provide would be greatly appreciated.<br><br>Thanks in advance!<br></div><div style="font-family:monospace;font-size:large">Nacho </div><div style="font-family:monospace;font-size:large"><br></div><div style="font-family:monospace;font-size:large">PS: Sorry for the long mail.</div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div><b><br></b></div><div><br></div><div><b></b></div><div><b><br></b></div><div><b><br></b></div><div><b><br></b></div><div><b><br></b></div><div><b></b><br></div><b><div><b><br></b></div><div><b><br></b></div><div><b><br></b></div><br></b><b><br></b><b><br></b><div><br><br><div style="text-align:left"><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div></div>