Flexible, Fast, Friendly: Balancing Your Architecture
Should this code be fast, or easy to understand later? Should this site be customized to each user, or be able to serve 1000 users at once? If I make this system super-duper-flexible, can I build anything useful with it or will it be too unstable? Every program, every module, every site involves decisions to balance one priority over another. Balancing competing priorities is the responsibility of every architect, whether we're talking about a program, a site, a building, or a social system. There is no easy answer to what balance to strike, but fortunately there is are ways to understand and think about those trade-offs to make them easier. In this session we will examine some of the main aspects of software architecture -- Performance, Scalability, Learnability, Modularity, Testability, etc. -- and how they relate to, support, and contradict each other. The goal will not be to find a magic bullet to have our cake and eat it too, but to develop a better understanding and vocabulary of how to create the right balance for our sites and for our favorite CMS.
Coding and development
Questions answered by this session:
What are major factors to consider when deciding on an appropriate architecture for my application?
How can I mitigate the downsides of my decisions?
How do I decide what my target audience is for my decisions?
What are Drupal's priorities? Are they the right priorities?