Scale: how America competed on precision and interchangeability in manufacturing in the late 1800s. Created a new kind of industrial worker and a new kind of ingenious designer-entrepreneur. Colt, Singer, Eli Whitney are some of the famous names from that era. It reached a peak with Taylor in 1919. It created a class hierarchy: between interchangeable and non-interchangeable workers. Craftsmen turned into Design Engineers and Technicians.
Homeless person looking for CTO phenomenon. There are interchangeable and non-interchangeable programmers.
Put a pin in this thought that everybody provides lip service to.
Similar quotes: quash one bug, two new ones are created. Reading code is harder than writing code.
In manufacturing, if a process isn’t being hacked and improvised constantly, it will actually not work at all. Same holds in s/w but 10x more.
It comes down to culture being about 10x more importance than governance, and I am only going to talk about a small part of culture today: narrative and archetypes.
Every age has its archetypes of work. This one is apparently
Artists are process improvement mavens, not process bureaucrats. Which means they often don’t care about their subject. If an artist finds no subject, he will paint his cup of brushes or turpentine bottle.
Torvalds: Git, Knuth: TeX, Ritchie/Thompson: Unix/C, Joel Spolsky,
What are we building FOR? How should it be structured in relation to what it deals with? What does the stuff it processes MEAN? Many s/w development philosophies assume that software is being built for the stated purpose in whatever management scheme you use. NO, software engineering is like a forest that can yield solutions to your goals as one of the outcomes, but there is a good chance it will be a minor outcome. This is like a machine tool where every machined part results in the machine retooling itself to be better.
If you are managing a development effort to produce a spreadsheet say, and you assume that the jungle of code and programmers is there just to serve that one purpose, you are going to destroy things. It will produce that spreadsheet, but don’t make it do so too efficiently. It also does other things you may not be aware of. Explore new programming models, produce new patterns and tools.
Breathing Data, Competing on Code
Breathing Data, Competingon Code ^mostly this Venkatesh Rao ribbonfarm.com firstname.lastname@example.org February 22, 2012
Software is eating the world and every industry is beingdissolved, disaggregated, disrupted and de-engineered inan acid rain downpour of Big Data and Free Agencycoming down from CLOUDS that are forming via DATAevaporation from a world that is an ocean of sensors, and Windows PhoneiPhone and Android apps and untamed social streams of ^Facebook life, and when the Internet of Things happensand it is all connected up into a single giant softwareapplication a Chinese virus will mutate into a self-improving AI and the Internet will become SENTIENT andTAKE OVER ALL THE DRONES the whole pile of crap willcollapse under its own weight and KILL US ALL.
technical debt is growing fasterworldwide than it is being paid off
Everyone knows that debugging is twice ashard as writing a program in the first place. -- Brian Kernighan
Action Item #1 listen to this talk by Alan Kay immediately http://tele-task.de/archive/lecture/overview/5819/
people over processthis principle is notgenerally wise outside ofsoftware engineering
enlightened governance with awise policy of exceptions andcustomization of processes tospecific situations
rational governance with a wisepolicy of exception managementand customization of processesto specific situations principles of forgiveness
great engineers ask for forgiveness,not permission This is a meaningless bromide if you always forgive or never forgive principles of forgiveness are about when you forgive if you get them wrong something far worse than rule-breaking will happen
perfect rule followingWork-to-rule: an industrial action in which employees do no more thanthe minimum required by the rules of their contract, and follow safetyor other regulations to the letter to cause a slowdown rather than toserve their purpose.http://en.wikipedia.org/wiki/Work-to-rule
sprint tempo burndown chartsdaily standups code commentingtest-driven forking normsdevelopment working code over who decides when it is okay tousability testing documentationstandrds communication norms break which rules and why?version control dflss certificationsretrospectives code reviewuser story semantics meeting ritualsstory points tracking patent applicationsrequirements open source policiespair programming spiral development
the best guide to software archetypes canbe found within software culture itself
Contemporary culture is a two-tiered system, like theMorlocks and the Eloi in H.G. Wellss The TimeMachine, except that its been turned upside down. InThe Time Machine the Eloi were an effete upper class,supported by lots of subterranean Morlocks who kept thetechnological wheels turning. But in our world its theother way round. The Morlocks are in the minority, andthey are running the show, because they understandhow everything works.-- Neal Stephenson, In the Beginning was the Command Line
dwarves seek beauty don’t force them to do ugly
a good wizard makes you feelin charge a good wizard-wrangler realizes he is not
ninjas understand your ideasbetter than you do defer to their judgment
samurai prize honor and loyalty never stop fighting for them
elves understand magical realitiesthat are invisible to you do not disturb
the exceptional nature of softwareculture arises from the fact that softwareengineers build their own toolssoftware culture is guild-like
Action Item #2 read this book immediately http://tempobook.com
// end flattery and pandering// begin evil manipulation
the kind of knowledge required in suchendeavors is not deductive knowledgefrom first principles but…mētis…the kindof knowledge that can be acquired onlyby long practice at similar but notidentical tasks -- James Scott, Seeing Like a State
great programmers form asubculture based on mētis respect it
breathing data makes better strategybetter strategy makes better structurebetter structure means richer mētisricher mētis means better codebetter code means better companybetter company lets you eat rather than be eaten