programming for non-programmers (amex remix edition)

Post on 06-May-2015

1.047 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Chris Castiglione@castig | pfnp.me

PROGRAMMING FOR NON-PROGRAMMERS

(AMEX REMIX EDITION)

THE QUESTIONHow do I communicate an idea from my head… to a computer?

PROGRAMMING FOR NON-PROGRAMMERS

1. FRONT END VS. BACK END

2. WHICH LANGUAGE?

3. CODE!

4. APIS

PROGRAMMING FOR NON-PROGRAMMERS

1. FRONT END VS. BACK END

2. WHICH LANGUAGE?

3. CODE!

4. APIS

PROGRAMMING FOR NON-PROGRAMMERS

1. FRONT END VS. BACK END

2. WHICH LANGUAGE?

3. CODE!

4. APIS

PROGRAMMING FOR NON-PROGRAMMERS

1. FRONT END VS. BACK END

2. WHICH LANGUAGE?

3. CODE!

4. APIS

What is Programming?

PROGRAMMING‣ a set of instructions‣ used to solve a problem

PEANUT BUTTER & JELLY SANDWICH

PEANUT BUTTER & JELLY SANDWICH‣ find two slices of bread

PEANUT BUTTER & JELLY SANDWICH‣ find two slices of bread‣ spread peanut butter on one slice of bread

PEANUT BUTTER & JELLY SANDWICH‣ find two slices of bread‣ spread peanut butter on one slice of bread‣ spread jelly on the other slice of bread

PEANUT BUTTER & JELLY SANDWICH‣ find two slices of bread‣ spread peanut butter on one slice of bread‣ spread jelly on the other slice of bread‣ put the two slices of bread together

PROBLEM SOLVED!

PROGRAMMING‣ a set of instructions‣ used to solve a problem

WHY ARE WE HERE?‣ to learn to think like a developer

WHY ARE WE HERE?‣ to learn to think like a developer ‣ to understand the tools (aka. Programming Languages)

PROGRAMMING FOR NON-PROGRAMMERS

is to build somethingthat nobody wants.

The worst thing

I. WEB DEV PROCESSUnderstand the Problem

Web Master

Web Developer Web Designer

Front-end Back-end Visual DesignerUser Experience

User-Interface Information ArchitectureDatabase Expert

Growth HackerSecurity Testing

HTML5 Animation

SEO Expert Usability

PROGRAMMING FOR NON-PROGRAMMERS

A TYPICAL WEB DEVELOPMENT CYCLE

User-Experience (UX)

Information Architecture (IA)

Visual Design Development

Visual Design

PROGRAMMING FOR NON-PROGRAMMERS

A TYPICAL WEB DEVELOPMENT CYCLE

User-Experience (UX)

Information Architecture (IA)

Visual Design Development

PROGRAMMING FOR NON-PROGRAMMERS

A TYPICAL WEB DEVELOPMENT CYCLE

User-Experience (UX)

Information Architecture (IA)

Visual Design

Development

PROGRAMMING FOR NON-PROGRAMMERS[ 1. PLAN ] [ 2. DESIGN ] [ 3. DEVELOP ]

VISUAL DESIGNWireframes become design comps

25

PROGRAMMING FOR NON-PROGRAMMERS[ 1. PLAN ] [ 2. DESIGN ] [ 3. DEVELOP ]

VISUAL DESIGNEach wireframe template becomes a comp template

26Homepage BlogListen

source: www.risk-show.com

PROGRAMMING FOR NON-PROGRAMMERS[ 1. PLAN ] [ 2. DESIGN ] [ 3. DEVELOP ]

STYLE GUIDE

27

Style TileFinal

source: www.risk-show.com

PROGRAMMING FOR NON-PROGRAMMERS

A TYPICAL WEB DEVELOPMENT CYCLE

User-Experience (UX)

Information Architecture (IA)

Visual Design Development

Development

PROGRAMMING FOR NON-PROGRAMMERS

A TYPICAL WEB DEVELOPMENT CYCLE

User-Experience (UX)

Information Architecture (IA)

Visual Design Development

PROGRAMMING FOR NON-PROGRAMMERS

A TYPICAL WEB DEVELOPMENT CYCLE

User-Experience (UX)

Information Architecture (IA)

Visual Design

Development

PROGRAMMING FOR NON-PROGRAMMERS[ 1. PLAN ] [ 2. DESIGN ] [ 3. DEVELOP ]

DEVELOPMENTComps become graphics & real text

32

PROGRAMMING FOR NON-PROGRAMMERS[ 1. PLAN ] [ 2. DESIGN ] [ 3. DEVELOP ]

DEVELOPMENTComps become graphics & real text

mailer.png

