| |
| |
About the Author | |
| |
| |
Preface | |
| |
| |
Acknowledgments | |
| |
| |
Introduction | |
| |
| |
The Martian Principles | |
| |
| |
Don't reinvent the wheel | |
| |
| |
Someone Else Has Already Solved Your Problem | |
| |
| |
Understand What Your Added Value Is | |
| |
| |
Use Commercial Software Whenever Practicable | |
| |
| |
You won't do better than what's already been done | |
| |
| |
Adhere to Industry Standards and Best Practices | |
| |
| |
Seek User Groups, Chat Forums, Online Documentation, Books, and the Like | |
| |
| |
Do Not Gum Up the Plumbing | |
| |
| |
Your customers don't know what they want | |
| |
| |
Do Not Push Too Hard on the Requirements | |
| |
| |
Do Rapid Prototyping and Lots of User Testing | |
| |
| |
Customers Are the Best Testers | |
| |
| |
Get something working as soon as possible | |
| |
| |
The First End-to-End Thread Is Critical | |
| |
| |
Working Code Builds Confidence | |
| |
| |
Always Build on Top of Working Code | |
| |
| |
Use sound software engineering practices | |
| |
| |
Use a Component-Based Architecture | |
| |
| |
Use Design Patterns | |
| |
| |
Get All the Development Team Members to Agree | |
| |
| |
Don't trust the client applications | |
| |
| |
Be Very Paranoid_They Are Out to Get You | |
| |
| |
If You Do Not Break It, They Will | |
| |
| |
Plan to make changes | |
| |
| |
Do Not Hard-Code Values | |
| |
| |
Use External Editable Parameter Files | |
| |
| |
Implement a "Read Parameters" Method | |
| |
| |
Maintain Client Parameter Files Centrally on the Server | |
| |
| |
Identify the Parameter Values | |
| |
| |
You can't predict the future | |
| |
| |
Make Each Service Dynamically Reconfigurable | |
| |
| |
Create Field-Replaceable, Plug-and-Play Services | |
| |
| |
Hot Redeployment Allows Reconfiguring without Rebooting | |
| |
| |
Make Each Service Loosely Coupled | |
| |
| |
Take a Peek into the Future | |
| |
| |
Don't tie your services into knots | |
| |
| |
Keep Your Services Independent of Each Other | |
| |
| |
Services Should Treat Other Services As Equals | |
| |
| |
Build early, build often!The Major Challenge Is Not Code Development but Code Integration | |
| |
| |
Use a Source Code Repository | |
| |
| |
Maintain a Separate Environment in Which to Build and Deploy | |
| |
| |
"What middleware?" should be your greatest compliment | |
| |
| |
The Middleware Should Be Invisible to Users | |
| |
| |
Good Middleware Creates Ideal Virtual Worlds for the End Users | |
| |
| |
Expose the invisible | |
| |
| |
Put Hooks in the Middleware | |
| |
| |
Do Runtime, Real-Time Monitoring | |
| |
| |
Log everything | |
| |
| |
Do Not Turn Off Logging in Your Production Code | |
| |
| |
"Log Mining" Reveals Usage Patterns | |
| |
| |
Know the data | |
| |
| |
Learn the Data Usage Patterns | |
| |
| |
Create Appropriate Application and Middleware Data Models | |
| |
| |
Map to Practical Physical Data Models | |
| |
| |
Adapt to Third-Party and Legacy Data | |
| |
| |
Know when it will break | |
| |
| |
Do Lots of Stress Testing | |
| |
| |
If You Do Not Find Out What the Limits Are, Your Users Surely Will | |
| |
| |
Don't fail due to unexpected success | |
| |
| |
Missions May Last Longer Than Expected | |
| |
| |
Data Repositories May Grow Larger Than Planned | |
| |
| |
Project Management and Software Engineering | |
| |
| |
Strong leadership drives a project to success | |
| |
| |
A Good Architect Must Also Be a Good Leader | |
| |
| |
Any Architecture Is Only As Good As Its Implementation | |
| |
| |
Strong Project Management Is Necessary for Success | |
| |
| |
Project Milestones Are Opportunities for Demos and Rebalancing | |
| |
| |
The Project Milestones Near the End Allow You to Get Your Project Done on Schedule | |
| |
| |
Don't ignore people issues | |
| |
| |
Software Projects Are Not Democracies | |
| |
| |
Agree to Disagree, but Then Move On | |
| |
| |
Scale the Project According to the Team Members' Abilities and Experience | |
| |
| |
Do Not Be a Slave to the Latest Project Management Methodology | |
| |
| |
Foster Good Communication Plus Teamwork, Teamwork, Teamwork | |
| |
| |
Remove Team Members Who Cannot or Will Not Perform | |
| |
| |
Software engineering is all about the D's | |
| |
| |
Discovery | |
| |
| |
Diplomacy | |
| |
| |
Definition | |
| |
| |
Design | |
| |
| |
Development | |
| |
| |
Debugging | |
| |
| |
Documentation | |
| |
| |
Deployment | |
| |
| |
Dmaintenance | |
| |
| |
Principle 20 The formulas for success aren't complicated | |
| |
| |
Successful Architect = Good Designer + Good Developer + Good Leader | |
| |
| |
Successful System = Good Architecture + Good Software Engineering | |
| |
| |
Keep It Simple | |
| |
| |
Index | |