technology and programming culture
DESCRIPTION
This presentation compares technology and programming to design and discusses the similarities and differences.TRANSCRIPT
Technology & Programming Culture
Philip van Allen
Similarities to Design
Photo: CorbisThere is a beauty to quality engineering and technology
It’s Creative
It’s Creative
There’s no single solution
You invent your own worlds
It can be deeply satisfying
Good work takes time
Not purely analytical
It’s About Making
http://wearemakers.orgIteration is a huge part of technologyImportance of prototypingInstead of relying on others to make it work, you make it workParts of it can be like refined kerning and layout, highly detailed
It’s About Making
You are creating new things
There’s a design process
You are empowered
Some of the work is detailed
Mastery is very satisfying
http://wearemakers.orgIteration is a huge part of technologyImportance of prototypingInstead of relying on others to make it work, you make it workParts of it can be like refined kerning and layout, highly detailed
http://wearemakers.org
The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn. ~Alvin To"ler
It’s a Practice You Learn
Tech is a discipline like design, it’s not just an application to useIt takes time and study to become expert at technology
The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn. ~Alvin To"ler
It’s a Practice You Learn
Tech concepts take time to understand
There’s no quick fix
You develop a feel for it over time
You have to practice
Failure is a key part of learning
Tech is a discipline like design, it’s not just an application to useIt takes time and study to become expert at technology
Differences from Design
Image by Corbis
A Description, Not the Thing
Code is a description of the thing, not the thing itselfIt’s less intuitive, more analyticalYou have to learn to imagine and visualizeYou have to understand and manage the complexity explicitlyDo lots of experiments to understand how the machine worksEmpathize with, and even “be” the machineopenSCAD examples
A Description, Not the Thing
You can’t see it
The machine interprets your instructions
Interaction/time element
It’s more abstract
Precise, predictable, manipulable
Code is a description of the thing, not the thing itselfIt’s less intuitive, more analyticalYou have to learn to imagine and visualizeYou have to understand and manage the complexity explicitlyDo lots of experiments to understand how the machine worksEmpathize with, and even “be” the machineopenSCAD examples
It’s Interactive
•Rules, logic, behavior•You lose control and give it to the user - a different position for the designer•Interaction happens through time, so you must actually use the system to “see” it. This is what makes critiquing interactive work difficult.
It’s Interactive
You are defining the logic/behavior
A life of its own emerges
You are building systems
Users make it do what they want
•Rules, logic, behavior•You lose control and give it to the user - a different position for the designer•Interaction happens through time, so you must actually use the system to “see” it. This is what makes critiquing interactive work difficult.
Failures are Different
•mistakes can mean nothing works •a mistake can also mean that it does something completely different•bugs can be hard and take days to fix•precision is important•openSCAD semi-colon, union vs. difference
Failures are Different
Machines are really dumb and unforgiving
Mistakes (even small ones) o!en result in catastrophic failure
Debugging is a skill to develop
“That’s not a bug, it’s a feature!”
•mistakes can mean nothing works •a mistake can also mean that it does something completely different•bugs can be hard and take days to fix•precision is important•openSCAD semi-colon, union vs. difference
More Planning and Testing
http://www.todaysengineer.org/2012/Nov/Agile.asp•do the most important features first•there's a big difference between the point of initial success and something presentable•once it is running, you have much to learn - this is only a starting point•software and hardware are very fragile•EXAMPLE: computer goes to sleep•Test with different people - not just you•the user does something slightly different than you anticipated - your path through your project is not the only path
More Planning and Testing
Prioritize features
Just because it “works” does not mean it’s finished
Technology is fragile
Plan for lots of testing
http://www.todaysengineer.org/2012/Nov/Agile.asp•do the most important features first•there's a big difference between the point of initial success and something presentable•once it is running, you have much to learn - this is only a starting point•software and hardware are very fragile•EXAMPLE: computer goes to sleep•Test with different people - not just you•the user does something slightly different than you anticipated - your path through your project is not the only path
Code is Powerful
openSCAD example creating multiple objects
Code is Powerful
It’s algorithmic
If you can do it once, you can do it again with variations
Small changes can have big e"ects
Designing form, behaviors, interactions, systems
Code is reusable
openSCAD example creating multiple objects