SlideShare a Scribd company logo
SOFTWARE ISN’t a building
Designing technical architecture for change
by: David Fox, Director of Technical Architecture Design
agenda
• Buildings vs So!ware
• Tension Between Malleability and Complexity
• Barriers to Change in So!ware and Their Solu"ons
Architects
All they do is draw boxes and lines on whiteboards.
Who needs them?
building architecture

Recommended for you

Continuous integration. Short overview
Continuous integration. Short overviewContinuous integration. Short overview
Continuous integration. Short overview

Short overview of Continuous integration: Reasons, Continuous Model, Continuous integration tools, Jenkins, Bamboo, Task types

jenkinsbambooagile
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...

The goal of Serverless is to focus on writing the code that delivers business value and offload everything else to your trusted partners (like Cloud providers or SaaS vendors). You want to iterate quickly and today’s code quickly becomes tomorrow’s technical debt. In this talk we will show why Serverless adoption increases the developer productivity and how to measure it. We will also go through AWS Serverless architectures where you only glue together different Serverless managed services relying solely on configuration, minimizing the amount of the code written.

awscloudserverless
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for Databases

Continuous Delivery is hot. As we all increasingly compete using software, the business always wants more change faster. However, change is seen as risky. How do we deliver quickly while not exposing the business to excessive risk? What does this imply for how we update our mission critical databases? Successful continuous delivery efforts use quality as an enabler of rapid change. Rapid feedback on the quality of the application, and a disciplined, high quality process support frequent delivery of business value, rather than frequent outage. IBM UrbanCode’s Eric Minick and DBmaestro’s Yaniv Yehuda present how to build safety in to your delivery process. We will look at database change in some detail while delivering generally applicable lessons.

dbmaestroibmurbancode
SOFTWARE architecture
Building ARCHITECTURE
FAIL
What makes software
hard to change?
“If you pick any one aspect of so!ware then
you can make it easy to change…making
everything easy to change makes the en"re
system very complex. Complexity is what
makes so!ware hard to change.”
Ralph Johnson speaking with Mar"n Fowler - “Who Needs an Architect?”
h#p://mar"nfowler.com/ieeeSo!ware/whoNeedsArchitect.pdf

Recommended for you

Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code

Slides from my talk at ConFoo Montreal, February 2016. A presentation on how to apply configuration management (CM) principles for your various environments, to control changes made to them. You apply CM on your code, why not on your environments content? This presentation will present the infrastructure as code principles using Chef and/or Ansible. Topics discussed include Continuous Integration, Continuous Delivery/Deployment principles, Infrastructure As Code and DevOps.

bddansibleiac
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction

This document provides an overview of DevOps, including definitions, principles, challenges, and how DevOps addresses issues with traditional development models. Some key points covered include: - DevOps aims to unify development and operations teams to accelerate delivery through a collaborative culture, automation, measurement, and sharing. - Traditional models caused bottlenecks due to lack of alignment between teams. DevOps breaks down silos and improves coordination. - DevOps follows a continuous development lifecycle using practices like continuous integration, delivery, and deployment. - Automation, infrastructure as code, containers, and cloud platforms help optimize the development and deployment process in DevOps.

devopsci/cd
Continuous Delivery Maturity Model
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity Model

How do measure our progress in a journey towards continuous integration? What are other people doing? This presentation provides an measuring stick for CD Maturity and simple pattern for reviewing your current situation and deciding what to work on next.

urbancodecontinuous deliverydevops
Barriers to change
• Lack of Design
• Coupling
• Invasive APIs
• Dehydra"on
• Infrastructure Investments
• Team
• Technical Debt
LACK OF DESIGN
Turns out you do need that architect designer
DESIGN SYMPTOMS
• “Let’s just use Framework X” before star"ng to think about design
• “Let’s just start coding”
• No clear design leader(s)/ownership
• Developers le! to decide on components without overall direc"on
• Ge#ng bogged down in details
DESIGN RECOMMENDATIONS
• Developers must have some idea of the overall design before coding begins
• Team must agree on design and be aware of general design and roles of
components
• Work “outside in”. Use the walking skeleton.
• Designer(s) must work with the team throughout development and review work
directly to ensure design is being followed
• Choose frameworks based on your architecture, not the other way around

Recommended for you

Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training ppt

EduXFactor presents to you a comprehensive up-to-date DevOps certification program. This course will empower you with job-relevant skills and power you ahead in your career. With this course, master various aspects of software development, operations, continuous integration, continuous delivery, automated configuration management, test, and deployment using DevOps tools like Git, Docker, Jenkins, Ansible, Kubernetes, Puppet & Nagios.. Packed with hands-on exercise for every module, this course is suitable for software developers, technical project managers, architects, operations support, deployment engineers, IT managers, and development managers.

#devopstraininginhyderabad #bestdevopstraingonline
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the Cloud

eBay Chief Engineer Randy Shoup's keynote at QCon 2010 outlines several critical elements of the evolving cloud programming model – what developers need to do to develop successful systems in the cloud. It discusses state management and statelessness, distribution- and network-awareness, workload partitioning, cost and resource metering, automation readiness, and deployment strategies

elasticnosqlparallelism
Continuous Delivery Maturity Model
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity Model

Continuous Delivery presents a compelling vision of builds that are automatically deployed and tested until ready for production. Most teams aren't there yet. Some never want to go that far. Others want to push the envelope further. This deck presents a model for scoring yourself on the continuum and examples of how companies can decide what parts of CD to adopt first, later and not at all.

continuous deliverycontinuous integration
Coupling
Connascence
• So!ware quality metric and taxonomy of coupling
• Used by Meilir Page-Jones in ACM ar"cle
“Comparing Techniques by Means of
Encapsula"on and Connascence” in 1992
• Expanded in “What every programmer should
know about object-oriented design” in 1996
• Visit h$p://connascence.io for more info
Connascence
• Name
• Type
• Meaning
• Posi"on
• Algorithm
• Execu"on
• Timing
• Values
• Iden"ty
• Strength
• Locality
• Degree
Connascences Proper!es
Image source: http://connascence.io/locality.html
Coupling recommendations
• Iden"fy strong connascence and refactor to weak wherever possible
• Boundaries between components, par"cularly foreign APIs, are essen"al
• Adding layers does add (some) complexity, but:
• Reveals intent in the ubiquitous language of the domain
• Eases re-implementa"on of components
• Improves testability
• Learn and follow good prac"ces, such as SOLID

