Technology and Programming Culture

Post on 11-Jun-2015

203 views 1 download

Tags:

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