About Juval Löwy
Software architectConsults and trains on .NET architecture and technology
Microsoft's Regional Director for the Silicon ValleyRecent book
Programming WCF Services 3rd Edition (2010 O’Reilly)Participates in the .NET/WCF design reviewsPublishes at MSDN and other magazinesRecognized Software Legend by Microsoft Contact at www.idesign.net
Software Development Crisis
The software industry is in a deep crisis Multi-dimensional crisis
CostInitial development Overall ownershipUnacceptable cost of changes leads to "clean slate" syndrome
ScheduleTime to marketTime to featureSlipsSlips hidden from management and customers
Software Development Crisis
Requirements Solving the wrong problems Unmet requirementsSystem obsolete by release time due to requirements change Too much gold platingNot enough core functionality
Staffing Un-maintainable by new staff Burnout
Software Development Crisis
QualityUp to unusable systems Customer satisfaction
Long-term problemBeen around for long timeWill take time to resolve
Software Development Crisis
Most organization are utterly chaotic Mob-rule-like methodologies No repeatability No productive processNo structured knowledge retention No development standard
Threatening our industry longevity and viabilityOr at least our livelihood
Software Development Crisis
It is possible to develop good softwarePlenty of examples of both high quality products and well-managed companiesWithin adequate limits of budget and time-to-market
Unlike almost any other engineering disciplineNo regulated licensing process or industry standardsNo requirement for studying software engineering/CS in order to practice
Software Development Crisis
Today software development is not practiced as engineering discipline
Dark ages or pre-industrialized
Software is not perceived as a profession'geeks''hackers'
Akin to low-level manufacturing that should be off shoredLacks high added-valueCan be commoditized
Software Development Crisis
Huge skill gapWhat many developers should know and what actually knowWhat most managers should practice and what is practiced
Death marches and lucky strikes
Software Development Crisis
Hardly any university teaches software engineeringNot computer science
Software engineering is distinct from computer science
Software Development Crisis
EngineeringThe application of scientific principals towards practical endsResponsible for delivering something that meets given requirements Reports to the general public of customers
ScienceSystematic knowledge of the physical or abstract world gained through observation and experimentation Responsible to add to the body of knowledgeReposts to other scientists
Software Development Crisis
Despite massive and sufficient core body of knowledgeArchitecture Process TechnologyToolsMethodologies
Software Development Crisis
Inflation in terminologySoftware architect is actually an engineer Software engineer is a programmer/developer Software developer/programmer is a code technician
Software architecture is engineeringSoftware development is manufacturing
Software Development Crisis
Key to resolving crisis is practicing software development as an engineering disciplineEngineering discipline elements
Core body of knowledge of design best practicesTechnology or science foundation Supporting processAnalysis methodologySupporting assumptions
Software engineering is the realm of the software architect
Types of Architects
Enterprise architectSometimes called corporate architect or chief architect Utilizes economy of scale
ResponsibilitiesCorporate-level frameworksDirection and guidanceManaging other architects
Types of Architects
Solution architectSometimes called architect or lead developer Application-specific
ResponsibilitiesApplication top-level design
Occasionally detailed design
Technical leadershipWhat and not howReduce complexity and provide infrastructure
Collaboration with product and project managerProject planning
But not tracking
Types of Architects
Key skills required of architects Development process and project leadershipArchitecture and modern design patterns
As reflected by the technology at hand
AnalysisModeling and notations Architecture validation
Architect's Evolution
Early 1990'sTechnical leads
Late 1990'sArchitects
Late 2000'sTechnical managers
Individual architect's career path often reflects the industry's evolution
Architecture and Technology
Architecture is not detached from technologyNo point in designing something
The technology provides alreadyDevelopers cannot build
Design methodology must align with development methodologyDevelopment methodology is derived from tools and supporting platformsNew technology often deprecates existing designIn civil engineering, 90% of architecture is building codes
Architecture and Domain
Architecture is detached from the domain-specificsDesign best practices and patterns transcend specific applications
Across industriesAcross products Across team sizes
Avoid doing more of the sameArchitects should not be the domain experts
Developers should
Developers should not be technology and design experts Architects should
Architecture and Domain
Developers add the most value by understanding the domainArchitects add the most value by decoupling the systemArchitects should rely on domain experts
System experts Developers Analysts
Resources
Programming WCF Services 3rd EditionJuval Löwy, O'Reilly 2010
www.idesign.netCode libraryCoding standardSample architecture reportIDesign Method™
Architect’s Master ClassNovember 2011
http://www.idesign.net/idesign/download/IDesignCD.zip
Resources
www.microsoft.com/teched
Sessions On-Demand & Community Microsoft Certification & Training Resources
Resources for IT Professionals Resources for Developers
www.microsoft.com/learning
http://microsoft.com/technet http://microsoft.com/msdn
http://northamerica.msteched.com
Connect. Share. Discuss.