Recommended for you

DevOps and the Future of IT Operations
DevOps and the Future of IT OperationsDevOps and the Future of IT Operations
DevOps and the Future of IT Operations

The increasing adoption of DevOps principles has led to greater integration between software development (both application and software engineering) and IT operations (both systems administration and infrastructure). In this online seminar, we will explore the DevOps approaches

information technologyit operationssoftware development
From the sandbox to production
From the sandbox to productionFrom the sandbox to production
From the sandbox to production

The development process is an exciting and challenging process, however sooner or later a product need to be rollout on production environment. Often a development team in this moment opens a wonderful and a new world of the Ops. In my story, I want to share a few tips how to roll out successfully your product.

software developmentdevopsbest practices
Enterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, ReleaseEnterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, Release

Slides from this webcast: bit.ly/mTUTq4 Discussion of what DevOps is, why we need it, what sorts of shared tooling helps it, and how it fits in to an enterprise rollout.

devopscontinuous integrationcontinuous delivery
Invasive APIs
and leaky abstrac"ons
INVASIVE API SYMPTOMS
• Dependencies on implementa"on reach up through layers
• Specialized implementa"on types are exposed in APIs
• Custom types are used when simple, built-in types would suffice
• Infrastructure is needed in other layers to support a leaky abstrac"on
INVASIVE API recommendations
• Always put boundaries between your domain and foreign APIs
• Translate data structures at boundary
• Ensure core of domain remains pure and free of external dependencies
• Use standard types that don’t require clients to import implementa"on details
• Prefer libraries that use open standards
• Unless the infrastructure really is transparent, favor designs where boundaries are
enforced, and don’t leak outside the component
• Prefer external mapping or configura"on over annota"ons
Dehydration
There is such a thing as too DRY

Recommended for you

IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOps

This document provides an overview of DevOps and how to adopt a DevOps approach. It discusses that DevOps aims to shorten the systems development life cycle and provide continuous delivery with high software quality. The document outlines that adopting DevOps involves changes to an organization's people, processes and technologies. It provides strategies for building a collaborative culture and implementing shared goals and metrics. It also discusses implementing efficient processes for continuous integration, delivery, testing and monitoring. The document recommends technologies like infrastructure as code, collaboration tools, and release automation to support the DevOps approach.

ibminnovatedevops
Digital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture OverviewDigital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture Overview

This presentation will introduce a new DevOps reference architecture published by IBM. This technology agnostic reference architecture was developed harvesting solution architectures from dozens of clients who have been successful in adopting DevOps at scale. The presentation will present the capabilities - across practices, tools, platforms and organizational considerations, that are required for large scale DevOps adoption in an enterprise.

ibmibm urbancode deploydevops
How to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps SolutionsHow to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps Solutions

Microsoft DevOps toolset replaces error-prone manual processes with automation for improved traceability and repeatable workflows. Learn more about: - The benefits of Continuous Integration practice - Continuous Deployment as an accelerator to deliver high quality software - How to use Visual Studio Team Services and Microsoft Azure to decrease rework and increase team productivity

microsoftdevopswebinar
Dehydration SYMPTOMS
• Confla"ng persistence, domain, and presenta"on concerns
• “One Big Model”
• Sharing code between models in separate contexts
• Func"ons used by mul"ple clients contain special cases specific to those
clients
Dehydration RECOMMENDATIONS
• Don’t try to be DRY at the cost of strong coupling
• Denormaliza"on is OK
• Consider the true impact of eventual consistency
• Separate aspects of models into bounded contexts
• If a model is suppor"ng mul"ple concerns, and has code specific to those
use cases, it’s a sign mul"ple models might help, even if they end up being
very similar
• It’s OK to have similar code in mul"ple places, especially separate modules
Infrastructure
investments
We already paid for the support contract!
investments symptoms
• We already bought the license to “Database X”, so we have to use that
• All our code is wri$en to use “Middleware Y”, so it’s hard to change
• We already hired our team for their experience with “Framework Z”

Recommended for you

DevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibilityDevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibility

What is DevOps? Why is it so important for software organizations? This is a short intro to the problem that DevOps tries to solve and how DevOps offers an alternative model of responsibility in an organization that solves this problem.

devopsresponsibilityculture
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous Delivery

Practicing database Continuous Delivery saves time and money and prevents downtime in production. However, dealing with automating database deployments is tricky. In this presentation, you will learn how to overcome the challenges and potential pitfalls of database Continuous Delivery and proven best practices for automating database changes.

#merge2014#perforce#dbmaestro
How to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information ArchitectureHow to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information Architecture

The document discusses information architecture and how to prepare for an interview for an information architecture role. It defines information architecture as making websites user-friendly and easy to navigate. It outlines the roles and responsibilities of an information architect, which include organizing a website's structure and content. It also provides tips for how to redesign a website, such as conducting stakeholder interviews, auditing content, analyzing user needs, and creating wireframes.

iainformationarchitecture
investments recommendations
• Wait un"l the “last responsible moment” to decide on specific technology
investments
• “Fake it un"l you make it” to put off implementa"on of components un"l all
requirements are known
• Design in terms of classes of technology rather than specific technologies
• Prefer libraries over large, invasive frameworks - and/or -
• Segregate implementa"ons using boundaries
• Prefer open-source so!ware
Team
TEAM SYMPTOMS
• Our developers only know “Framework X”
• Our developers aren’t sophis"cated enough to use “Technology Y”
• Developers don’t want to learn how to write SQL correctly
• The front-end team is responsible for that
• We have to run all updates through the database team
• Only Steve knows that par"cular part of the code
TEAM recommendations
• Invest in and encourage training in broad skill areas, not just technologies
• Structure teams so that more experienced engineers work on design and
modeling with less-experienced engineers
• Less experienced engineers review more experienced engineers’ code
• Push engineers to become more full-stack
• Don’t choose technologies only based on “what the team knows”

Recommended for you

