Useability: Not just a pretty interface
Reflecting user’s model in code
Ergonomics and interface design are often approached as if all what they are about were a pretty GUI that hides the complexity of the underlying software. This is the reason why, even though the importance of this issue is well acknowledged, it is often treated at the later stages of the software development cycle, once modules and components are conceived and already developed. At this stage, achieving real productivity and usability becomes too costly and might require complete rewrite and recomposition of some modules. In this presentation, I will try to put the emphasis on the importance of considering interface design early in the development cycle, and provide insights into some practices that may be instrumental for creating better and simpler user interface, such as Domain driven design and user model mapping (reflecting the way user perceives software).
The LinQ Experience
Better expressiveness with less code
For a long time now, we’ve been failing, or at best not terribly succeeding, in achieving our ultimate dream of code reuse as a means for reducing code base and avoiding recurrent bugs. In the mainstream OOP approach, and even at the enterprise level, the idea of designing pluggable reusable modules doesn’t seem to work quite often. Having a potentially reusable component implies that it becomes more generic, requiring extra parameters and logic to satisfy more than one use case thus raising complexity level. Inspired from an already mature approach to functional programming, LinQ adopts a different approach to code reusability which operates rather at the micro level. It provides language constructs that allow functionalities to be composed of smaller functions (cells) that are themselves of composite nature.
Based on my experience from a recent real world enterprise project, I will provide you with insights and examples about adopting such an approach reviewing the consequences, pros and cons of this experience, showing how composability and reuse at the micro level can yield a more expressive code with fewer bugs.


