Date post: | 12-May-2015 |
Category: |
Technology |
Upload: | texasgov |
View: | 220 times |
Download: | 0 times |
Presented by:Vasu Srinivasan, Senior Developer and SharePoint Architect Eric Kelm, Senior Software DeveloperTexas.gov
Technology Today SeriesPresented by Texas.gov
Hosted by the Texas Department of Information Resources (DIR)
CHOICES of TECHNOLOGY
Battle ofProgramming Languages
2
Small, informal, interactive discussions
Deeper dive into topic Hosted twice a year Coming up – a follow up to this
webinar on Tuesday, May 13, 11:30am – 1:00pm (light lunch provided)• Look for RSVP instructions in follow
up email• Space is limited
Texas.gov Partner Roundtable
3
Learning a new programming language in under an hour
Comparing current popular programming languages or frameworks
Declaring which programming language is best
What This Talk is NOT About
4
A light-hearted look at industry trends
A review of emerging technologies
Keeping up with emerging technologies
And something along those lines…
So What is This Talk About…
5
That you are tasked with a new project
You have some business goal in mind
You may or may not have a technology implementation in mind
You are about to hire an ideal developer to help your implementation
imagine()
6
An ideal man’s mind is a developer’s workshop
the interview
7
C/C++ Pascal, Delphi, PowerBuilder COBOL VB SQL Server, Oracle, DB2 Word, Excel, Access
(T – 20).years()
8
OOAD, OOP Java, EJB, JDBC, JNDI and JSP .Net/C# and ASP MoM, Web Services JavaScript, JScript, VBScript XML, DHTML, XHTML, XSL, XSLT, CSS SQL Server/Oracle UML
(T – 10).years()
9
• Java, EJB, JSF, Spring, Groovy, Grails, JBoss Seam, Struts, Swing, JavaFX, Objective C• Ruby, PHP, Python, Scala, Clojure, Haskell• .Net 2.0-4.5, C#, ASP.Net MVC2, MVC3, MVC4, SharePoint, RazorView• SOA, WebServices, JAX-RPC, JAXB, Soap, REST, WCF, Camel, RabbitMQ• SVN, GitHub, TFS, Jira, Jenkins, Maven, Ivy, Gradle• JavaScript, HTML5, CSS3, jQuery, jQuery Mobile, Backbone, Ember, Knockout, AngularJS, Node.js,
extJS• XML, YAML, XSL, XSLT, JSON• UML, EIP, EAP• SQL Server, Oracle, MongoDB, Redis, Cassandra, Neo4J• BigData, Hadoop, Pig, Hive• Android, OSX , Windows Phone 7/8/8.1/RT • JUnit, NUnit, MSTest, Selenium, Spock, Geb• OOAD, OOP, Functional, Parallel and Distributed Programming• Agile, Waterfall, Scrum, XP, Kanban• TDD, BDD, ADD and OCD
(T - 1).days()
10
COMPLEXITY IS A STATE OF MIND
complexity
11
Obviously, technology has become complex over the years
Almost obviously, selecting a technology also has become complex
Not so obviously, the conviction that a selected technology is suitable has also become complex
The Truth About Technology
12
What we mean by technology in this presentation
Programming Languages Application Frameworks Databases Tools
#Technology
13
Hardware Servers Databases Platforms Languages Frame-works
XaaS
Choices 2 4 8 16 32 128 256
25
75
125
175
225
275
Technology vs Choices
Num
ber o
f cho
ices
Technology Approx # of
Choices
Examples
Hardware 2 Mac, PC
Servers 4 AIX, Solaris, Linux, Windows
Databases 8 Oracle, SQL Server, PostgreSql, MySql, MongoDB, Cassandra, MS Access
Platforms 16 JVM, .Net, Android, OSX, Windows Phone/RT, WebServices, Node.js, Vertex
Languages 32 C, C++, Java, C#, Groovy, PHP, Python, Ruby, JavaScript, XML, XSL, HTML
Frameworks
128 Spring, Grails, Wicket, Zend, Django, Rails, AngularJS, EmberJS, ExtJS, jQuery, Sencha, PhoneGap
XaaS/Tools 256 IaaS, PaaS, SaaS, Cloud and other services
Technology Choices
14
As the level of abstraction increases, so do the number of choices.
The Kelm-Srinivasan Law of Choices
15
Use scientific techniques such as
• “It’s the only tool I know”• “I think I know this programming language”• “Everyone talks about this new framework”
Conclusion• Go with what you think is best• Or what others think is best• You can always blame the technology,
anyway
How to Select a Technology?
16
But what if…
we are actually overlooking something very fundamental?
if (what) { … }
17
Well, technologies have a pattern for that…
the problem is not about selecting the techologies for your business
but how to select YOU, has been the problem for technologies
you are not struggling to select the technology
but the technologies are struggling to select YOU
if (what) { … }
18
INVERSION OF CONTROL OF DEVELOPERS
SUBJECT ORIENTED PATTERN
19
is how the architectures, platforms, languages and
frameworks are trying to attract, entice…
The Real Problem of for Technologies
20
The Battle
and how they are
battling to use …
YOU
21
But why do we think that the technologies are battling amongst themselves?
Think about how many programming languages have been invented to say “Hello, World!”…
And calculate the Fibonacci Series or a Factorial.
That’s because they do not trust each other’s bits.
“My bits are better than your bits”
Battle, Why?
22
Messaging
JVM .Net
JavaScript
Databases
Middleware
CMS
Others
HTML/CSS Web Frameworks
Integration
WHERE YOU ARE THE CATCH
the battlefield of technologies
JVM Brigade
JavaGroovyScalaClojureJythonJRubyKotlinCeylonFantomGosu
http://tinyurl.com/odkwxcj
23
24
No, I’m in pajamas.
No, I’m in coma.
No, I’m in death bed.
Hello, any one here? Wanna
fight?
.Net Detachment
25
SpringStrutsJSFPlayWicketGrailsGWTVaadinStripes
ASP.net MVC4Vert.X
Frameworks Squadron
26
CMS Troop
27
AndroidiOSWindows PhoneSenchaPhoneGapTitanium
SOAPRESTActiveMQFusion MiddlewareRabbitMQActivitiApache CamelDropWizardWCFXML, JSON, GSONJPA, Hibernate
jQueryjQuery MobileextJSemberJSangularJSbackbone.jsnode.jsknockoutprototypedojomootoolssass/scssless
OracleSQL ServerMySQL ServerPostgreSqlMongoDBCassandraRedisHadoopBigData
More Regiments
28
SO MANY TECHNOLOGIES TO COVER, ONLY A FEW MINUTES LEFT TO PRESENT
the inconspicuous battle of programming languages
29
Galaxy of Programming Languages
30
Essence over Ceremony
Functional Programming Support
Domain Specific Languages
Features of Modern Programming Languages
31
Get to the essence of what your code is trying to accomplish, and get rid of all of the unnecessary legacy ceremony
For example, the iterator pattern becomes much simpler, because instead of the developer controlling the iteration (for loop), the object itself is responsible for the control of iteration (object.each)
So the question “how to iterate” becomes irrelvant, and you essentially are telling the object “Go iterate yourself”
Feature: Essence Over Ceremony
32
First-class and higher-order functionsfunctions as argumentsfunctions as return types
Pure functions immutable objectsno state
Feature: Functional Programming Support
33
Create languages targeted at a specific problem domain in which you are working (mini-languages)
Allows business users to write “code” in a language that they can understand, and that same language can also be understood by the system
Feature: Domain Specific Languages
34
package com.asoftwareguy.email.java;
public class JavaEmailSender {
public static void main(String[] args){ JavaEmail javaEmail = new JavaEmail(); javaEmail.setTo("[email protected]"); javaEmail.setFrom("[email protected]"); javaEmail.setSubject(“Test Email"); javaEmail.setMessage("Hello! This is a test email message!"); javaEmail.send(); }}
Show and Tell: Java
35
send email to '[email protected]' from '[email protected]' with a subject 'Test Email' and the message 'Hello! This is a test email message!'
Show and Tell: DSL
36
The DSL illustrated “Essence over Ceremony”allowed expression of a domain expertise directly in a general purpose programming language
Many other technologies are doing the same thing – simplifying solutions for complex business problems
And there are so many flavors of these technologies…
What Does the DSL Prove?
37
Choices, Choices Everywhere
38
Let’s revisit the question
Now that we know technologies are also fighting a battle to get to us…
How to Select a Technology?
39
NetFlix• Grails, Asgard, Lipstick, Genie
Twitter• MySql, Cassandra, Hadoop, Lucene, Pig, Memcached, Scalding (Scala), Bootstrap
Facebook• Cassandra, PHP, Linux, MySQL, Memcached, Haystack, HipHop, Hive, Scribe
Yahoo• Hadoop, CapIt
Google• Big Table, Lazy Collections and a lot of stuff
Amazon• AWS, Linux, Oracle, Java, Perl, JBoss, Xen
WhatsApp• Erlang
What the Big Players are Doing
40
What the Small Players are Doing
41
What are YOU Doing?
42
Did you choose or were you chosen? Did you select the right technology? How do you measure it?
• Cost
• Resources
• Support and Community
Can you brainwash convince your• Stakeholder
• Manager
• Team
• Yourself
Too Many Questions…
43
Status QuoEgo sum, ergo sum
Proof-of-Concepts or PrototypesGood, but not enough
Technology RadarMeasure and Synthesize
Too Few Options…
44
A RADAR THAT DETECTS WHAT’S HOT AND WHAT’S NOT
technology radar
45
A Technology Radar is a team exercise to experiment and
assess the emerging and sun-setting technologies in order
to provide value to your stakeholders
Pioneered by ThoughtWorks Inc.
Conducted quarterly
Assess current technologies
Publishes resulting radar
Technology Radar
46
The result of the exercise is a document that captures
your team’s view of where the industry is going
what your team is doing to keep up with it
how your team leverages the potential benefits and
exclude excess baggage
your team’s trail of how it has modernized
Results of Technology Radar
47
Techniques
• Spock, Guerilla Testing, Async programming,
Functional programming, Html5 storage, Logs as
data, Agile, Kanban, Scrum
Tools
• Gradle, Pig, Maven, TFS, Eclipse, VisualStudio,
IntelliJ, Atlassian, Jira, GitServer
Platforms
• MongoDB, Neo4j, Redis, Hadoop, Node.js,
OpenStack, Rias, Azure, AWS, SharePoint
Languages and Frameworks
• AngularJS, Knockout, Groovy, Grails, Clojure, Scala,
Play, JavaScript/CSS frameworks, DropWizard,
SpringBoot
Groups (categories)
48
Adopt
• Start using in your projects
Trial
• Understand the capabilities;
consider in a low-risk project
Assess• Worth exploring with the goal of
understanding how it affects your
enterprise; do a PoC
Hold
• Proceed with caution; Reduce support
Rings
49
Texas.gov Technology Radar ‘13
50
Texas.gov Technology Radar ’13
51
Keep current Eliminate excess baggage Trail of your decisions on technology Helps to remove technology biases Not a roadmap, but it helps you come up with a
convincing roadmap Must be done at enterprise level
Benefits
52
Check out where your peers are caught up and why
Share your findings (even if you calculated the Fibonacci series again)
Remain passionate and have fun doing what you do
Always remember, the technologies are battling for you
except for Chuck Norris
he chooses the technology to choose him
Summary
53
Technology Radar http://www.thoughtworks.com/radar
Higher-order functions http://en.wikipedia.org/wiki/Higher-order_function
Evolution of C++ http://knowtechstuff.blogspot.com/2012/02/evolution-of-c-programming-language.html
History of programming languages
http://www.georgehernandez.com/h/xComputers/Programming/Languages.asp
The graph of programming languages
http://griffsgraphs.com/2012/07/01/programming-languages-influences/
Images Courtesy Foxtrot™, www.glasbren.com, www.wikipedia.org and several web sites.
References
54
Contact Information:
Eric [email protected]
Vasu [email protected]
println(‘Thank YOU !’)
Questions?