Function, Functionality, Functionalism
The requirements of economy
Useless work on useful things
The minimum condition
Form eschews function
Feeble and ugly
Functionalism can be a kind of religion
Each element performs many functions
The informing idea of functionalism
Same name in the same basket
The plan must anticipate all that is needed
The element becomes a sign
Classical absurdity
205. Structure Follows Social Spaces
Roaming and capricious
What are those borders made of?
Presentable
A strangely negative character
Sine qua non
The contribution that something in them yet compelled them to make
Something more is required
Mechanisms and organisms
The center of the way
The Evolution of Useful Things
The usages of life
Form follows function
Against form follows function
UI and Capability
Embracing design constraints
An Article by Adrian RoselliConstraints have been shown to generally improve innovation. Giving targets and parameters helps ensure a team is working in unison. Identifying what is out of bounds can further focus that team.
A Plea for Lean Software
An Essay by Niklaus WirthSoftware's girth has surpassed its functionality, largely because hardware advances make this possible. The way to streamline software lies in disciplined methodologies and a return to the essentials.
Beauty in flight
A QuoteAll of us had been trained by Kelly Johnson and believed fanatically in his insistence that an airplane that looked beautiful would fly the same way.
— Ben Rich, Skunk Works
Deadlines are bullshit
In software development deadlines are a necessary evil. It is important to understand when they are necessary, and it is important to understand why they are evil.
- External vs. internal deadlines
- Why are internal deadlines evil?
- Engineers who love their work
External vs. internal deadlines
When are deadlines necessary?
- Contractual obligations
- Technical liabilities (e.g., dependency EOL)
- Compliance, government, investors, and other external stakeholders
What do all of these deadlines have in common? They are all important. They are all deadlines that cannot be missed. They are all external.
When are deadlines evil?
- Your manager says you have a deadline
- Your software development methodology says you have deadlines
What do all of these deadlines have in common? None of them are important. They are arbitrary. They are all internal. They are all bullshit.
Why are internal deadlines evil?
- Estimation: When estimating engineering work a substantial time investment is required by an engineer in order to get an accurate estimate.
- Misaligned Incentives: There is an incentive to lie and give estimates much longer than the feature is truly expected to take.
- Low Morale: Deadlines are likely to be missed often. Repeated failure has a cost to the morale of the team.
- Micromanagement: Deadlines are wielded by middle managers as a whip to harass and annoy engineers working on features.
- High Stress: When engineers feel the pressure of other stakeholders holding deadlines over their heads it creates an environment of high stress.
- High Turnover: On teams with high turnover rates the best engineers have an easy time finding new work and leave quickly, the worst engineers have a difficult time finding work and remain. This selects for a lower quality team over time.
Engineers who love their work
The resolution is simple. Never have internal deadlines. Operate on a prioritized and ordered list of features. Estimate only when necessary to prioritize and do so in a t-shirt sizing way. Trust your engineers and they will begin to love their work. Engineers who love their work are happy and productive.