Caio Amaral

"Uncle" Bob Martin - "The Future Of Programming"

Objective-C

A better C

By Bread Cox - SmallTalk Programmer - Objective-C

By Bjarne Stroustrup - Pre-Processor - C++

Dennins M. Ritchie C Programming Language (Chapter 0)

Bjarne Stroustrup C++ Progamming Language (Chapter 0)

Apple Computers

Steve Jobs quits Apple and founds NeXT

Hire Objective-C Programmers which did not like C++

Steve Jobs went back to Apple with NeXT’s Objective-C Team

New Languages

  • Type Safe?
  • Features?

Sofware industry

Where are the woman?

The Future of Programming

1936 - Alan Turing

The first person to write code as we recognize as code.

Alan, writes a paper

Charles_Petzold-Annotated_Turing-Wiley%282008%29.pdf

  • Binary (Reversed ¯_(ツ)_/¯ )
  • Integer add and logical not
  • Invents subroutine
  • Invents and codes stack (burry and un-burry instead of push and pop)
  • Invents floating point numbers
  • etc…

“We shall need a great number of mathematicians of ability” because “there will probably be a good deal of work of this kind to be done.”

                                                                                                            - Alan Turing

“One of our difficulties will be the maintenance of an appropriate discipline, so we do not lose track of what we are doing” - Alan Turing

1946

Number of Computers O(1)

Number of Programmers O(1)

1950

Core Memory

- Dencer memory
- Magnetize both directions
- Larger Memories

Tubes

- Radios
- Televisions
- Computers (possible to build with tubes)

1953

Fotran Creation

  • No Indentation
  • GOTO’s
  • No Types
  • Hand Written
  • Cards
  • Care-full with I’s O’s and 7’s
  • Programmers Were not allowed to touch computers
  • Computer Operators do not like programmers (because programmers want to try programs)
  • The program output will come on the other day.
  • To deal with that every programmer had 7 parallel program.

1958

  • Functional Programming
  • LISP

1960

IBM sold 140 model 70x computers running fortran

O(1E2) Computers in the world

O(1E3) Programmers in the world

  • No Libraries
  • No help

1960 Programmers

  • Programmers were not trained on schools
  • Engineers
  • Scientists
  • Mathematicians
  • 30’s 40’s 50’s
  • Understood projects
  • Understood management
  • Were trusted by business

1965

Very expensive machine rents from IBM

O(1E4) Computers in the world

O(1E5) Programmers in the world

Less than 20 years since Turing wrote his code

Where does all this people come from?

Not enough people

  • Engineers, Scientists, Mathematicians
  • No CS Grads
  • Programmers drawn from:
  • Best and brightest
    • Accountants, Planners
  • Understood management
  • Understood business
  • Not mathematicians
  • Disciplined…

1966

IBM’s renting computers

Simula-67 - First Object Oriented Language

Object Orientation

1968

Dijkstra wrote a article to avoid GOTO;

Disciplined Mathematicians → C and Linux/Unix

1970

O(1E5) → Computers in the world

O(1E6) → Computers in the world

25 years

## Programmers Were Young


Lack of discipline, but with a lot of energy, crazy hours, hyper-focus and cheap


**Young boys need discipline**


**→ The Waterfall Model**


The average age of programmers went down by 20 years. Programmers are now in ther 20's 


The number of programmers double every five years


We do not have enough teachers to teach everyone! That's why the area have so many mistakes.


## Before 80's 


Programming Field

	- Old People
	- Programmers were disciplined professionals
	- They didn't need a lot of management or process
	- They knew how to manage their time, communicate, and work together
	- They understood deadlines and commitments, **What to leave in  and what to leave out**

Accomplishments

	- IBM 360 Virtual Memory OS
	- NASA: Mercury, Gemini, Apollo
	- Structured, Functional, Object-Oriented
	- Fortran, Cobol, Agol, Lisp, C, Unix

## Agile


Is the process used

Today

What have changed?

 Sofware! _The iPhone represents the World economy_


## What's Changing

- Multicore
- Massive Parallelism
- Quantum Computers

## What Must Change

- Sofware Professionalism

1995

  • Original cohort of disciplined professionals retires.
  • First wave of career programmers comes of age (well over 40)
  • We foresee the need to change

1995 - The Waterfall Era Change

  • Scrum: Schwaber, Beedle, DeVos, et. al.
  • XP: Beck, Cunningham
  • FDD: Coad.
  • Crystal: Cockburn

2001 - Snowbird Agile Manifesto

Agile Manifesto

Individuals and interactions over process and tools.

Working Software over comprehensive document.

Customer collaboration over contract negotiation.

Responding to change over following a plan.

Agile Requires Discipline

  • Working in fixed time boxes.

  • Estimating in relative units.

  • Customer Communication

  • Continuous Integration

  • Collaboration

  • Much more…

    Extreme Programming (XP)

    • The most technical disciplines
    • TDD
    • Refactoring
    • Simple Design
    • Acceptance Tests
    • Metaphor

    Many of us tough that these technical disciplines were the glue that made the whole agile process work properly. Without those technical - dare I say Mathematical disciplines, the code being produced would grow and evolve in ways that made it harder and harder to work with.

    Lose track of what we are doing.

    Turing: Discipline and Ability

    Agile: Discipline

    Agile: Craftsmanship

    Agile: Professionalism

    Business Loves and Understand

    Business ♥️ Discipline

    Business ♥️ SCRUM

    Business ♥️ Certification

    Business Do not Understand

    So they won’t assume any risk.

    Business 🚫 Programmers

    Business 🚫 Tests

    Business 🚫 Pair Programming

    Business 🚫 Refactoring

    Business 🚫 Simple Design

    Flaccid Scrum

    Scrum without value

    Scrum without deliver

    Scrum without technical practice

    Scrum without order

The Invasion of Project Managers

Caused by certifications, which attracted the wrong people, PM’s

So the agile movement → project managers → craftsmanship technical practices

Agile were made by programmers,

Agile is not about Kanban, LEAN or any of that.

Agile is not about business people.

Agile is not about project managers people.

Irony

Kent Back at Snowbird stated a goal for Agile:

Healing of the divide between business and programming

Agile was about bringing business and programmers closer together

FAILED

What Must Change?

  • Agile must Grow Up.
  • Define our profession
  • Choose our practices and disciplines
  • Reunify Agile/Craftsmanship
  • …And Lead!

Problem

The world depends on programmers

In ways they do not understand

In ways we do not understand

Your Grandmother

Interactions with a software system

  • Buy things
  • Sell something
  • Get insurance
  • Telephone Calls
  • Car (over 10K lines of code)
  • Microwave
  • Wash your clothes

Software Engineers Are Killing People

The world depends on us, they do not understand, we do not understand.

WE RULE THE WORLD

Someday a software disaster will happen!

That day, politics will point their fingers will look at us and ask why that happen!

My boss made my do that

We had a deadline

Regulations

  • What books we have to read
  • What languages we have to use
  • What platforms we can use
  • What processors we have to use
  • What process we have to follow

We’ll be regulated

Cause we’re dangerous

We kill people.

Regulate Ourselves Before!

  • Take a oath(doctors, layers)
  • Create a body that violate programmers