Pley Technical Architecture
Pley Technical ArchitecturePley Technical Architecture
Pley Technical Architecture

This document discusses convolutional neural networks (CNNs) for image classification and recognition. It provides examples of using a CNN to determine if an image contains a human face or is a picture of George Clooney. It also discusses how CNNs are trained on images and can be used to classify images, such as finding a green LEGO flower brick in an image. The document outlines the architecture of a system using Laravel, AngularJS, Amazon Web Services, and other technologies for its website, warehouse, customer service, and mobile apps.

FPS_Architecture_June
FPS_Architecture_June FPS_Architecture_June
FPS_Architecture_June

First People Solutions is a technical recruitment agency located in Glasgow, Edinburgh, and Perth, Australia that has been operating for over 10 years. They specialize in recruiting for the aviation, construction, energy, science, and technical industries. Within construction, they supply staff to main contractors, engineers, civil contractors, project managers, architects, and mechanical and electrical contractors. They are currently looking to fill several architecture and design roles in Glasgow and Edinburgh, including an architecture technician, project architect for master planning, interior design team leader, conservation architect, architect, technician, and architecture assistant.

Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...

The document discusses a case study of integrating Alfresco ECM and Liferay portal software to build an enterprise portal for Grupo Posadas, a large hotel chain in Latin America. Key points include: - CIGNEX Datamatics implemented the solution to address Posadas' challenges of poor performance, lack of workflows and duplication across its multiple brands. - The solution featured Alfresco for document management, web content management and other functions, integrated with Liferay portal for personalization, search and collaboration. - Benefits included increased revenue, improved guest experience, and 50% reduction in maintenance costs through the open source software.

posadascignexliferay
“organiza"ons which design systems ... are
constrained to produce designs which are
copies of the communica"on structures of
these organiza"ons”
Melvin Conway
TEAM recommendations
• Base designs on the problem domain, not team structure, and shape the team
around it
• Group developers based on bounded contexts and func"onality, not applica"on
layers or technologies
• Create smaller mul"-disciplinary teams
• Allow for direct communica"on between groups
• Integrate constantly
Technical Debt
Adding features no ma$er what the cost
Technical Debt SYMPTOMS
• Velocity isn’t nearly what it was when the project began
• We have to add features, there’s no "me to refactor
• This part of the code is a mess! We need to rewrite it
• We can refactor that code without breaking something

Recommended for you

The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...

Dohaland Seminar - The Aga Khan Award for Architecture: Voices from Doha This presentation focuses on the process of the AKAA technical review and jury process based on my recent experience as reviewer in the latest 33rd Cycle of the AKAA. It sheds light on nature of the review process starting with the project nomination, selection of reviewers, reviewers responsibilities, project study, visit, report writing, and presentation of project to the master jury committee. The Aga Khan Award’s process of projects technical review is one of the most rigorous and comprehensive review processes of architecture awards. The Aga Khan Award for Architecture was established in 1977 by His Highness the Aga Khan. It recognizes examples of architectural excellence that encompass contemporary design, social housing, community improvement and development, restoration, re-use, and area conservation, as well as landscaping and environmental issues. Through its efforts, the Award seeks to identify and encourage building concepts that successfully address the needs and aspirations of societies in which Muslims have a significant presence.

yassermahgoubarchitecture
Project HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture DiagramsProject HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture Diagrams

For each current Project HealthDesign team, these diagrams show which observations of daily living (ODLs) patients are tracking, the technologies the patients use to collect ODL data and other technical processes.

technologyhealth ithealth
Architecture Series 5-4 Solution Architecture Draft
Architecture Series 5-4   Solution Architecture   DraftArchitecture Series 5-4   Solution Architecture   Draft
Architecture Series 5-4 Solution Architecture Draft

Use Solution Architecture as a tool to produce solid solutions that fully meet business needs, within budget, deploy on schedule, easy to maintain, and use fewer resources.

Technical Debt recommendations
• Pay down technical debt as you go
• If you must defer paying down debt to complete features, try:
• Refactor just enough to add a feature without incurring more debt (“the Boy
Scout Rule”)
• Have a “cleanup” phase a!er the feature push
• Ensure that there are tests in place so refactoring can be done regularly and with
confidence
• Prescrip"ve refactoring over “rewrites”. If you make it part of development, it isn’t
“extra expense”.
LACK OF DESIGN
Do overall design up front and empower leaders to guide
developers in implementa"on.
COUPLING
Learn about connascence, reduce strong to weak, and add
boundaries to segregate components.
INVASIVE APIS
Translate 3rd party APIs into your domain model and add
boundaries to prevent leaky abstrac"ons.

Recommended for you

Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108

The document summarizes Presidio's approach to transforming technology into innovative business solutions through professional and managed services. It provides an overview of Presidio's value drivers, networked solutions, managed networks, and technology capital offerings. Key points include Presidio's expertise in unified communications, data center transformation, security, and lifecycle management to design customized solutions that deliver long-term benefits.

AppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the CloudAppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the Cloud

Compliance uncertainty is barrier in moving workloads to the cloud. Learn how Cryptzone's AppGate helps companies achieve compliance in the cloud.

cloudcryptzonesoftware-defined perimeter
Cryptzone AppGate Technical Architecture
Cryptzone AppGate Technical ArchitectureCryptzone AppGate Technical Architecture
Cryptzone AppGate Technical Architecture

Learn more about AppGate's technical architecture. AppGate delivers a Software-Defined Perimeter network security solution.

identity-centriccryptzonesoftware-defined perimeter
DEHYDRATION
Sacrifice DRYness if it reduces coupling. Split up large
models by bounded contexts. Reduce scope of shared
dependencies.
INFRASTRUCTURE
Wait un"l the “last responsible moment” and “fake it un"l
you make it” to ensure procurements reflect actual needs
TEAM
Invest in your team knowledge. Increase communica"on.
Your team structure is your architecture.
TECHNICAL DEBT
Pay it down as you go so it doesn’t grow out of control.
Refactoring is not rewri"ng and is part of development.

Recommended for you

Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecture

