Weitere ähnliche Inhalte Ähnlich wie Programming Language Platform Growth: Table Stakes or Deal Makes? (20) Mehr von Edward Burns (20) Kürzlich hochgeladen (20) Programming Language Platform Growth: Table Stakes or Deal Makes?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. 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. Platforms I’ve Known
Who is this guy anyway?
Why is he qualified to give such
an opinionated talk?
Copyright © 2019 Ed Burns
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. 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. 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. 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. 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. 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. 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. WHAT MAKES A LANGUAGE
PLATFORM SUCCESSFUL?
Copyright © 2019 Ed Burns
15. DEAL MAKES
A feature that “seals the deal”, causing you to choose one
platform over another.
Copyright © 2019 Ed Burns
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. TABLE STAKES
Core Language Features Fit Your
Problems
Production Concerns
Ø Build Lifecycle
Ø Facilitating Re-use and Distribution
Ø Testing
Tooling
Copyright © 2019 Ed Burns
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
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. 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)
26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
26
Download JDK 12 tonight!
java.oracle.com
27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
27
Learn more!
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. 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. 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. 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. 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. 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. 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. 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. Copyright © 2019 Ed Burns
TABLE STAKES:
TOOLING
Code completion/intellisense
Refactoring
Source level debugging
Framework integration
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
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. 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. 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
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. 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
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. 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. 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. 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. 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. 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. 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. 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. 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. 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