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
Coder
Programmer
Developer
Engineer
Creator
Maker
+ 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

Sacrificing the golden calf of "coding"