The document discusses software architecture, including its definition, types of architectures, views, and documentation. It defines software architecture as the fundamental organization of a system, including its components, relationships, and design principles. The document outlines different types of architectures like business, technical, and enterprise architectures. It also discusses common architecture views used in frameworks like RUP, RM-ODP, and DODAF. Finally, it covers architecture documentation and modeling techniques.

Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects

The document provides 10 pieces of advice for software architects. It begins by introducing Eberhard Wolff and his background. Some of the key advice includes: understanding that the role of architect has changed with agile development and they are not managers; focusing on non-functional requirements and quality; caring about architecture and code quality rather than just diagrams; measuring code quality using tools; and ensuring proper dependency management to maintain architecture. The architect role is compared to that of a craftsman focusing on continual improvement rather than being separated from developers.

architectsoftware architecturearchitecture
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten

This document provides 10 tips for software architects. It begins by introducing the author and their background. It then discusses that the role of a software architect is not well-defined and involves managing non-functional requirements and quality. Architects are responsible for defining and enforcing architecture. The document discusses how architects fit into agile development methodologies like Scrum. It argues that "architect" may not be the best metaphor and discusses an alternative view of architects as master craftsmen. The tips emphasize having your own opinion, improving vocabulary, eating your own dog food, avoiding broken windows, using domain-driven design strategically, caring about code and architecture, measuring and reducing complexity, and managing dependencies.

wjaxsoftware architektursoftware architekten
evolving architecture
How Buildings Learn: What Happens
A!er They're Built
By: Stewart Brand
About cantina
• Boston-based digital design and development agency
• Founded in 2007, 60+ employees
• We help clients like Putnam Investments, John
Hancock, CUNA Mutual Group, Epsilon, and Pearson
deliver be$er digital products for their customers
• Can"na’s people turn great ideas into digital reality,
execu"ng with the best design and development
techniques available
thank you
References
• “Who Needs an Architect?”

h$p://mar"nfowler.com/ieeeSo!ware/whoNeedsArchitect.pdf
• What Every Programmer Should Know About Object-Oriented Design

h$p://www.amazon.com/Every-Programmer-Should-Object-Oriented-Design/
dp/0932633315/ref=sr_1_1?qid=1446730637
• Connascence

h$p://connascence.io
• How Buildings Learn: What Happens A!er They're Built

h$p://www.amazon.com/How-Buildings-Learn-Happens-Theyre/dp/
0140139966

Recommended for you

Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines

This document discusses various app architectures and coding best practices. It covers design patterns like MVC, MVP, MVVM and architectural concepts like dependency injection. It provides examples of these patterns and concepts for Android development. It also lists some important Android libraries and recommends focusing on app architecture for benefits like scalability, maintainability and testability.

androidiossoftware development
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014

Developing large apps is difficult. Ensuring that code is consistent, well structured, tested and has an architecture that encourages enhancement and maintainability is essential. When it comes to building large server-focused apps the solutions to this problem have been tried and tested. But, how do you achieve this when building HTML5 single page apps? BladeRunnerJS is an open source developer toolkit and lightweight front-end framework that has helped Caplin Systems ensure that a 200k LoC JavaScript codebase hasn’t become a tangled mess of unstable spaghetti code. This codebase is packaged and delivered to customers as an SDK. Additionally customers receive a getting started application of around 50k LoC for them to build upon, and they’re expected not to turn that into a tangled … you get the idea. In this talk you’ll learn the main concepts to apply when building a front-end app that scales and how BladeRunnerJS can support the development process.

brjsenterprisetooling
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...

The goal of Serverless is to focus on writing the code that delivers business value and offload everything else to your trusted partners (like Cloud providers or SaaS vendors). You want to iterate quickly and today’s code quickly becomes tomorrow’s technical debt. In this talk we will show why Serverless adoption increases the developer productivity and how to measure it. We will also go through AWS Serverless architectures where you only glue together different Serverless managed services relying solely on configuration, minimizing the amount of the code written.

serverlesscloud computingcloud
References
• Growing Object-Oriented So!ware, Guided by Tests

h$p://www.amazon.com/Growing-Object-Oriented-So!ware-Guided-Tests/dp/
0321503627/ref=sr_1_1?s=books&ie=UTF8&qid=1446730723

More Related Content

What's hot

Creating a DevOps Team that Isn't Evil
Creating a DevOps Team that Isn't EvilCreating a DevOps Team that Isn't Evil
Creating a DevOps Team that Isn't Evil
IBM UrbanCode Products
 
DevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & MoreDevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & More
Chris Edwards
 
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Vadym Kazulkin
 
Continuous integration. Short overview
Continuous integration. Short overviewContinuous integration. Short overview
Continuous integration. Short overview
ElifTech
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
Vadym Kazulkin
 
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for Databases
IBM UrbanCode Products
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Steve Mercier
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
Sridhara T V
 
Continuous Delivery Maturity Model
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity Model
IBM UrbanCode Products
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training ppt
KhalidQureshi31
 
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the Cloud
Randy Shoup
 
Continuous Delivery Maturity Model
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity Model
IBM UrbanCode Products
 
DevOps and the Future of IT Operations
DevOps and the Future of IT OperationsDevOps and the Future of IT Operations
DevOps and the Future of IT Operations
Correlsense
 
From the sandbox to production
From the sandbox to productionFrom the sandbox to production
From the sandbox to production
Vadym Fedorov
 
Enterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, ReleaseEnterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, Release
IBM UrbanCode Products
 
IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOps
Sanjeev Sharma
 
Digital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture OverviewDigital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture Overview
IBM UrbanCode Products
 
How to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps SolutionsHow to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps Solutions
SoftServe
 
DevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibilityDevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibility
Yoav Avrahami
 
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous Delivery
Perforce
 

What's hot (20)

Creating a DevOps Team that Isn't Evil
Creating a DevOps Team that Isn't EvilCreating a DevOps Team that Isn't Evil
Creating a DevOps Team that Isn't Evil
 
DevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & MoreDevOps - Applying Lean & Agile Principles to Operations & More
DevOps - Applying Lean & Agile Principles to Operations & More
 
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...
 
Continuous integration. Short overview
Continuous integration. Short overviewContinuous integration. Short overview
Continuous integration. Short overview
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for Databases
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
Continuous Delivery Maturity Model
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity Model
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training ppt
 
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the Cloud
 
