software development: trends in programming

Upload: alex-cowan

Post on 19-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 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