Saturday, March 31, 2012

Thin line between Architecture and design :-)


Grady Booch said
"All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change."

Thursday, March 1, 2012

[Book] 97 Things Every Software Architect Should Know

If you are using any software or any program on the internet such as web page visiting like you are doing now, it means that you have any idea about software design and structure unconsciously or intentionally.

This book is firstly for Software Architects, secondly Programmers and lastly the people who are dealing with Software or have any interaction with software programs.

97 different articles, advices are placed in this book. My best one is 'Chapter 75. If You Design It, You Should Be Able to Code It'







The following list is the 97  headlines of this book:

 Don't Put Your Resume Ahead of the Requirements
 Simplify Essential Complexity; Diminish Accidental Complexity
 Chances Are, Your Biggest Problem Isn't Technical
 Communication Is King; Clarity and Leadership, Its Humble Servants
 Application Architecture Determines Application Performance
 Seek the Value in Requested Capabilities
 Stand Up!
 Everything Will Ultimately Fail
 You're Negotiating More Often Than You Think
 Quantify
 One Line of Working Code Is Worth 500 of Specification
 There Is No One-Size-Fits-All Solution
 It's Never Too Early to Think About Performance
 Architecting Is About Balancing
 Commit-and-Run Is a Crime
 There Can Be More Than One
 Business Drives
 Simplicity Before Generality, Use Before Reuse
 Architects Must Be Hands On
 Continuously Integrate
 Avoid Scheduling Failures
 Architectural Tradeoffs
 Database As a Fortress
 Use Uncertainty As a Driver
 Warning: Problems in Mirror May Be Larger Than They Appear
 Reuse Is About People and Education, Not Just Architecture
 There Is No 'I' in Architecture
 Get the 1,000-Foot View
 Try Before Choosing
 Understand the Business Domain
 Programming Is an Act of Design
 Give Developers Autonomy
 Time Changes Everything
 "Software Architect" Has Only Lowercase a's; Deal with It
 Scope Is the Enemy of Success
 Value Stewardship Over Showmanship
 Software Architecture Has Ethical Consequences
 Skyscrapers Aren't Scalable
 Heterogeneity Wins
 It's All About Performance
 Engineer in the White Spaces
 Talk the Talk
 Context Is King
 Dwarves, Elves, Wizards, and Kings
 Learn from Architects of Buildings
 Fight Repetition
 Welcome to the Real World
 Don't Control, but Observe
 Janus the Architect
 Architects' Focus Is on the Boundaries and Interfaces
 Empower Developers
 Record Your Rationale
 Challenge Assumptions—Especially Your Own
 Share Your Knowledge and Experiences
 Pattern Pathology
 Don't Stretch the Architecture Metaphors
 Focus on Application Support and Maintenance
 Prepare to Pick Two
 Prefer Principles, Axioms, and Analogies to Opinion and Taste
 Start with a Walking Skeleton
 It Is All About The Data
 Make Sure the Simple Stuff Is Simple
 Before Anything, an Architect Is a Developer
 The ROI Variable
 Your System Is Legacy; Design for It
 If There Is Only One Solution, Get a Second Opinion
 Understand the Impact of Change
 You Have to Understand Hardware, Too
 Shortcuts Now Are Paid Back with Interest Later
 "Perfect" Is the Enemy of "Good Enough"
 Avoid "Good Ideas"
 Great Content Creates Great Systems
 The Business Versus the Angry Architect
 Stretch Key Dimensions to See What Breaks
 If You Design It, You Should Be Able to Code It
 A Rose by Any Other Name Will End Up As a Cabbage
 Stable Problems Get High-Quality Solutions
 It Takes Diligence
 Take Responsibility for Your Decisions
 Don't Be Clever
 Choose Your Weapons Carefully, Relinquish Them Reluctantly
 Your Customer Is Not Your Customer
 It Will Never Look Like That
 Choose Frameworks That Play Well with Others
 Make a Strong Business Case
 Control the Data, Not Just the Code
 Pay Down Your Technical Debt
 Don't Be a Problem Solver
 Build Systems to Be Zuhanden
 Find and Retain Passionate Problem Solvers
 Software Doesn't Really Exist
 Learn a New Language
 You Can't Future-Proof Solutions
 The User Acceptance Problem
 The Importance of Consommé
 For the End User, the Interface Is the System
 Great Software Is Not Built, It Is Grown