Continuous Delivery Maturity Model
Continuous Delivery Maturity ModelContinuous Delivery Maturity Model
Continuous Delivery Maturity Model
 
DevOps and the Future of IT Operations
DevOps and the Future of IT OperationsDevOps and the Future of IT Operations
DevOps and the Future of IT Operations
 
From the sandbox to production
From the sandbox to productionFrom the sandbox to production
From the sandbox to production
 
Enterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, ReleaseEnterprise DevOps: Scaling Build, Deploy, Test, Release
Enterprise DevOps: Scaling Build, Deploy, Test, Release
 
IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOps
 
Digital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture OverviewDigital Disruption with DevOps - Reference Architecture Overview
Digital Disruption with DevOps - Reference Architecture Overview
 
How to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps SolutionsHow to Reduce Time to Market Using Microsoft DevOps Solutions
How to Reduce Time to Market Using Microsoft DevOps Solutions
 
DevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibilityDevOps is not a Culture. It is about responsibility
DevOps is not a Culture. It is about responsibility
 
The Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous DeliveryThe Challenges & Pitfalls of Database Continuous Delivery
The Challenges & Pitfalls of Database Continuous Delivery
 

Viewers also liked

How to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information ArchitectureHow to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information Architecture
coleman yee
 
Pley Technical Architecture
Pley Technical ArchitecturePley Technical Architecture
Pley Technical Architecture
Anurag Phadke
 
FPS_Architecture_June
FPS_Architecture_June FPS_Architecture_June
FPS_Architecture_June
Melissa Henderson
 
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Alfresco Software
 
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
Galala University
 
Project HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture DiagramsProject HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture Diagrams
Project HealthDesign
 
Architecture Series 5-4 Solution Architecture Draft
Architecture Series 5-4   Solution Architecture   DraftArchitecture Series 5-4   Solution Architecture   Draft
Architecture Series 5-4 Solution Architecture Draft
Frankie Hsiang
 
Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108
mmata1031
 
AppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the CloudAppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the Cloud
Cryptzone
 
Cryptzone AppGate Technical Architecture
Cryptzone AppGate Technical ArchitectureCryptzone AppGate Technical Architecture
Cryptzone AppGate Technical Architecture
Cryptzone
 
Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecture
scmiyer
 

Viewers also liked (11)

How to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information ArchitectureHow to bluff your way through an interview on Information Architecture
How to bluff your way through an interview on Information Architecture
 
Pley Technical Architecture
Pley Technical ArchitecturePley Technical Architecture
Pley Technical Architecture
 
FPS_Architecture_June
FPS_Architecture_June FPS_Architecture_June
FPS_Architecture_June
 
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
Partner Solution: CIGNEX DATAMATICS - Integration of Alfresco ECM & Liferay t...
 
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
The Aga Khan Award for Architecture Technical Review and Jury Process: A Rece...
 
Project HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture DiagramsProject HealthDesign -Technical Architecture Diagrams
Project HealthDesign -Technical Architecture Diagrams
 
Architecture Series 5-4 Solution Architecture Draft
Architecture Series 5-4   Solution Architecture   DraftArchitecture Series 5-4   Solution Architecture   Draft
Architecture Series 5-4 Solution Architecture Draft
 
Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108Presidio Networked Solutions Sales Presentation Ns Ppt 1108
Presidio Networked Solutions Sales Presentation Ns Ppt 1108
 
AppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the CloudAppGate: Achieving Compliance in the Cloud
AppGate: Achieving Compliance in the Cloud
 
Cryptzone AppGate Technical Architecture
Cryptzone AppGate Technical ArchitectureCryptzone AppGate Technical Architecture
Cryptzone AppGate Technical Architecture
 
Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecture
 

Similar to Software is not a Building - Designing Technical Architecture for Change

Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
Eberhard Wolff
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
adesso AG
 
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
Qamar Abbas
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Phil Leggetter
 
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Vadym Kazulkin
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
Hayim Makabee
 
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference BrisbaneScaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Bejoy Jaison
 
DevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing KratixDevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing Kratix
Abigail Bangser
 
Efficient Code Organisation
Efficient Code OrganisationEfficient Code Organisation
Efficient Code Organisation
Squeed
 
Meetup: Platform-as-a-Service / Cloud Foundry
Meetup: Platform-as-a-Service / Cloud FoundryMeetup: Platform-as-a-Service / Cloud Foundry
Meetup: Platform-as-a-Service / Cloud Foundry
Tipico / Booxware
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
DevOps.com
 
Think Cloud, Develop Locally
Think Cloud, Develop LocallyThink Cloud, Develop Locally
Think Cloud, Develop Locally
All Things Open
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
Brad Williams
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
Cisco DevNet
 
Introduction to the Managed Extensibility Framework in Silverlight
Introduction to the Managed Extensibility Framework in SilverlightIntroduction to the Managed Extensibility Framework in Silverlight
Introduction to the Managed Extensibility Framework in Silverlight
Jeremy Likness
 
Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15
Mark Windholtz
 
DevOps for Network Engineers
DevOps for Network EngineersDevOps for Network Engineers
DevOps for Network Engineers
stefan vallin
 
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Jorge Hidalgo
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Raffi Khatchadourian
 
Ladies Be Architects: Study Group IV: Project and System Governance
Ladies Be Architects: Study Group IV: Project and System GovernanceLadies Be Architects: Study Group IV: Project and System Governance
Ladies Be Architects: Study Group IV: Project and System Governance
gemziebeth
 

Similar to Software is not a Building - Designing Technical Architecture for Change (20)

Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
 
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
Measure and Increase Developer Productivity with Help of Serverless at JCON 2...
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
 
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference BrisbaneScaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
Scaling Agile - Bejoy Jaison - Keynote at Agile and DevOps Conference Brisbane
 
DevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing KratixDevExForPlatformEngineers, introducing Kratix
DevExForPlatformEngineers, introducing Kratix
 
Efficient Code Organisation
Efficient Code OrganisationEfficient Code Organisation
Efficient Code Organisation
 
