This meditation reports the interface and API design references I've found useful and further presents some general interface design ideas and checklists in the hope that they may prove useful -- and that they might be improved upon by your insightful feedback.
For me the two greatest tools for interface/API design I've come across are Test Driven Development and Refactoring. Growing effective interfaces/APIs over time, rather than designing them all up front, is a stupidly useful technique.
API Design Checklist
Alan Shalloway and Ron Jeffries' list of features for a simple design is one that resonates for me:
- Runs all the tests.
- Contains no duplication.
- Expresses all the ideas you want to express.
- Minimizes classes and methods.
The three greatest experts in the human side of interface design that I'm aware of are: Donald Norman, Jakob Nielsen, Larry Wall
I know lots of people who would argue with Nielsen's place on that list - especially with the absence of Alan Cooper!
While Larry is a hugely talented programming language designer (in my opinion anyway :-) I'm not entirely convinced that this necessarily maps onto "human" interface design in general.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||