Upload
alex-cowan
View
217
Download
0
Embed Size (px)
Citation preview
7/23/2019 Software Development: Trends in Programming
1/33
2015 COWAN+
SOFTWARE DEVELOPMENTKEY TRENDS
Alex Cowan
7/23/2019 Software Development: Trends in Programming
2/33
2015 COWAN+
THE MVC- A STRONG FOUNDATION CONCEPT
7/23/2019 Software Development: Trends in Programming
3/33
2015 COWAN+
A SIMPLIFIED VIEW OF HOW THINGS TALK
CLIENT SERVER
clients makerequests
servers respondto requests
01
02
7/23/2019 Software Development: Trends in Programming
4/33
2015 COWAN+
CREATING SOFTWARE
Writing Software !Spending Money
Minimize Software Subject to User Experience
Corollary: If the software is really needed for any kind of scale,its probably worth doing well
(since most cost accrues over the long run)
7/23/2019 Software Development: Trends in Programming
5/33
2015 COWAN+
A SIMPLIFIED VIEW OF CERTAIN COST DRIVERS
SW Cost
Drivers
Amount of
Custom
Software
Quality of inputs (user stories, comps, wireframes, testing)
Availability of talent with relevant experience
Quality of available tools & environments
Quality of inputs for focal test development
How often stuff breaks
Availability/ability to leverage automation
Quantity of HW, OS, apps to manage
Availability of documentation/notes
Quality of configuration and logging facilities
Dev.
QA
Ops.
7/23/2019 Software Development: Trends in Programming
6/33
2015 COWAN+
A SIMPLIFIED VIEW OF CERTAIN COST DRIVERS
Amount of
Custom
Software
Quality of inputs (user stories, comps, wireframes, testing)
Availability of talent with relevant experience
Quality of available tools & environments
Quality of inputs for focal test development
How often stuff breaks
Availability/ability to leverage automation
Quantity of HW, OS, apps to manage
Availability of documentation/notes
Quality of configuration and logging facilities
Dev.
QA
Ops.
Make sure thecurrent valueproposition reallyrequires software
Min(SW)s.t. UX
SW Cost
Drivers
7/23/2019 Software Development: Trends in Programming
7/33
2015 COWAN+
A SIMPLIFIED VIEW OF MAKING GOOD CHOICES
A. ID & describe your building blocksB. Review building blocks holistically
C. Get the right advice & decide
7/23/2019 Software Development: Trends in Programming
8/33
2015 COWAN+
ROLES
DEV QA
OPS
Inputs: User stories, wireframes, etc.
Outputs: Software design &
implementation
Inputs: Working software, notes
on function
Outputs: Validated test plans
Inputs: Validated software, notes
Outputs: Working systems, monitoring &
analytics thereof
7/23/2019 Software Development: Trends in Programming
9/33
2015 COWAN+
ROLES
DEV QA
OPS
DEV-OPS
7/23/2019 Software Development: Trends in Programming
10/33
2015 COWAN+
A SIMPLIFIED VIEW OF WHATS WHAT
{libraries with helper functions}
{technology you are developing}
{Java, PHP, Ruby on Rails...}
{Linux, Unix, MSFT Server...}
{Storage, CPU, Memory...}
YOUR SOFTWARE
HELPER PACKAGES
FOUNDATION PACKAGES
OPERATING SYSTEM
HARDWARE
7/23/2019 Software Development: Trends in Programming
11/33
2015 COWAN+
A SIMPLIFIED VIEW OF WHATS WHAT
{libraries with helper functions}
{technology you are developing}
{Java, PHP, Ruby on Rails...}
{Linux, Unix, MSFT Server...}
{Storage, CPU, Memory...}
YOUR SOFTWARE
HELPER PACKAGES
FOUNDATION PACKAGES
OPERATING SYSTEM
HARDWARE
7/23/2019 Software Development: Trends in Programming
12/33
2015 COWAN+
A SIMPLIFIED VIEW OF WHATS WHAT
{libraries with helper functions}
{technology you are developing}
{Java, PHP, Ruby on Rails...}
{Linux, Unix, MSFT Server...}
{Storage, CPU, Memory...}
YOUR SOFTWARE
HELPER PACKAGES
FOUNDATION PACKAGES
OPERATING SYSTEM
HARDWARE
{third party applications}
APPS FROMAPP STORE
7/23/2019 Software Development: Trends in Programming
13/33
2015 COWAN+
A SIMPLIFIED VIEW OF WHATS WHAT: CLASS SITE
{libraries with helper functions}
{technology you are developing}
{Java, PHP, Ruby on Rails...}
{Linux, Unix, MSFT Server...}
{Storage, CPU, Memory...}
YOUR SOFTWARE
HELPER PACKAGES
FOUNDATION PACKAGES
OPERATING SYSTEM
HARDWARE
WP Engine
Platform
PHP
Wordpress
(various plug-ins)
7/23/2019 Software Development: Trends in Programming
14/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
15/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
16/33
2015 COWAN+
JAVASCRIPT
OriginTool to enhance web pages introduced by Netscape Communications (1995).
Popular For- Creating Dynamic Web Pages
- General programming (resurgence of server side JS: node.js, etc.)
Notable Catalysts- Prevalence & importance of web applications
- Fungibility of resources and desire for full(er) stack developer roles
7/23/2019 Software Development: Trends in Programming
17/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
18/33
2015 COWAN+
JAVA
OriginGeneral purpose language with write once, run anywhere feature introduced by Sun
Microsystems (1995).
Popular For- Enterprise Applications + Lots of Other Misc. Apps- Android Apps
Notable Catalysts- Use in Android Development
7/23/2019 Software Development: Trends in Programming
19/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
20/33
2015 COWAN+
RUBY + RUBY ON RAILS
OriginRuby: Object-oriented scripting language introduced by Yukihiro Matsumoto (1995).
Rails: Web application framework introduced by David Heinemeier Hansson based on
his work with the Basecam roduct (2005).
Popular For- Web Applications + Lots of Other Misc. Apps
Notable Catalysts- Scaling Issues with Performance & Heuristics (see bit.ly/ohruby)
- Sponsorship
7/23/2019 Software Development: Trends in Programming
21/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
22/33
2015 COWAN+
PHP
OriginSet of tools created by Rasmus Lerdorf (1995).
"I dont know how to stop it, there was never any intent to write a programming
language [] I have absolutely no idea how to write a programming language, I just
kept adding the next logical step on the way."
Popular For- Web Applications + Lots of Other Misc. Apps
Notable Catalysts- Push for formal specification
7/23/2019 Software Development: Trends in Programming
23/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
24/33
2015 COWAN+
Python
OriginGuido van Rossum (1991).
I was looking for a "hobby" programming project that would keep me occupied during
the week around Christmas I decided to write an interpreter for the new scripting
language I had been thinking about lately
Popular For- General Purpose (Popular for Integration Tasks)
7/23/2019 Software Development: Trends in Programming
25/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
26/33
2015 COWAN+
C
OriginDeveloped by Dennis Ritchie at Bell Labs and initially used to re-implement Unix
(1972).
Popular For-
High Performance Projects like Operating Systems & Embedded Systems
Notable Catalysts- Use of C concepts by later languages (C++, C#, Objective C)
- Use as building block in higher-level languages (Python, Perl, PHP)
7/23/2019 Software Development: Trends in Programming
27/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
28/33
2015 COWAN+
C++
OriginDeveloped by Bjarne Stroustrup to create abstractions for C (1983).
Popular For
-High Performance Projects
7/23/2019 Software Development: Trends in Programming
29/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
30/33
2015 COWAN+
C#
OriginDeveloped by Microsoft as object-oriented language for the .NET framework (2000).
Popular For
-.NET programming
7/23/2019 Software Development: Trends in Programming
31/33
2015 COWAN+
LANGUAGE RANK OVER TIME ON GITHUB
source: Github Post- bit.l /whos it
7/23/2019 Software Development: Trends in Programming
32/33
2015 COWAN+
OBJECTIVE-C AND SWIFT
OriginObjective-C: Created by Brad Cox and Tom Love to enhance capabilities of C (1983).
Layer acquired by NeXT and incorporated into Apple application tools.
Swift: Introduced as more developer-friendly enhancement to Objective-C (2014).
Popular For- OSX and iOS programming
Notable Catalysts- Introduction of Swift
7/23/2019 Software Development: Trends in Programming
33/33
2015 COWAN+
PAGE CONTEST!
Category 1: User InteractionBe prepared to discuss: Persona, user stories, possibly storyboard
Category 2: Controllers and Model ImplementationBe prepared to discuss: User Stories, MVC Explanation, Code/Comments
Category 3: Plug-In/External SW IntegrationBe prepared to discuss: User Stories, Building Blocks, Plug-In Implementation