general-assembly-logo.png

social-media.png

Real Text: General Assembly offers classes, and events at the intersection of technology, design, and entrepreneurship. Together with our members, thought leaders, and seasoned practitioners, we offer a robust curriculum focused on

33

PROGRAMMING FOR NON-PROGRAMMERS[ 1. PLAN ] [ 2. DESIGN ] [ 3. DEVELOP ]

DEVELOPMENT

34

The development process can be broken into two separate responsibilities:

PROGRAMMING FOR NON-PROGRAMMERS[ 1. PLAN ] [ 2. DESIGN ] [ 3. DEVELOP ]

FRONT-END WEB DEVELOPMENT

1.Client Side2.How things look to the user3.Involves: Images, content, structure4.HTML, CSS, JavaScript

DEVELOPMENT

35

The development process can be broken into two separate responsibilities:

PROGRAMMING FOR NON-PROGRAMMERS[ 1. PLAN ] [ 2. DESIGN ] [ 3. DEVELOP ]

FRONT-END WEB DEVELOPMENT

1.Client Side2.How things look to the user3.Involves: Images, content, structure4.HTML, CSS, JavaScript

DEVELOPMENTThe development process can be broken into two separate responsibilities:

BACK-END WEB DEVELOPMENT

1.Server Side2.How things works 3.Involves: “business logic” and data 4.Ruby, PHP, C++, Java, etc

36

±±±

ZAPPOS.COM

PROGRAMMING FOR NON-PROGRAMMERS

FRONT-END

homepage cart registration

BACK-END

process.php

II. WHICH LANGUAGE?Understand the Tools

Vocabulary

PROGRAMMING FOR NON-PROGRAMMERS

OTHER

‣ DECODE THE GENOME

‣ XBOX‣ VIDEO GAMES

‣ OTHER HARDWARE

‣ ANYTHING ELSE I MAY HAVE MISSED

NATIVE APPS

Directly on your Operating System‣ IPHONE ‣ ANDROID

‣ OSX‣ WINDOWSIn a browser

‣ CHROME‣ SAFARI

‣ FIREFOX‣ OPERA

‣ INTERNET EXPLORER

THE WEBWEB SITESWEB APPS

MOBILE WEB

VOCABULARY

PROGRAMMING FOR NON-PROGRAMMERS

PHP

Ruby

C

C++Python

Perl .NETJava

Objective C

Visual Basic

ASP

COBOL

Ruby

Lisp

Logo

Smalltalk

ABC

ADA

ActionScript

Clu

R

PROGRAMMING FOR NON-PROGRAMMERS

PHP

Ruby

C

C++Python

Perl .NETJava

Objective C

Visual Basic

ASP

Ruby

Lisp

Logo

Smalltalk

ABC

ADA

ActionScript

Clu

COBOL

R

PROGRAMMING FOR NON-PROGRAMMERS

PHP Ruby

PythonJava.NETC++

Objective C

PROGRAMMING FOR NON-PROGRAMMERS

Machine CodeLOW LEVEL

HIGH LEVEL

HIGH TO LOW LANGUAGES

C

PHP Ruby Python

Java .NET

C++ Objective C

PROGRAMMING FOR NON-PROGRAMMERS

HIGH TO LOW LANGUAGES

 1000 CLC        1001 LDA $80    1003 ADC $4009  1006 STA $80  1008 LDA $81    100A ADC $400A  100D STA $81 

Machine Code jQUERY$("#submit-button").click(function(){  $(".ball").animate({"left": "-=50px"}, "slow");});

PYTHONPHP

PROGRAMMING FOR NON-PROGRAMMERS

WEB PROGRAMMING LANGUAGESRUBY

Wikipedia

Facebook

Twitter

Hulu+

Groupon

Youtube

GoogleVimeo

PROGRAMMING FOR NON-PROGRAMMERS

Then why choose... ?

PROGRAMMING FOR NON-PROGRAMMERS

PROGRAMMING FOR NON-PROGRAMMERS

“REAL-TIME” IS MOST IMPORTANT‣ Node.js

PROGRAMMING FOR NON-PROGRAMMERS

PROGRAMMING FOR NON-PROGRAMMERS

Which Language for...?Mobile

PROGRAMMING FOR NON-PROGRAMMERS

iPHONE, iPAD, MAC OS‣ Objective-C

PROGRAMMING FOR NON-PROGRAMMERS

ANDROID‣ java

PROGRAMMING FOR NON-PROGRAMMERS

MOBILE DEVELOPMENT FRAMEWORKS: NATIVE

Appcelerator/Titanium“cross-compiler”

Phone Gap“native wrapper”

PROGRAMMING FOR NON-PROGRAMMERS