Meetup: Platform-as-a-Service / Cloud Foundry
Meetup: Platform-as-a-Service / Cloud FoundryMeetup: Platform-as-a-Service / Cloud Foundry
Meetup: Platform-as-a-Service / Cloud Foundry
 
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
Microservices at Scale: How to Reduce Overhead and Increase Developer Product...
 
Think Cloud, Develop Locally
Think Cloud, Develop LocallyThink Cloud, Develop Locally
Think Cloud, Develop Locally
 
ThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.jsThatConference 2016 - Highly Available Node.js
ThatConference 2016 - Highly Available Node.js
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
 
Introduction to the Managed Extensibility Framework in Silverlight
Introduction to the Managed Extensibility Framework in SilverlightIntroduction to the Managed Extensibility Framework in Silverlight
Introduction to the Managed Extensibility Framework in Silverlight
 
Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15
 
DevOps for Network Engineers
DevOps for Network EngineersDevOps for Network Engineers
DevOps for Network Engineers
 
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
Multilanguage Pipelines with Jenkins, Docker and Kubernetes (Commit Conf 2018)
 
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
 
Ladies Be Architects: Study Group IV: Project and System Governance
Ladies Be Architects: Study Group IV: Project and System GovernanceLadies Be Architects: Study Group IV: Project and System Governance
Ladies Be Architects: Study Group IV: Project and System Governance
 

More from Cantina

Sketching for UX Designers
Sketching for UX DesignersSketching for UX Designers
Sketching for UX Designers
Cantina
 
Demystifying the Design Process
Demystifying the Design ProcessDemystifying the Design Process
Demystifying the Design Process
Cantina
 
Planning For design
Planning For designPlanning For design
Planning For design
Cantina
 
Five Key Ingredients in Successful Mobile Projects
Five Key Ingredients in Successful Mobile ProjectsFive Key Ingredients in Successful Mobile Projects
Five Key Ingredients in Successful Mobile Projects
Cantina
 
Delivering Responsive Design at Scale
Delivering Responsive Design at ScaleDelivering Responsive Design at Scale
Delivering Responsive Design at Scale
Cantina
 
Design i/o - Creating Visual Interfaces for Digital Systems
Design i/o - Creating Visual Interfaces for Digital SystemsDesign i/o - Creating Visual Interfaces for Digital Systems
Design i/o - Creating Visual Interfaces for Digital Systems
Cantina
 
Intro to facade
Intro to facadeIntro to facade
Intro to facade
Cantina
 
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitChoices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Cantina
 
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitChoices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Cantina
 
Introduction to Reactive
Introduction to ReactiveIntroduction to Reactive
Introduction to Reactive
Cantina
 
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Cantina
 
Demystifying Content Strategy: Part 2 of Delivering the Connected Experience
Demystifying Content Strategy: Part 2 of Delivering the Connected ExperienceDemystifying Content Strategy: Part 2 of Delivering the Connected Experience
Demystifying Content Strategy: Part 2 of Delivering the Connected Experience
Cantina
 
Domain-Driven Design: Part 4 from Delivering the Connected Experience
Domain-Driven Design: Part 4 from Delivering the Connected ExperienceDomain-Driven Design: Part 4 from Delivering the Connected Experience
Domain-Driven Design: Part 4 from Delivering the Connected Experience
Cantina
 
The Need For Speed: Part 5 of Delivering the Connected Experience
The Need For Speed: Part 5 of Delivering the Connected ExperienceThe Need For Speed: Part 5 of Delivering the Connected Experience
The Need For Speed: Part 5 of Delivering the Connected Experience
Cantina
 
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Cantina
 
A Brief History of Input Devices with Cantina's Daniel Bostwick
A Brief History of Input Devices with Cantina's Daniel BostwickA Brief History of Input Devices with Cantina's Daniel Bostwick
A Brief History of Input Devices with Cantina's Daniel Bostwick
Cantina
 
Mobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignMobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web Design
Cantina
 

More from Cantina (17)

Sketching for UX Designers
Sketching for UX DesignersSketching for UX Designers
Sketching for UX Designers
 
Demystifying the Design Process
Demystifying the Design ProcessDemystifying the Design Process
Demystifying the Design Process
 
Planning For design
Planning For designPlanning For design
Planning For design
 
Five Key Ingredients in Successful Mobile Projects
Five Key Ingredients in Successful Mobile ProjectsFive Key Ingredients in Successful Mobile Projects
Five Key Ingredients in Successful Mobile Projects
 
Delivering Responsive Design at Scale
Delivering Responsive Design at ScaleDelivering Responsive Design at Scale
Delivering Responsive Design at Scale
 
Design i/o - Creating Visual Interfaces for Digital Systems
Design i/o - Creating Visual Interfaces for Digital SystemsDesign i/o - Creating Visual Interfaces for Digital Systems
Design i/o - Creating Visual Interfaces for Digital Systems
 
Intro to facade
Intro to facadeIntro to facade
Intro to facade
 
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitChoices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
 
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive RetrofitChoices for Responsive Redesign: Ground-up or Responsive Retrofit
Choices for Responsive Redesign: Ground-up or Responsive Retrofit
 
Introduction to Reactive
Introduction to ReactiveIntroduction to Reactive
Introduction to Reactive
 
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
Utilizing Lean Practices in the Enterprise: Part 1 of Delivering the Connecte...
 
Demystifying Content Strategy: Part 2 of Delivering the Connected Experience
Demystifying Content Strategy: Part 2 of Delivering the Connected ExperienceDemystifying Content Strategy: Part 2 of Delivering the Connected Experience
Demystifying Content Strategy: Part 2 of Delivering the Connected Experience
 
Domain-Driven Design: Part 4 from Delivering the Connected Experience
Domain-Driven Design: Part 4 from Delivering the Connected ExperienceDomain-Driven Design: Part 4 from Delivering the Connected Experience
Domain-Driven Design: Part 4 from Delivering the Connected Experience
 
The Need For Speed: Part 5 of Delivering the Connected Experience
The Need For Speed: Part 5 of Delivering the Connected ExperienceThe Need For Speed: Part 5 of Delivering the Connected Experience
The Need For Speed: Part 5 of Delivering the Connected Experience
 
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
Designing the Connected Experience: Part 3 from Delivering the Connected Expe...
 
