Tech Talk @ Dev Bootcamp Chicago

Preview:

DESCRIPTION

The talk I gave at Dev Bootcamp Chicago. It is about how to becoming a better programmer as someone new to programmer.

Citation preview

!1

@Dev Bootcamp Winter Is Coming. You are not ready.

!2

Fred Lee CIO/CTO

Enova

fred@enova.com@fredlee

!3

Closing the World’s Credit Gap Helping hardworking people to fulfill their financial responsibilities with fast, trustworthy credit

Founded in 2004. Online financial services in the US, UK, AU, CA and MX. 80 million page views Over 3 million customers

Company

!4

440. 170 in Technology.Employees

!5

Customer First. ‘Best’ Answer Wins. Accountability and Results. Top Talent and Teamwork. Operate as an Owner.

Values

!6

!7

IT & Systems Engineering

!8

Software Engineering

!9

!10

PostgreSQL

!11

Linux

!12

The Survey Asked recent graduates at Enova. It was totally scientific.

!13

How has your undergraduate studies NOT prepared you for doing software engineering in the real world?

!14

Think of the best real world programmer you know. What skills or traits do they possess?

!15

What skill is MOST important in the real world?

Bringing the Big Data!A Pie Chart

!16

11

141

7

5

92

Good CodeCommunicationExisting SystemsExperienceIntelligenceLearningCoding Practices

What I will talk about . . .Three Things

!17

Learning Coding Practices

Existing Systems

!18

Learning

!19

“Ability to learn new things quickly (complemented by a desire to keep learning).”

U of Chicago

!20

“The ability and willingness to learn.”

Rose-Hulman

!21

Peter Drucker “We now accept the fact that learning is a lifelong process of keeping abreast of change. And the most pressing task is to teach people how to learn.”

!22

Peter Drucker “We now accept the fact that learning is a lifelong process of keeping abreast of change. And the most pressing task is to teach people how to learn.”

!23

The ability to learn is more closely tied to humility than anything else.

Watch out! You are gonna have to get humble.3 ways to learn

!24

!25

Do Learn to learn by doing.

!26

Skill + Tenacity

!27

Skill + Tenacity = Skillnacity

!28

Skill + Tenacity = Skillnacity™

!29

Sophocles "One must learn by doing the thing; for though you think you know it, you have no certainty, until you try."

!30

Sophocles "One must learn by doing the thing; for though you think you know it, you have no certainty, until you try."

Watch out! You are gonna have to get humble. !First: Do

3 ways to learn

!31

!32

Co(mmunity) Community. Find people who are better than you. Now, surround yourself with them.

!33

Pat Metheny “Be the worst guy in every band you’re in.”

Watch out! You are gonna have to get humble. !First: Do Second: Co(mmunity)

3 ways to learn

!34

!35

Go Meet-ups. Conferences. Jobs. Opportunities. Tech Talks. Dev Bootcamp.

Chicago Tech CommunityPlaces to Go

!36

Chicago Ruby

http://chicagoruby.org/

@chicagoruby

73 “Internet & Technology” Meetups near Chicago, IL

Watch out! You are gonna have to get humble. !First: Do Second: Co(mmunity) Third: Go

3 ways to learn

!37

!38

Coding Practices

!39

“. . . they always try to follow the best practices. They also learn from their mistakes, learn why it happened and how to avoid them in future.”

Carnegie Mellon University

!40

“They have a strong passion for learning about our craft . . .

Rose-Hulman

!41

Kent Beck "..the problem [with software projects] isn't change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes."

!42

Kent Beck "..the problem [with software projects] isn't change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes."

!43

The only way to write code that can cope with change is by testing your code.

!44

How do you test this?

!45

Yes. This will do.

!46

Acceptance Testing

!47

Integration Testing

!48

Unit Testing

Not what you think. !First: Test your code.

Coding Practices

!49

!50

Code Design What about great OO design? Doesn’t that allow you to cope with change?

!51

Design All design trends towards wrong.

!52

Mike Tyson “Everyone has a plan ‘til they get punched in the mouth.”

!53

Mike Tyson “Everyone has a DESIGN ‘til they get punched in the mouth.”

Not what you think. !First: Test your code. Second: Don’t worry about design. Test your code instead.

Coding Practices

!54

!55

Read Reading code is a Coding Practice.

!56

Read Most of your time will be spent reading code, not writing it.

!57

Read Most of your time will be spent reading code, not writing it. Correction: Reading ugly code.

Don’t believe me? Here’s a chart!A Pie Chart

!58

45

45

55

Being AwesomeWriting CodeReading CodeGetting upset at bad code before you realize that you wrote it a week ago.

!59

Read > Write Can you write before you can read?

!60

Stephen King “If you don’t have time to read, you don’t have the time (or the tools) to write. Simple as that.”

Not what you think. !First: Test your code. Second: Don’t worry about design. Test your code instead. Third: Go read some code. Try github.com.

Coding Practices

!61

!62

Existing Systems

!63

“Very little emphasis is placed on understanding existing code, and integrating with existing design paradigms”

University of Michigan

!64

“there was never really any talk about how hardware or networking issues can affect a projects implementation or how those need to be taken into account when planning a project.”

Carnegie Mellon University

!65

Realize What is the code? What is the system? Is there a difference?

More than you realize. Web Application.The System

!66

Sixth Layer

Hardware File Systems Data Center

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

More than you realize. Web Application.The System

!67

Sixth Layer

Hardware File Systems Data Center

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

OS DiskVirtualization

More than you realize. Web Application.The System

!68

Sixth Layer

Hardware File Systems Data Center

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

OS DiskVirtualization

App/Web Server Database

More than you realize. Web Application.The System

!69

Sixth Layer

Hardware File Systems Data Center

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

OS DiskVirtualization

App/Web Server Database

Code 3rd Party Integration

More than you realize. Web Application.The System

!70

Sixth Layer

Hardware File Systems Data Center

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

OS DiskVirtualization

App/Web Server Database

Code 3rd Party Integration

Internet Browsers Devices

More than you realize. Web Application.The System

!71

Sixth Layer

Hardware File Systems Data Center

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

OS DiskVirtualization

App/Web Server DatabaseApp/Web Server Database

Code 3rd Party Integration

Internet Browsers Devices

New Users

Old Users

Bad Users Fraud Security Dev QA God

!72

How does this affect your system?

!73

@Dev BootcampIn Review

!74

The Survey

@Dev BootcampIn Review

!75

The Survey

Learning

@Dev BootcampIn Review

!76

The Survey

Learning

Coding Practices

@Dev BootcampIn Review

!77

The Survey

Learning

Coding Practices

Existing Systems

I’m the CIO/CTO at Enova. AMA./r/ama

!78

!79

Fred Lee CIO/CTO

Enova

fred@enova.com@fredlee

!80

Recommended