From: Robert Klemme Date: 2008-02-11T21:49:07+09:00 Subject: Re: lost in "=", forest searching for methods of abstraction (bad habits die hard) 2008/2/10, Vladimir Konrad : > Since then I have being using ruby (sporadically and not for big > projects), but with a bad style (I recognised this, when trying to > write something bigger). > > When I see projects like rspec, sequel and ramaze, I am amazed what is > possible with ruby. > > The question is, what concepts are necessary to grasp to be able to > create something like that (in ruby), and, is there a good read > (preferably on-line) about them? There are some fundamental principles in software engineering that apply regardless of programming language chosen: basically you have to carefully think about how you distribute functionality across different programming artifacts (methods, functions, classes and the like). In other words, complex systems are built by divide and conquer and abstraction. There are different methodologies (top down, bottom up, various OO approaches) but they all try to come up with a distribution of functionality that avoids redundancies (ideally no two methods / classes that do the same) and keeps things modular (so you can easier reuse). Off the top of my head I could not recommend a book or other resource that will teach this. I tend to believe that, to a good extend, this is learned from experience. Maybe looking into OO patterns can help, because they deal exactly with this question "how do I create my classes and make them collaborate?": http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29 Kind regards robert -- use.inject do |as, often| as.you_can - without end