A number of commentators have been talking about the perceived dichotomy between Agile techniques and architectural thinking. This post investigates some of the tensions between Big Up Front Design (BDUF) and You Aint Gonna Need It (YAGNI) thinking and looks at how the two approaches can in fact work together in complimentary ways.
In addition to well established principles and anti-principles, Steve Jones’ new post introduces the notion of non-principles of an SOA implementation and explains why they are important.
Bruce Eckel, Michael Feathers, Niclas Nilsson, Keith Braithwaite, and others on the question: should languages be fully flexible, allowing the developers to tweak them as they like, and trusting they will be responsible in their work, or should there be clear constraints set in the language from its design phase to avoid mistakes that create bad code, hard to maintain or to read?
Purpose and intent are just as important as skill in effective software development. Skill allows you to deliver value in difficult technical circumstances. Clear purpose and positive intent allow you to deliver value in difficult social and business circumstances. Kent Beck shares his design technique which involves both intent and a small set of strategies he uses when designing.
This session addresses the abstract notion of simplicity, looks at why it is critical in modern UI design and answers questions: Why does simplicity matter? Is there a meaningful definition of simplicity? Why do design processes and good intentions undermine simplicity? What processes and techniques can software developers use to achieve simplicity?
A recent discussion on the Extreme Programming Yahoo Group explored the apparent conflict between making software reusable and the XP practice of not writing code until it is needed. Ron Jeffries and others shared insights about the costs and benefits of code reuse, as well as how and when to do it in an agile environment.
C# 4.0 implemented a change that assured optimized and non -optimized compiles yielded consistent results. This "Fix" emphasized some design problems with locking mechanisms.
The last few weeks, a public dispute has been going on between Joel Spolsky and Robert C Martin (Uncle Bob) about Test-Driven Development and about the SOLID principles of OO design. Here is a summary and review of the match.
A member of the stack overflow community asked "Is design now a subset of refactoring?" The question highlights a common misunderstanding about the agile approach to emergent design. A common agile mantra is: "Test. Code. Refactor. Repeat!" This approach doesn't replace design; it simply spreads the work out over the life of the project.
In this presentation recorded during QCon London 2008, Stefan Tilkov introduces the audience to REST seen as an architectural style. He thinks that REST is not an alternative to SOA but it can serve SOA to reach its goals. Stefan also covers other related topics: HTTP, WS-*, SOAP, CORBA, RPC, enterprise, in an attempt to make the listeners understand what REST is and what is not and how it helps.
It's not news that at the heart of successful software systems (and, frankly, fulfilling software careers) is good design. Also not news is that defining what "good design" really means has been at the heart of many debates, papers, talks, books, discussions, and more for ages. To help, J.B. Rainsberger and Scott Bellware offer some advice to follow until that one true definition comes along.
In a new article, Jim Webber, Savas Parastatidis and Ian Robinson show how to drive an application's flow through the use of hypermedia in a RESTful application, using the well-known example from Gregor Hohpe's "Starbucks does not use Two-Phase-Commit" to illustrate how the Web's concepts can be used for integration purposes.
In this article, Joshua Bloch, Chief Java Architect at Google and former Distinguished Engineer at Sun Microsystems, presents a list of maxims intended to be a concise summary of good API design guidelines. The maxims represent the abstract written by Joshua for his session "How to Design a Good API and Why it Matters" held during JavaPolis 2006.
Introducing the concept of architectural shelf life, Dan Pritchett defines the average duration of an architectural life span. Stressing that failing to evolve the architecture at the end of its life span may have important business implications, he provides some advices that aim at facilitating architecture update with new technologies and patterns, thus making architectures last longer.
Microsoft patterns and practices group has released a WCF Security Guide. The 689 pages compendium offers a general introduction to Web Service security fundamentals as well as in-depth knowledge about several security threads and appropriate counter-measures.