intro to software engineering for non-it audience

29
© Yuriy Guts, 2013

Upload: yuriy-guts

Post on 01-Jul-2015

188 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Intro to Software Engineering for non-IT Audience

© Yuriy Guts, 2013

Page 2: Intro to Software Engineering for non-IT Audience

What do we actually do?

Page 3: Intro to Software Engineering for non-IT Audience

Myth #1

Our job is to operate computers

Page 4: Intro to Software Engineering for non-IT Audience

Computer is merely a helper tool in programming

Programmers can even weave cloth!

(Google: Jacquard Loom)

Page 5: Intro to Software Engineering for non-IT Audience

Myth #2

Machines can think

Page 6: Intro to Software Engineering for non-IT Audience

They do only what they’re told to do. Not quite yet.

Our job:

Describe absolutely precisely what to do

Page 7: Intro to Software Engineering for non-IT Audience

We have to speak the same language

For computers, this language is numbers

Page 8: Intro to Software Engineering for non-IT Audience

How to tell the computer to add 19+23?

Example:

160  16  1  138  30  17  1  2  195  162  18  1  180  76  205  33  19  23  

(Intel 80386, MS-DOS, .COM)

Page 9: Intro to Software Engineering for non-IT Audience

Fact:

Modern software consists of MILLIONS of instructions

Page 10: Intro to Software Engineering for non-IT Audience

Is there a simpler way?!

Page 11: Intro to Software Engineering for non-IT Audience

Let’s create a more human-readable language and let the computer translate it to numbers

.model  tiny  

.386    .data          num1    db  19          num2    db  23          sum      db  ?      .code  org  100h  

start:          mov      al,  num1            mov      bl,  num2            add      al,  bl          mov      sum,  al            mov      ah,  4ch            int      21h      end  start  

Page 12: Intro to Software Engineering for non-IT Audience

How is THAT simpler?!

Page 13: Intro to Software Engineering for non-IT Audience

To make things easier, we must abstract away from unimportant details

This is why new technologies appear

They allow us to focus on some details and ignore others

Page 14: Intro to Software Engineering for non-IT Audience

How to tell the computer to add 19+23?

Example (Python):

print  19  +  23  

Page 15: Intro to Software Engineering for non-IT Audience

That’s way better

Page 16: Intro to Software Engineering for non-IT Audience

How to ensure efficient and reliable storage?

Some famous abstractions

Databases

Networks

How to search and edit data conveniently?

How to make machines collaborate?

How to split difficult tasks among multiple machines?

Page 17: Intro to Software Engineering for non-IT Audience

Myth #3

It’s a boring and tedious job

Page 18: Intro to Software Engineering for non-IT Audience

An engineer is concerned with applying scientific knowledge and ingenuity to develop solutions for

technical, social and economic problems.

Ingenuity — [Wiki] The quality of being clever, original, and inventive, often in the process of applying ideas to

solve problems or meet challenges.

Code is only an end result. A good engineering design is comparable to art.

Page 19: Intro to Software Engineering for non-IT Audience

Types of software

Desktop Web

Mobile Embedded

(by means of access)

Page 20: Intro to Software Engineering for non-IT Audience

Desktop

•  Rich hardware capabilities

•  Many applications already have online alternatives

•  Adobe Photoshop

•  Microsoft Office

•  “Heavy” 3D games

Examples

Specifics

Software for workstations and laptops

Page 21: Intro to Software Engineering for non-IT Audience

Web

•  Distributed nature

•  Many simultaneous users

•  Unified access from many devices

•  Facebook

•  Wikipedia

•  Google Search

Examples

Specifics

Software accessible over the Internet

Page 22: Intro to Software Engineering for non-IT Audience

Mobile

•  Energy-efficiency, limited capabilities

•  Sensors: GPS, gyro, accelerometer, ...

•  Large family of devices and sizes

•  Instagram

•  Foursquare

•  iBooks

Examples

Specifics

Software for handheld consumer devices

Page 23: Intro to Software Engineering for non-IT Audience

Embedded

•  Limited user interaction

•  Low-level programming

•  Speed and reliability constraints

•  Medical devices

•  Airplane “black boxes”

•  Security systems

Examples

Specifics

Specialized device-specific integrated software

Page 24: Intro to Software Engineering for non-IT Audience

Popular programming languages

Java C#

JavaScript Objective-C

C++ Python

PHP Ruby

Functional (Scala, Haskell, Erlang, Lisp family...)

(as of Q1 2013)

Page 25: Intro to Software Engineering for non-IT Audience

Myth #4

Learning the “right” language will make you a good professional

Every language is a tool, know when to use it

Page 26: Intro to Software Engineering for non-IT Audience

Learning and switching

Page 27: Intro to Software Engineering for non-IT Audience

Types of IT professionals

System Analysts Project Managers

Software Architects Technical Writers

Software Developers System Administrators

QA Engineers Support Engineers

Page 28: Intro to Software Engineering for non-IT Audience

Software development lifecycle

Requirement analysis + user experience prototyping

Choice of technology stack & architecture

Design and implementation

Quality assurance and monitoring

Deployment

Maintenance and support iterative

Page 29: Intro to Software Engineering for non-IT Audience

Q & A

[email protected]