Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
Everyday we read about DRY, YAGNI, TDD, SOLID, REST, SOA.. We are not only discussing about these concepts, but also we use them as canons to design, build and maintain our applications. In this talk, I want to explore the possible dangers in treating these concepts as sacred principles: in our everyday life, it pays off to treat these concepts as general guidelines, which can and should be challenged on a daily basis. In doing so, we can improve our understanding of these concepts and become better programmers.
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In the talk titled "The Design of Everyday Ruby," Ju Liu explores the application of design principles from usability to software development. Hosted during RubyDay 2014, the presentation underscores the importance of reconsidering established programming principles such as DRY (Don't Repeat Yourself), SOLID, and others, advocating for flexibility in their application. Liu starts by referencing Donald Norman's influential book "The Design of Everyday Things" and discusses its impact on understanding usability in design. **Key Points:** - **Application of Design Principles:** Liu emphasizes how principles from usability can enhance the clarity and usability of software code. He suggests that these principles should not be treated as rigid rules but can be seen as flexible guidelines that improve our coding practices. - **Mental Models:** Liu discusses the significance of aligning designer and user mental models, indicating that confusion arises when they do not match. Designers must communicate through the usability of an object, as actual user experience often diverges from the designer's intent. - **Visibility:** Code should be structured to allow users to quickly understand its functionality without needing extensive explanations. - **Affordances:** Objects (or code elements) must provide clear visual cues that indicate how they should be used. Liu illustrates this by using the example of doors, where proper design signals whether to push or pull. - **Constraints:** Liu discusses how imposing constraints in design can prevent misuseāa principle applicable in coding that encourages intuitive use of functions and methods. - **Natural Mapping:** He highlights the importance of a straightforward relationship between controls and their outcomes, akin to the intuitive handling of steering when driving. - **Challenging Principles:** Liu warns against the over-application of principles like DRY, mentioning that while they promote efficiency, excessive abstraction can lead to confusion and complicated code. **Conclusion and Key Takeaways:** - Liu encourages developers to continuously evaluate the necessity and applicability of design principles, urging a mindful approach to simplicity and clarity in both coding and design. He concludes that the ultimate goal should be fostering an understandable, maintainable, and functional application, suggesting that principles should promote development rather than constrain it. Liu invites discussion and openness regarding feedback and shared experiences within the Ruby development community.
Suggest modifications
Cancel