Armagan Amcalar
Head of Software Engineering @ unu GmbH
Founder @ Lonca Works
dashersw dashersw
dashersw
organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.
— Melvin Conway, 1968
dashersw
Why do we need code?
Why do we need high level languages?
Why do we need software architecture?
dashersw
Auto discovery
Zero-configuration
Highly-redundant
Fault-tolerant
Self-healing
And modular systems
This is actually how systems are built for ages
Microservices enforce decoupling
dashersw
dashersw
Individual development
Individual technology choices
Individual builds
Individual deployments
Individual scaling
... see a pattern?
dashersw
dashersw
dashersw
If Millennials are not a part of the process of input and forward thinking, they are most likely to disengage from the workplace and find meaning elsewhere.
Millennials seek work that is meaningful and solidifies their self-efficacy. Rather than meaningful work, millennials’ sense of self and self-efficacy makes them less stressed or fearful of changing jobs or building safety nets.
dashersw
They can't be bound by the earlier decisions of others
Require extreme autonomy
Independence, freedom, ownership
"My success doesn't depend on your success"
"I want to grow. I can't wait for you."
Fear of missing out
A good architecture makes the system easy to change, in all the ways that it must change, by leaving options open.
Teams do not interfere with each other during development.
Partitioning the system into well-isolated, independently developable components
Those components are allocated to teams that can work independently of each other.
dashersw
source: Clean Architecture: A Craftsman's Guide to Software Structure and Design — Robert C. Martin
Observe your team's psychology and build for that
Create space and infrastructure for autonomy
Double down on communication
dashersw
It's a collaboration solution that improves efficiency by decoupling communication from implementation
dashersw
You don't need scrum masters or project managers to facilitate communication
Get the right team setup, give the right ownership
Define and document areas of responsibility
Document public interfaces and functionality
Leave no room for interpretation and frustration
dashersw
Abolish responsibilities based on layers of a system:
the UI, the business logic, the database, the infrastructure
Distribute product / feature responsibilities
A team / developer is responsible for a thin slice through all layers
Immense chance for full-stack developers
This is why JavaScript is so popular with Gen Y
dashersw
organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.
dashersw
— Melvin Conway, 1968
source: How Do Committees Invent?
Armagan Amcalar