Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sacrificing the golden calf of "coding"

641 views

Published on

Keynote at halfstackconf 2017 discussing the falsehood of the idea that in order to survive the automation evolution everybody needs to learn how to code. Machines can code, too.

Published in: Education
  • Be the first to comment

Sacrificing the golden calf of "coding"

  1. 1. Chris Heilmann (codepo8), Halfstack, London, November 2017
  2. 2. Chris Heilmann @codepo8
  3. 3. twitter.com/codepo8/status/922380136531537921
  4. 4. Machine Learning and AI is hot.
  5. 5. Automation worries everybody http://wumo.com/wumo/2017/10/28
  6. 6. nytimes.com/2017/11/05/technology/machine-learning-artificial-intelligence-ai.html The heat is on…
  7. 7. Blanket solution: Everybody must learn how to code.
  8. 8. Let’s rewind for a bit…
  9. 9. The Future of Programming worrydream.com/dbx Bret Victor @worrydream
  10. 10. To me, coding was a demo scene term.
  11. 11. Coding in the demo scene: Programming in a creative fashion, pushing the boundaries of limited environments
  12. 12. + performance + cleverness + inventiveness - maintainability - readability
  13. 13. Coder Programmer Developer Engineer Creator Maker
  14. 14. + maintainability + readability ~ cleverness ~ performance - inventiveness
  15. 15. The curious case of Benjamin a Button Story time:
  16. 16. Professional development: “Wow, how did you do that?” “Have you finished this?” to: Moving from
  17. 17. Personalised development environment, tooling and code snippets. The developer level-up:
  18. 18. We’re good at inventing and advocating best practices…
  19. 19. Less so at using them…
  20. 20. Why is that?
  21. 21. People are people…
  22. 22. People don’t always upgrade like we’d love them to. This means we need support old, terrible ideas. The legacy problem:
  23. 23. 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:
  24. 24. 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:
  25. 25. 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
  26. 26. How do we find appreciation?
  27. 27. We talk on dedicated channels to those “in the know”.
  28. 28. 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…”
  29. 29. 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
  30. 30. We’re better at doing than at explaining needs and values.
  31. 31. How do we find happiness?
  32. 32. We collect and describe reusable code and patterns.
  33. 33. We package reusable code and patterns up in frameworks, libraries, tooling and processes. The digital hoarding scenario:
  34. 34. Generic, reusable solutions are bigger codebases and have more computational overhead. The digital hoarding problem:
  35. 35. More tools and processes to strip the overhead before shipping to the end user. The digital hoarding solution:
  36. 36. Have we raised the bar too high for people starting new? twitter.com/ben_howdle/status/930012526628110337
  37. 37. twitter.com/TheLarkInn/status/930320292399820800 Are we teaching ways that we know and worked for us, but are outdated?
  38. 38. We have amazing tooling and helpers at our disposal!
  39. 39. Browsers come with excellent development and debugging tools.
  40. 40. Editors are open, extensible and integrate with our workflows and environments vscodecandothat.com
  41. 41. We have collaborative editing and education tools. code.visualstudio.com/blogs/2017/11/15/live-share codepen.io jsbin.com glitch.com
  42. 42. Linting and validation tools tell us what to fix – even as a continuous integration step. sonarwhal.com
  43. 43. Everything counts in large amounts
  44. 44. 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.
  45. 45. The technologies we have at our disposal are complex and have higher computation demands. A changed world:
  46. 46. We now have a larger distance between code creation and execution, with optimisation steps in between. Rolling with the punches:
  47. 47. The business demands on our creations are about fast delivery and constant innovation. This demands re- use and automation. Rolling with the punches:
  48. 48. With increased complexity and demand, any software product will sooner or later use pre-built components. The natural software evolution:
  49. 49. 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.
  50. 50. The problem is that humans are sloppy and clumsy.
  51. 51. This increases with boredom and a demand to do repetitive tasks.
  52. 52. This is where programs and automated tools shine.
  53. 53. autodraw.com
  54. 54. quickdraw.withgoogle.com
  55. 55. letsenhance.io
  56. 56. letsenhance.io
  57. 57. 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. “
  58. 58. 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
  59. 59. 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
  60. 60. Questioning the dogma: Everybody must learn how to code.
  61. 61. Questioning the dogma: Everybody must learn how to solve problems.
  62. 62. twitter.com/idiot_girl/status/930567111868669952 Moving from the “how” to the “why”.
  63. 63. 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.
  64. 64. Chris Heilmann @codepo8

×