A Brief History of Input Devices with Cantina's Daniel Bostwick
A Brief History of Input Devices with Cantina's Daniel BostwickA Brief History of Input Devices with Cantina's Daniel Bostwick
A Brief History of Input Devices with Cantina's Daniel Bostwick
 
Mobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web DesignMobile Monday Presentation: Responsive Web Design
Mobile Monday Presentation: Responsive Web Design
 

Recently uploaded

Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Sparity1
 
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple StepsSeamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Estuary Flow
 
NYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdfNYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdf
AUGNYC
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
Roshan Dwivedi
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
Task Tracker
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
DNUG e.V.
 
Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.
shivamt017
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
miso_uam
 
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
ThousandEyes
 
Migrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS CloudMigrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS Cloud
Ortus Solutions, Corp
 
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
SimonedeGijt
 
Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
908dutch
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
TwisterTools
 
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdfResponsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Trackobit
 
Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
sudsdeep
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
Mindfire Solution
 
Break data silos with real-time connectivity using Confluent Cloud Connectors
Break data silos with real-time connectivity using Confluent Cloud ConnectorsBreak data silos with real-time connectivity using Confluent Cloud Connectors
Break data silos with real-time connectivity using Confluent Cloud Connectors
confluent
 
MVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptxMVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptx
Mitchell Marsh
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
sofiafernandezon
 
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTIONBITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
ssuser2b426d1
 

Recently uploaded (20)

Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptxAddressing the Top 9 User Pain Points with Visual Design Elements.pptx
Addressing the Top 9 User Pain Points with Visual Design Elements.pptx
 
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple StepsSeamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple Steps
 
NYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdfNYC 26-Jun-2024 Combined Presentations.pdf
NYC 26-Jun-2024 Combined Presentations.pdf
 
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
FAST Channels: Explosive Growth Forecast 2024-2027 (Buckle Up!)
 
Attendance Tracking From Paper To Digital
Attendance Tracking From Paper To DigitalAttendance Tracking From Paper To Digital
Attendance Tracking From Paper To Digital
 
dachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdfdachnug51 - All you ever wanted to know about domino licensing.pdf
dachnug51 - All you ever wanted to know about domino licensing.pdf
 
Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.Shivam Pandit working on Php Web Developer.
Shivam Pandit working on Php Web Developer.
 
Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)Software development... for all? (keynote at ICSOFT'2024)
Software development... for all? (keynote at ICSOFT'2024)
 
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
Cisco Live Announcements: New ThousandEyes Release Highlights - July 2024
 
Migrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS CloudMigrate your Infrastructure to the AWS Cloud
Migrate your Infrastructure to the AWS Cloud
 
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptxWired_2.0_Create_AmsterdamJUG_09072024.pptx
Wired_2.0_Create_AmsterdamJUG_09072024.pptx
 
Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …Prada Group Reports Strong Growth in First Quarter …
Prada Group Reports Strong Growth in First Quarter …
 
What is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for FreeWhat is OCR Technology and How to Extract Text from Any Image for Free
What is OCR Technology and How to Extract Text from Any Image for Free
 
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdfResponsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdf
 
Splunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptxSplunk_Remote_Work_Insights_Overview.pptx
Splunk_Remote_Work_Insights_Overview.pptx
 
Cultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational TransformationCultural Shifts: Embracing DevOps for Organizational Transformation
Cultural Shifts: Embracing DevOps for Organizational Transformation
 
Break data silos with real-time connectivity using Confluent Cloud Connectors
Break data silos with real-time connectivity using Confluent Cloud ConnectorsBreak data silos with real-time connectivity using Confluent Cloud Connectors
Break data silos with real-time connectivity using Confluent Cloud Connectors
 
MVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptxMVP Mobile Application - Codearrest.pptx
MVP Mobile Application - Codearrest.pptx
 
ENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentationENISA Threat Landscape 2023 documentation
ENISA Threat Landscape 2023 documentation
 
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTIONBITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
BITCOIN HEIST RANSOMEWARE ATTACK PREDICTION
 

Software is not a Building - Designing Technical Architecture for Change

  • 1. SOFTWARE ISN’t a building Designing technical architecture for change by: David Fox, Director of Technical Architecture Design
  • 2. agenda • Buildings vs So!ware • Tension Between Malleability and Complexity • Barriers to Change in So!ware and Their Solu"ons
  • 3. Architects All they do is draw boxes and lines on whiteboards. Who needs them?
  • 8. “If you pick any one aspect of so!ware then you can make it easy to change…making everything easy to change makes the en"re system very complex. Complexity is what makes so!ware hard to change.” Ralph Johnson speaking with Mar"n Fowler - “Who Needs an Architect?” h#p://mar"nfowler.com/ieeeSo!ware/whoNeedsArchitect.pdf
  • 9. Barriers to change • Lack of Design • Coupling • Invasive APIs • Dehydra"on • Infrastructure Investments • Team • Technical Debt
  • 10. LACK OF DESIGN Turns out you do need that architect designer
  • 11. DESIGN SYMPTOMS • “Let’s just use Framework X” before star"ng to think about design • “Let’s just start coding” • No clear design leader(s)/ownership • Developers le! to decide on components without overall direc"on • Ge#ng bogged down in details
  • 12. DESIGN RECOMMENDATIONS • Developers must have some idea of the overall design before coding begins • Team must agree on design and be aware of general design and roles of components • Work “outside in”. Use the walking skeleton. • Designer(s) must work with the team throughout development and review work directly to ensure design is being followed • Choose frameworks based on your architecture, not the other way around
  • 14. Connascence • So!ware quality metric and taxonomy of coupling • Used by Meilir Page-Jones in ACM ar"cle “Comparing Techniques by Means of Encapsula"on and Connascence” in 1992 • Expanded in “What every programmer should know about object-oriented design” in 1996 • Visit h$p://connascence.io for more info
  • 15. Connascence • Name • Type • Meaning • Posi"on • Algorithm • Execu"on • Timing • Values • Iden"ty • Strength • Locality • Degree Connascences Proper!es Image source: http://connascence.io/locality.html
  • 16. Coupling recommendations • Iden"fy strong connascence and refactor to weak wherever possible • Boundaries between components, par"cularly foreign APIs, are essen"al • Adding layers does add (some) complexity, but: • Reveals intent in the ubiquitous language of the domain • Eases re-implementa"on of components • Improves testability • Learn and follow good prac"ces, such as SOLID
  • 17. Invasive APIs and leaky abstrac"ons
  • 18. INVASIVE API SYMPTOMS • Dependencies on implementa"on reach up through layers • Specialized implementa"on types are exposed in APIs • Custom types are used when simple, built-in types would suffice • Infrastructure is needed in other layers to support a leaky abstrac"on
  • 19. INVASIVE API recommendations • Always put boundaries between your domain and foreign APIs • Translate data structures at boundary • Ensure core of domain remains pure and free of external dependencies • Use standard types that don’t require clients to import implementa"on details • Prefer libraries that use open standards • Unless the infrastructure really is transparent, favor designs where boundaries are enforced, and don’t leak outside the component • Prefer external mapping or configura"on over annota"ons
  • 20. Dehydration There is such a thing as too DRY
  • 21. Dehydration SYMPTOMS • Confla"ng persistence, domain, and presenta"on concerns • “One Big Model” • Sharing code between models in separate contexts • Func"ons used by mul"ple clients contain special cases specific to those clients
  • 22. Dehydration RECOMMENDATIONS • Don’t try to be DRY at the cost of strong coupling • Denormaliza"on is OK • Consider the true impact of eventual consistency • Separate aspects of models into bounded contexts • If a model is suppor"ng mul"ple concerns, and has code specific to those use cases, it’s a sign mul"ple models might help, even if they end up being very similar • It’s OK to have similar code in mul"ple places, especially separate modules
  • 23. Infrastructure investments We already paid for the support contract!
  • 24. investments symptoms • We already bought the license to “Database X”, so we have to use that • All our code is wri$en to use “Middleware Y”, so it’s hard to change • We already hired our team for their experience with “Framework Z”
  • 25. investments recommendations • Wait un"l the “last responsible moment” to decide on specific technology investments • “Fake it un"l you make it” to put off implementa"on of components un"l all requirements are known • Design in terms of classes of technology rather than specific technologies • Prefer libraries over large, invasive frameworks - and/or - • Segregate implementa"ons using boundaries • Prefer open-source so!ware
  • 26. Team
  • 27. TEAM SYMPTOMS • Our developers only know “Framework X” • Our developers aren’t sophis"cated enough to use “Technology Y” • Developers don’t want to learn how to write SQL correctly • The front-end team is responsible for that • We have to run all updates through the database team • Only Steve knows that par"cular part of the code
  • 28. TEAM recommendations • Invest in and encourage training in broad skill areas, not just technologies • Structure teams so that more experienced engineers work on design and modeling with less-experienced engineers • Less experienced engineers review more experienced engineers’ code • Push engineers to become more full-stack • Don’t choose technologies only based on “what the team knows”
  • 29. “organiza"ons which design systems ... are constrained to produce designs which are copies of the communica"on structures of these organiza"ons” Melvin Conway
  • 30. TEAM recommendations • Base designs on the problem domain, not team structure, and shape the team around it • Group developers based on bounded contexts and func"onality, not applica"on layers or technologies • Create smaller mul"-disciplinary teams • Allow for direct communica"on between groups • Integrate constantly
  • 31. Technical Debt Adding features no ma$er what the cost
  • 32. Technical Debt SYMPTOMS • Velocity isn’t nearly what it was when the project began • We have to add features, there’s no "me to refactor • This part of the code is a mess! We need to rewrite it • We can refactor that code without breaking something
  • 33. Technical Debt recommendations • Pay down technical debt as you go • If you must defer paying down debt to complete features, try: • Refactor just enough to add a feature without incurring more debt (“the Boy Scout Rule”) • Have a “cleanup” phase a!er the feature push • Ensure that there are tests in place so refactoring can be done regularly and with confidence • Prescrip"ve refactoring over “rewrites”. If you make it part of development, it isn’t “extra expense”.
  • 34. LACK OF DESIGN Do overall design up front and empower leaders to guide developers in implementa"on.
  • 35. COUPLING Learn about connascence, reduce strong to weak, and add boundaries to segregate components.
  • 36. INVASIVE APIS Translate 3rd party APIs into your domain model and add boundaries to prevent leaky abstrac"ons.
  • 37. DEHYDRATION Sacrifice DRYness if it reduces coupling. Split up large models by bounded contexts. Reduce scope of shared dependencies.
  • 38. INFRASTRUCTURE Wait un"l the “last responsible moment” and “fake it un"l you make it” to ensure procurements reflect actual needs
  • 39. TEAM Invest in your team knowledge. Increase communica"on. Your team structure is your architecture.
  • 40. TECHNICAL DEBT Pay it down as you go so it doesn’t grow out of control. Refactoring is not rewri"ng and is part of development.
  • 41. evolving architecture How Buildings Learn: What Happens A!er They're Built By: Stewart Brand
  • 42. About cantina • Boston-based digital design and development agency • Founded in 2007, 60+ employees • We help clients like Putnam Investments, John Hancock, CUNA Mutual Group, Epsilon, and Pearson deliver be$er digital products for their customers • Can"na’s people turn great ideas into digital reality, execu"ng with the best design and development techniques available
  • 44. References • “Who Needs an Architect?”
 h$p://mar"nfowler.com/ieeeSo!ware/whoNeedsArchitect.pdf • What Every Programmer Should Know About Object-Oriented Design
 h$p://www.amazon.com/Every-Programmer-Should-Object-Oriented-Design/ dp/0932633315/ref=sr_1_1?qid=1446730637 • Connascence
 h$p://connascence.io • How Buildings Learn: What Happens A!er They're Built
 h$p://www.amazon.com/How-Buildings-Learn-Happens-Theyre/dp/ 0140139966
  • 45. References • Growing Object-Oriented So!ware, Guided by Tests
 h$p://www.amazon.com/Growing-Object-Oriented-So!ware-Guided-Tests/dp/ 0321503627/ref=sr_1_1?s=books&ie=UTF8&qid=1446730723