A change in perspective

38
A change in perspective Gustavo Giráldez & Santiago Palladino

Transcript of A change in perspective

Page 1: A change in perspective

A change in perspectiveGustavo Giráldez & Santiago Palladino

Page 2: A change in perspective

xkcd #353

Page 3: A change in perspective

Learning, rather than solving, is the measure of exhilaration

Rock-Paper-Shotgun, A Good Puzzle Game Is Hard To Build, 2015

Page 4: A change in perspective

Indie Dev Stories, Game Theory Applied: the puzzle of designing a puzzle game, 2012

Puzzles are essentially problem solving tasks. And these kinds of tasks are

appealing to our human brains.

Page 5: A change in perspective

Jaime Zawinski, Coders at Work, 2009

[I enjoy] the problem-solving aspect of [programming], I guess. Just figuring out how to get from point A to point B— how to make the machine do what you want. That’s the basic element that the satisfaction of programming

comes from.

Page 6: A change in perspective

Rock-Paper-Shotgun, A Good Puzzle Game Is Hard To Build, 2015

A good puzzle is elegant and often minimal.

A puzzle should know what the point is, what it’s trying to illustrate to you.

Page 7: A change in perspective

Rock-Paper-Shotgun, A Good Puzzle Game Is Hard To Build, 2015

When I’m excited playing puzzle games it’s because each new puzzle is

forcing me to understand something new about the mechanics of the world

I’m taking part in.

Page 8: A change in perspective

Rock-Paper-Shotgun, A Good Puzzle Game Is Hard To Build, 2015

If you can go through the motions and apply the same sort of thought process and solve every level, then, that can be

engaging, but I don’t think it’s very interesting.

Page 9: A change in perspective

Alan Kay, Talk at Creative Think Seminar, 1982

A change in perspective is worth 80 IQ points

Page 10: A change in perspective

Simon Peyton Jones, Coders at Work, 2009

The most depressing thing about life as a programmer is if you’re faced with a chunk of

code that either someone else wrote or, worse still, you wrote yourself but you no longer dare

to modify. That’s depressing.

Page 11: A change in perspective

Brad Fitzpatrick, Coders at Work, 2009

Maybe there are so many layers of abstraction that people don’t know what the hell is going on underneath because the computers

are so damn fast that it hides your stupidity.

Page 12: A change in perspective

Simon Peyton Jones, Coders at Work, 2009

Systems are filled with so much goop [...] And each of them has a fat book that describes it. There’s a lot of stuff you need to just have in your head. It’s like learning a language—a

human language—there’s a large vocabulary. For me, that’s no fun.

Page 13: A change in perspective

Simon Peyton Jones, Coders at Work, 2009

I really think [programming] is a funny medium because it’s so malleable. You can do

virtually anything with it. But that means you can build ugly things as well as beautiful things

and things that will be completely unmaintainable and un-durable.

Page 14: A change in perspective

Edsger W. Dijkstra, How do we tell truths that might hurt, 1975

Simplicity is prerequisite for reliability.

Page 15: A change in perspective

Tony Hoare, The Emperor’s Old Clothes, Turing Award Lecture, 1980

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that

there are no obvious deficiencies. The first method is far more difficult.

Sir

Page 16: A change in perspective

Rich Hickey, RailsConf 2012 Keynote Speech, 2012

Simplicity is hard work. But, there's a huge payoff. The person who has a genuinely simpler system - a system made out of

genuinely simple parts, is going to be able to affect the greatest change with the least work.

He's going to kick your ass.

Page 17: A change in perspective

Easy

Near to our understandingFamiliarRelative

Subjective

Rich Hickey, Simple made easy, Strange Loop conference, 2011

Simple

One fold, one role, one taskAbout lack of interleaving,

not lack of cardinality

Objective

Page 18: A change in perspective

Simon Peyton Jones, Coders at Work, 2009

Unless some people are working on radical and elegant things you’re going to end up in a

local optimum, incrementally optimizing the mainstream but stuck on a low hill.

Page 19: A change in perspective

Paul Graham, Beating the Averages, 2001

The Blub Paradox

Page 20: A change in perspective

Ben Moseley, Peter Marks, Out of the tar pit, 2006

Power corrupts. [...] The more powerful a language (i.e. the more that is possible within the language), the harder it is to understand

systems constructed in it.

Page 21: A change in perspective

John Carmack, 2001

If you're willing to restrict the flexibility of your approach, you can almost always do something

better.

Page 22: A change in perspective

Peter Deutsch, Coders at Work, 2009

Every programming language today that I can think of, that’s in substantial use, has the

concept of pointer. I don’t know of any way to make software built using that fundamental

concept qualitatively better.

Page 23: A change in perspective

Joe Armstrong, Coders at Work, 2009

The problem with object- oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a

banana but what you got was a gorilla holding the banana and the entire jungle.

Page 24: A change in perspective

John Carmack, Twitter, 2011

Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a

framework. Just a function.

Page 25: A change in perspective

Simon Peyton Jones, Coders at Work, 2009

Functional programming has a lot to offer. Fundamentally it enables you to build more

robust structures. Structures that are easier to comprehend and test and reason about.

Page 26: A change in perspective

Michael Feathers, Twitter, 2010

Object oriented programming makes code understandable by encapsulating moving parts.

Functional programming makes code understandable by minimizing moving parts.

Page 27: A change in perspective

Rich Hickey, “Clojure, made simple”, 2015

Our fundamental construct, the object, conflates two things, it doesn’t give us two separate ways to talk about processes, for

which objects are an OK approach, and information, for which they are a terrible

approach.

Page 28: A change in perspective

Rich Hickey, The Value of Values, 2012

All that specificity kills your reuse

Page 29: A change in perspective

Alan Perlis, Epigrams on Programming, 1982

It is better to have 100 functions operate on one data structure than 10

functions on 10 data structures.

Page 30: A change in perspective

Rich Hickey, The Value of Values, 2012

What is a Fact? Place where information is stored. There is a place for every bit of

information. Facts have operations, e.g. get and set. Operations control how facts can

change. To convey a fact, convey its location.</sarcasm>

Page 31: A change in perspective

Rich Hickey, “Clojure, made simple”, 2015

We are the stewards of the world’s information. And information is just data. Is not a complex thing. Is not an elaborate thing. It’s a

simple thing, until we programmers start touching it.

Page 32: A change in perspective

Tomek Borek, Why bother with FP?, Lambda Days, 2015

Papers: YesStudies: No

Page 33: A change in perspective

Kernighan and Ritchie, The C Programming Language, 1978

The only way to learn a new programming language is by writing programs in it.

Page 34: A change in perspective

Brad Fitzpatrick, Coders at Work, 2009

You never learn something until you have to write something in it, until you have to live and breathe it. It’s one thing to go learn a language for fun, but until you write some big, complex

system in it, you don’t really learn it.

Page 35: A change in perspective

Alan Kay, Meeting at PARC, 1971

Don't worry about what anybody else is going to do. The best way to predict the future is to

invent it.

Page 36: A change in perspective

Simon Peyton Jones, Coders at Work, 2009

Part of what makes programming fun is trying to write programs that have an intellectual

integrity to them. I think a good attribute of a good programmer, is they try to find a beautiful

solution.

Page 37: A change in perspective

R. Buckminster Fuller, 1895-1983

When I am working on a problem I never think about beauty. I think only how to solve the problem. But when I have finished, if the

solution is not beautiful, I know it is wrong.