CROSS COMPILE W/ APPCELERATOR

Javascript-ish

Objective-CJava

PROGRAMMING FOR NON-PROGRAMMERS

THE WEBWEB SITESWEB APPS

MOBILE WEB

MOBILE WEB

PROGRAMMING FOR NON-PROGRAMMERS

RESPONSIVE DESIGN

Desktop Browser

Safari on iPhone

PROGRAMMING FOR NON-PROGRAMMERS

PHP Ruby

Python

JavaObjective C

WEB

Native Apps

PROGRAMMING FOR NON-PROGRAMMERS

PHP vs. Ruby

PROGRAMMING FOR NON-PROGRAMMERS

2006

RUBY2001

PHP1995

PHPRUBY

today

PHPRUBY

PYTHONPHP

PROGRAMMING FOR NON-PROGRAMMERS

WEB PROGRAMMING LANGUAGESRUBY

Wikipedia

Facebook

Twitter

Hulu+

Groupon

Youtube

GoogleVimeo

PROGRAMMING FOR NON-PROGRAMMERS

And then you were all like...

PROGRAMMING FOR NON-PROGRAMMERS

Q: WELL WHAT ABOUT...

PROTOTYPE

JQUERY

AJAX*

RUBY ON RAILS

BACKBONE.JS

EXTJS

*Ajax is a JavaScript related technique

SASSDJANGO

Frameworks

TO THE CODE!

PROGRAMMING FOR NON-PROGRAMMERS

Q: WELL WHAT ABOUT...

PROTOTYPE

JQUERY

RUBY ON RAILS

BACKBONE.JS

EXTJS

DJANGO

BLUEPRINT

SASS

PROGRAMMING FOR NON-PROGRAMMERS

FUNCTIONdefines a block of code

*I’m giving you permission to use this in the general sense

Functions

Methods

Classes

**

Content Management Systems(CMS)

PROGRAMMING FOR NON-PROGRAMMERS

CONTENT MANAGEMENT SYSTEMS (CMS)

PROGRAMMING FOR NON-PROGRAMMERS

CONTENT MANAGEMENT SYSTEMS (CMS)

Wordpress Expression Engine Custom

?

PROGRAMMING FOR NON-PROGRAMMERS

FUNCTIONdefines a block of code

*I’m giving you permission to use this in the general sense

Functions

Methods

Classes

**

PROGRAMMING FOR NON-PROGRAMMERS

1. Advance right leg forward 0.5697 feet

2. Shift weight to right foot

3. Advance left leg forward 0.5697 feet

4. Shift weight to left foot

walk()

PROGRAMMING FOR NON-PROGRAMMERS

And then you were all like...

PROGRAMMING FOR NON-PROGRAMMERS

Q: WELL WHAT ABOUT...

PROTOTYPE

JQUERY

AJAX*

RUBY ON RAILS

BACKBONE.JS

EXTJS

*Ajax is a JavaScript related technique

SASSDJANGO

PROGRAMMING FOR NON-PROGRAMMERS

WHAT IS A TECH STACK?

III. CODE!Use the Tools

PROGRAMMING FOR NON-PROGRAMMERS

HTML -structure CSS - styleJS - behavior

PROGRAMMING FOR NON-PROGRAMMERS

HTML (noun)CSS (adjective)JS (verb)

PROGRAMMING FOR NON-PROGRAMMERS

HEY CHRIS, CAN YOU...

make the logo bigger?

PROGRAMMING FOR NON-PROGRAMMERS

HEY CHRIS, CAN YOU...

make the logo bigger?CSS

HTML

PROGRAMMING FOR NON-PROGRAMMERS

HEY CHRIS, CAN YOU...

make that grey heading fadein?

PROGRAMMING FOR NON-PROGRAMMERS

HEY CHRIS, CAN YOU...

make that grey heading fadein?JAVASCRIPT

HTML

CSS

PROGRAMMING FOR NON-PROGRAMMERS

4 CONCEPTS...that are the same in every programming language

PROGRAMMING FOR NON-PROGRAMMERS

1. PRINT

PROGRAMMING FOR NON-PROGRAMMERS

2. VARIABLES

PROGRAMMING FOR NON-PROGRAMMERS

POP QUIZ! a = 1

b = 2

c = a + b

c = ?

PROGRAMMING FOR NON-PROGRAMMERS

POP QUIZ! a = 1

b = 2

c = a + b

c = 3

PROGRAMMING FOR NON-PROGRAMMERS

3. FUNCTIONS

PROGRAMMING FOR NON-PROGRAMMERS

4. COMMENTS

PROGRAMMING FOR NON-PROGRAMMERS

ALL THIS STUFF GOES ON A SERVER

top related