Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Programming Language Platform Growth: Table Stakes or Deal Makes?

83 vues

Publié le

This talk draws from Ed's 25 years of professional programming experience, spanning many languages, operating systems, and platforms, to survey what it takes to make a programming language platform successful in terms of widespread use. Ed will look at Java, Python, Node, Go, and Ruby and evaluate the ingredients that brought each one its own form of success. Finally, Ed will draw some lessons that apply to anyone trying to grow their computing platform, because, at some level, we are all in the platform business.

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Programming Language Platform Growth: Table Stakes or Deal Makes?

  1. 1. PROGRAMMING LANGUAGE PLATFORM GROWTH TABLE STAKES OR DEAL MAKES? Edward Burns @edburns github.com/edburns http://ridingthecrest.com Slides at http://bit.ly/ Copyright © 2019 Ed Burns
  2. 2. MY PLAN FOR YOUR TIME INVESTMENT My Experience with programming language platforms Table Stakes and Deal Makes Summary and Key Takeaways Copyright © 2019 Ed Burns
  3. 3. SPEAKER QUALIFICATIONS ED BURNS Copyright © 2019 Ed Burns 25 years software development experience Java EE Spec Lead for JSF and Servlet Frequent conference speaker and workshop leader Author of four IT books for McGraw-Hill
  4. 4. Platforms I’ve Known Who is this guy anyway? Why is he qualified to give such an opinionated talk? Copyright © 2019 Ed Burns
  5. 5. Platforms I’ve Known Copyright © 2019 Ed Burns Oil and Chemistry Building, home of Mosaic Gratis and Free software Built on prior work really well Ubiquitous (closs platform) Delivered something everyone wanted Easy to author: copy and paste from view source!
  6. 6. Platforms I’ve Known Copyright © 2019 Ed Burns Oil and Chemistry Building, home of Mosaic Gratis and Free software Built on prior work really well Ubiquitous (closs platform) Delivered something everyone wanted Easy to author: copy and paste from view source!
  7. 7. Platforms I’ve Known Copyright © 2019 Ed Burns Cobbles existing things together in an exciting new way. Simplicity: HTTP/1.0, TCP/IP sockets Anyone can add new servers, no need to ask permission. Leverages network effect
  8. 8. Platforms I’ve Known Copyright © 2019 Ed Burns Not the right time Too hard to author for it, tools helped, but they were proprietary Did not have the easy re-use feature for content
  9. 9. Platforms I’ve Known Copyright © 2019 Ed Burns Good variety of “good enough” tools Created a component ecosystem Lots of buzz around this space due to “Web Framework Wars”
  10. 10. Platforms I’ve Known Copyright © 2019 Ed Burns Addressed shared pain points Transparent development process Spring rode the crest of vendor marketing efforts, differentiated with operational excellence
  11. 11. Platforms I’ve Known Copyright © 2019 Ed Burns Addressed shared pain points Transparent development process Spring rode the crest of vendor marketing efforts, differentiated with operational excellence
  12. 12. WHAT MAKES A LANGUAGE PLATFORM SUCCESSFUL? Copyright © 2019 Ed Burns
  13. 13. MODERN SECRET WHY DID KUBERNETES EXPLODE IN POPULARITY? Copyright © 2019 Ed Burns
  14. 14. TABLE STAKES https://www.urbandictionary.com/define.php?term=table%20stakes The minimum amount required to play a hand of poker. Copyright © 2019 Ed Burns
  15. 15. DEAL MAKES A feature that “seals the deal”, causing you to choose one platform over another. Copyright © 2019 Ed Burns
  16. 16. TABLE STAKES Core Language Features Fit Your Problems Production Concerns Ø Build Lifecycle Ø Facilitating Re-use and Distribution Ø Testing Tooling Copyright © 2019 Ed Burns
  17. 17. TABLE STAKES Core Language Features Fit Your Problems Production Concerns Ø Build Lifecycle Ø Facilitating Re-use and Distribution Ø Testing Tooling Copyright © 2019 Ed Burns
  18. 18. DEAL MAKERS OR BREAKERS Copyright © 2019 Ed Burns Monetization The Killer App Stackoverflowability Other considerations Maintainability Talent Pool Breadth and Depth of Library Suport Compatibility
  19. 19. CATEGORIES James Gosling is wary of categorization BEWARE OF CATEGORIZATION Copyright © 2019 Ed Burns
  20. 20. CATEGORIES BEWARE OF CATEGORIZATION Copyright © 2019 Ed Burns
  21. 21. Language Type Type System Optionality Encapsulation Security IO UI Memory Management Verbosity/Expressiveness Copyright © 2019 Ed Burns TABLE STAKES: CORE LANGUAGE FEATURES
  22. 22. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Thank you to the many contributions in the OpenJDK Community Building JDK 11 together 2,468 JIRA issues marked as fixed in JDK 11 Over 500 were contributed by individuals and developers working for other organizations blogs.oracle.com/java-platform-group/building-jdk-11-together
  23. 23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Enterprise long-term support New simple Oracle JDK monthly subscription support offering for desktop, server and cloud deployments (pay as you use) You have a choice: - Oracle support for specific releases - Additional support options from other vendors oracle.com/java/java-se-subscription Low-cost, predictable pricing - $25.00 (USD) per month per processor (server) or LESS - $2.50 (USD) per month per user (desktop) or LESS - Significant discount available for large deployment support requirements (i.e. 50% discount for 10k-20K processor units)
  24. 24. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 24
  25. 25. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 25
  26. 26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 26 Download JDK 12 tonight! java.oracle.com
  27. 27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 27 Learn more!
  28. 28. CORE LANGUAGE FEATURES Copyright © 2019 Ed Burns Lang Style OO Interpreted, Optionally OO Not OO Functional, Not OO OO Type System Strong, Generics Dynamic, but “type checker” Inference, Strong, no generics Dynamic, no generics Inference, Strong, Generics Optionality? Yes No No “undefined” Yes, core feature Encapsulation Great support Poor Pretty good Poor Great Security Very good Not seen as the best No big problems yet < Java No big problems yet IO Several styles C like, has non- blocking C like, use goroutines async node fs Simple UI Several styles None None Frameworks Yes Mutability/State Yes, lots Yes, lots < Java Stateless encouraged Discouraged Verbosity Very verbose Somewhat verbose Pretty terse < Java Just right
  29. 29. Platform stewards concern, or not? Multiple competing alternatives? One clear winner? Plays well with state of the art CI/CD? Cloud deployment? How mature is the solution? Are the providers of the solution monetized? Copyright © 2019 Ed Burns TABLE STAKES: Production Concerns Build Lifecycle Re-use Facilitation, Distribution Testing
  30. 30. TABLE STAKES: Build Lifecycle Copyright © 2019 Ed Burns From Steward or not? No No Yes No Yes Mutiple competing choices? Maven is the winner, but Gradle is popular No one clear winner No No, but lots of parts, from different vendors No Plays well with cloud CI/CD? Possible but tricky Pretty well. See PyBuilder Yes Well supported, due to popularity Yes, but Mac hardware required How mature? Maven and Gradle are both very mature Not so mature, but seems as mature as it will get Yes Medium Medium
  31. 31. TABLE STAKES: Reuse & Distribution Copyright © 2019 Ed Burns From Steward or not? Re-use: yes, distribution: no Yes, PyPi is from PSF Source code is king No Yes Mutiple competing choices? Maven central No No, dep is the “official experiment” npmjs No How mature? Very Yes No Since 2014 Yes Repo Monetized? Yes No, PSF is non- profit Does not apply Yes Does not apply Monetizable by author? No No No Yes No How easy? Still evolving, even after 22 years Good enough Source code is king Yes Source code is king Distribute learning artifacts? Yes No Does not apply No Does not apply
  32. 32. TABLE STAKES: Reuse & Distribution Copyright © 2019 Ed Burns From Steward or not? Re-use: yes, distribution: no Yes, PyPi is from PSF Source code is king No Yes Mutiple competing choices? Maven central No No, dep is the “official experiment” npmjs No How mature? Very Yes No Since 2014 Yes Repo Monetized? Yes No, PSF is non- profit Does not apply Yes Does not apply Monetizable by author? No No No Yes No How easy? Still evolving, even after 22 years Good enough Source code is king Yes Source code is king Distribute learning artifacts? Yes No Does not apply No Does not apply
  33. 33. TABLE STAKES: Reuse & Distribution Copyright © 2019 Ed Burns From Steward or not? Re-use: yes, distribution: no Yes, PyPi is from PSF Source code is king No Yes Mutiple competing choices? Maven central No No, dep is the “official experiment” npmjs No How mature? Very Yes No Since 2014 Yes Repo Monetized? Yes No, PSF is non- profit Does not apply Yes Does not apply Monetizable by author? No No No Yes No How easy? Still evolving, even after 22 years Good enough Source code is king Yes Source code is king Distribute learning artifacts? Yes No Does not apply No Does not apply
  34. 34. TABLE STAKES: Testing Copyright © 2019 Ed Burns From Steward or not? Not at all Mix Yes No Yes Mutiple competing choices? Yes Yes, py.test recommended No Yes, mocha recommended No Plays well with cloud CI/CD? Yes, with maven Ok Yes Good enough Yes How mature? Very Very As mature as language Good enough As mature as language Vendor monetized? No No No No Yes Testing in language DNA? No, but has been embraced by steward Good enough Meh No Yes TDD support? Yes Yes Good enough Yes Yes
  35. 35. TABLE STAKES: Testing Copyright © 2019 Ed Burns From Steward or not? Not at all Mix Yes No Yes Mutiple competing choices? Yes Yes, py.test recommended No Yes, mocha recommended No Plays well with cloud CI/CD? Yes, with maven Ok Yes Good enough Yes How mature? Very Very As mature as language Good enough As mature as language Testing in language DNA? No, but has been embraced by steward Good enough Meh No Yes TDD support? Yes Yes Good enough Yes Yes
  36. 36. Copyright © 2019 Ed Burns TABLE STAKES: TOOLING Code completion/intellisense Refactoring Source level debugging Framework integration
  37. 37. TABLE STAKES: Tooling Copyright © 2019 Ed Burns Code completion & Intellisense Of course Somewhat Somewhat Not so much Yes Refactoring Of course Possible, but not common Tools exist Tools exist Yes Source level debugging Of course pdb, and IDE plugins Yes, VS Code Yes, node- inspect, IDEs Yes Framework integration Of course Does not apply Does not apply Good enough Yes
  38. 38. DEAL MAKERS OR BREAKERS Copyright © 2019 Ed Burns Factors that “seal the deal”
  39. 39. DEAL MAKERS OR BREAKERS Copyright © 2019 Ed Burns Monetization The Killer App Stackoverflowability Maintainability Other considerations Talent Pool Breadth and Depth of Library Suport Compatibility
  40. 40. Get paid for code Selling licenses Consulting gigs Reputation Future opportunities How easy is it to get paid to code in that language? Number of available jobs How well paying are they relateive to other languages? Copyright © 2019 Ed Burns DEAL MAKERS: MONETIZATION
  41. 41. Seen as a safe bet. Lots of jobs Licensed Java software tends to be expensive enterprise software DEAL MAKERS: MONETIZATION Copyright © 2019 Ed Burns Popular in many hot growth areas Machine Learning Data Science DevOps
  42. 42. Relatively fewer jobs Largest number of jobs Smallest number of jobs DEAL MAKERS: MONETIZATION Copyright © 2019 Ed Burns
  43. 43. DEAL MAKERS: THE KILLER APP Copyright © 2019 Ed Burns Business apps. Cobol for the 21st century Also Android Machine Learning. Scientific computing Suitability for the cloud Web apps iOS apps
  44. 44. DEAL MAKERS: THE KILLER APP Copyright © 2019 Ed Burns Business apps. Cobol for the 21st century Also Android Machine Learning. Scientific computing Suitability for the cloud Web apps iOS apps
  45. 45. DEAL MAKERS: STACKOVERFLOWABILITY Copyright © 2019 Ed Burns
  46. 46. Copyright © 2019 Ed Burns THE PLATFORMS stackoverflow trends
  47. 47. Copyright © 2019 Ed Burns THE PLATFORMS: JAVA 0 20 40 60 80 100 120 140 0 5 10 15 20 25 Java: Top 20 Stackoverflow answerers, reputation*1k
  48. 48. Copyright © 2019 Ed Burns THE PLATFORMS: PYTHON 0 20 40 60 80 100 120 0 5 10 15 20 25 Python: Top 20 Stackoverflow answerers, reputation *1k
  49. 49. Copyright © 2019 Ed Burns THE PLATFORMS: GO 0 2 4 6 8 10 12 0 5 10 15 20 25 Golang: Top 20 Stackoverflow answerers, reputation *1k
  50. 50. Copyright © 2019 Ed Burns THE PLATFORMS: Node.js 0 10 20 30 40 50 60 70 0 5 10 15 20 25 Node.js: Top 20 Stackoverflow answerers, reputation *1k
  51. 51. Copyright © 2019 Ed Burns THE PLATFORMS: Swift 0 5 10 15 20 25 30 0 5 10 15 20 25 Swift: Top 20 Stackoverflow answerers, reputation *1k
  52. 52. DEAL MAKERS: STACKOVERFLOWABILITY Copyright © 2019 Ed Burns High point score 130k 110k 11k 60k 25k Number of questions, all time 1.5M 1.1M 34k (lots end up at issue tracker) 1.7M 224k % unanswered 27.7% 25.5% 17.7% 28.5% 33.1% New in last 30 days 15K 21,889 866 20k 3.8k Other forums beside stackovervlow Yes, IRC, Many formus and websites Yes, slack, forums #gonuts IRC channel, Gopher slack channel So huge it is hard to say. Yes. Yes
  53. 53. DEAL MAKERS: STACKOVERFLOWABILITY Copyright © 2019 Ed Burns High point score 130k 110k 11k 60k 25k Number of questions, all time 1.5M 1.1M 34k (lots end up at issue tracker) 1.7M 224k % unanswered 27.7% 25.5% 17.7% 28.5% 33.1% New in last 30 days 15K 21,889 866 20k 3.8k Other forums beside stackovervlow Yes, IRC, Many formus and websites Yes, slack, forums #gonuts IRC channel, Gopher slack channel So huge it is hard to say. Yes. Yes
  54. 54. Compatibility History of Breakages? Simultaneous different versions platform versions deployed side-by-side? Is it important that old code still run? Talent Pool How eays is it to hire/fire? Are there jobs on freelance sites? Library Support Have the libs you need? Well maintained and current? Maintainability How easy is it to write extremely unmaintainable code? Tools to aid understanding Hot fix capability Ethos of documentation? Copyright © 2019 Ed Burns DEAL MAKERS: Other Considerations Compatibility Talent Pool Library Support Maintainability
  55. 55. Copyright © 2019 Ed Burns Summary These are all general purpose languages Obviously, there is no one perfect fit Question conventional wisdom regarding language choice Business apps. Cobol for the 21st century Also Android Machine Learning. Scientific computing Suitability for the cloud Web apps iOS apps
  56. 56. Copyright © 2019 Ed Burns Key Takeaways Key factors influencing platform choice, in decreasing importance Team Comfort level of team with the platform How easy is it to make it easy to onboard people? Community Breadth, depth, and quality of library ecosystem Community welcoming to newcomers Language Steward Commitment for keeping the platform current Commitment to preserving backward compatibility Prompt and thorough addressing of security problems

×