sacrificing the golden calf of "coding"

68
Chris Heilmann (codepo8), Halfstack, London, November 2017

Upload: christian-heilmann

Post on 22-Jan-2018

421 views

Category:

Education


4 download

TRANSCRIPT

Chris Heilmann (codepo8), Halfstack, London, November 2017

Chris Heilmann @codepo8

twitter.com/codepo8/status/922380136531537921

Machine Learning and AI is hot.

Automation worries everybody

http://wumo.com/wumo/2017/10/28

nytimes.com/2017/11/05/technology/machine-learning-artificial-intelligence-ai.html

The heat is on…

Blanket solution:

Everybody must learn how to code.

Let’s rewind for a bit…

The Future of Programming

worrydream.com/dbx

Bret Victor@worrydream

To me, coding was a demo scene term.

Coding in the demo scene:

Programming in a creative fashion, pushing the boundaries of limited environments

+ performance+ cleverness+ inventiveness- maintainability- readability

CoderProgrammerDeveloperEngineerCreatorMaker

+ maintainability+ readability~ cleverness~ performance- inventiveness

The curious case of Benjamin a Button

Story time:

Professional development:

“Wow, how did you do that?”

“Have you finished this?”to:

Moving from

Personalised development environment, tooling and code snippets.

The developer level-up:

We’re good at inventing and advocating best practices…

Less so at using them…

Why is that?

People are people…

People don’t always upgrade like we’d love them to. This means we need support old, terrible ideas.

The legacy problem:

Browsers have to favour the end user and protect them from programmer mistakes. Lazy developers see that as a carte blanche.

The protect the user problem:

If how we do things isn’t as appreciated as how fast it is done, we find ways to automate our work.

The development appreciation gap:

Writing Perl/CGI (1997 edition)

1. Get a client request

2. Go to Matt’s Script Archive

3. Download something

4. Change things until it resembles what the client wants and stops breaking with a 500 (chmod 777 if in doubt)

5. Invoice, hide under rock

How do we find appreciation?

We talk on dedicated channels to those “in the know”.

Fixing code…1. Create an available version of your code

(codepen, gist, jsbin, jsfiddle…)

2. Go to Stackoverflow and post your problem

3. Abandon all hope of getting a straight answer

4. Get well versed in filtering out feedback on various levels of dysfunctional human communication

5. Find the answer in the maelstrom of “just use $x” or “well, actually…”

Fixing code (pro edition)

1. Go to Stackoverflow

2. Describe your coding problem with an obviously wrong solution and call it a best practice

3. Get popcorn

4. Follow the moshpit of ideas and biases

5. Find the one good solution that crops up

We’re better at doing than at explaining needs and values.

How do we find happiness?

We collect and describe reusable code and patterns.

We package reusable code and patterns up in frameworks, libraries, tooling and processes.

The digital hoarding scenario:

Generic, reusable solutions are bigger codebases and have more computational overhead.

The digital hoarding problem:

More tools and processes to strip the overhead before shipping to the end user.

The digital hoarding solution:

Have we raised the bar too high for people starting new?

twitter.com/ben_howdle/status/930012526628110337

twitter.com/TheLarkInn/status/930320292399820800

Are we teaching ways that we know and worked for us, but are outdated?

We have amazing tooling and helpers at our disposal!

Browsers come with excellent development and debugging tools.

Editors are open, extensible and integrate with our workflows and environments

vscodecandothat.com

We have collaborative editing and education tools.

code.visualstudio.com/blogs/2017/11/15/live-share

codepen.io

jsbin.com

glitch.com

Linting and validation tools tell us what to fix – even as a continuous integration step.

sonarwhal.com

Everything counts in large amounts

Our users* have much more capable devices with higher computation power than in the past.

A changed world:

* The affluent and local ones our investors and our sales and marketing departments care about.

The technologies we have at our disposal are complex and have higher computation demands.

A changed world:

We now have a larger distance between code creation and execution, with optimisation steps in between.

Rolling with the punches:

The business demands on our creations are about fast delivery and constant innovation. This demands re-use and automation.

Rolling with the punches:

With increased complexity and demand, any software product will sooner or later use pre-built components.

The natural software evolution:

More tools and processes to strip the overhead before shipping to the end user.

The digital hoarding solution:

This flows over into the design space. Style guides, pattern libraries.

The problem is that humans are sloppy and clumsy.

This increases with boredom and a demand to do repetitive tasks.

This is where programs and automated tools shine.

autodraw.com

quickdraw.withgoogle.com

letsenhance.io

letsenhance.io

airbnb.design/sketching-interfaces

We built an initial prototype using about a

dozen hand-drawn components as training

data, open source machine learning

algorithms, and a small amount of

intermediary code to render components

from our design system into the browser.

We built an initial prototype using about a dozen hand-drawn components as training data, open source machine learning algorithms, and a small amount of intermediary code to render components from our design system into the browser. We were pleasantly surprised with the result:

airbnb.design/sketching-interfaces

We built an initial prototype using about a

dozen hand-drawn components as training

data, open source machine learning

algorithms, and a small amount of

intermediary code to render components

from our design system into the browser.

airbnb.design/sketching-interfaces

Questioning the dogma:

Everybody must learn how to code.

Questioning the dogma:

Everybody must learn how to solve problems.

twitter.com/idiot_girl/status/930567111868669952

Moving from the “how” to the “why”.

twitter.com/kurtiskemple/status/930419045769318400

Let’s focus more on the human, and less on trying to be machines. We won’t win this race.

Chris Heilmann

@codepo8