Top Banner
1 @Dev Bootcamp Winter Is Coming. You are not ready.
80

Tech Talk @ Dev Bootcamp Chicago

Dec 25, 2014

Download

Technology

Fred Lee

The talk I gave at Dev Bootcamp Chicago. It is about how to becoming a better programmer as someone new to programmer.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Tech Talk @ Dev Bootcamp Chicago

!1

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

Page 3: Tech Talk @ Dev Bootcamp Chicago

!3

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

Page 4: Tech Talk @ Dev Bootcamp Chicago

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

Company

!4

Page 5: Tech Talk @ Dev Bootcamp Chicago

440. 170 in Technology.Employees

!5

Page 6: Tech Talk @ Dev Bootcamp Chicago

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

Values

!6

Page 7: Tech Talk @ Dev Bootcamp Chicago

!7

IT & Systems Engineering

Page 8: Tech Talk @ Dev Bootcamp Chicago

!8

Software Engineering

Page 9: Tech Talk @ Dev Bootcamp Chicago

!9

Page 10: Tech Talk @ Dev Bootcamp Chicago

!10

PostgreSQL

Page 11: Tech Talk @ Dev Bootcamp Chicago

!11

Linux

Page 12: Tech Talk @ Dev Bootcamp Chicago

!12

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

Page 13: Tech Talk @ Dev Bootcamp Chicago

!13

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

Page 14: Tech Talk @ Dev Bootcamp Chicago

!14

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

Page 15: Tech Talk @ Dev Bootcamp Chicago

!15

What skill is MOST important in the real world?

Page 16: Tech Talk @ Dev Bootcamp Chicago

Bringing the Big Data!A Pie Chart

!16

11

141

7

5

92

Good CodeCommunicationExisting SystemsExperienceIntelligenceLearningCoding Practices

Page 17: Tech Talk @ Dev Bootcamp Chicago

What I will talk about . . .Three Things

!17

Learning Coding Practices

Existing Systems

Page 18: Tech Talk @ Dev Bootcamp Chicago

!18

Learning

Page 19: Tech Talk @ Dev Bootcamp Chicago

!19

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

U of Chicago

Page 20: Tech Talk @ Dev Bootcamp Chicago

!20

“The ability and willingness to learn.”

Rose-Hulman

Page 21: Tech Talk @ Dev Bootcamp Chicago

!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.”

Page 22: Tech Talk @ Dev Bootcamp Chicago

!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.”

Page 23: Tech Talk @ Dev Bootcamp Chicago

!23

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

Page 24: Tech Talk @ Dev Bootcamp Chicago

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

!24

Page 25: Tech Talk @ Dev Bootcamp Chicago

!25

Do Learn to learn by doing.

Page 26: Tech Talk @ Dev Bootcamp Chicago

!26

Skill + Tenacity

Page 27: Tech Talk @ Dev Bootcamp Chicago

!27

Skill + Tenacity = Skillnacity

Page 28: Tech Talk @ Dev Bootcamp Chicago

!28

Skill + Tenacity = Skillnacity™

Page 29: Tech Talk @ Dev Bootcamp Chicago

!29

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

Page 30: Tech Talk @ Dev Bootcamp Chicago

!30

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

Page 31: Tech Talk @ Dev Bootcamp Chicago

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

3 ways to learn

!31

Page 32: Tech Talk @ Dev Bootcamp Chicago

!32

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

Page 33: Tech Talk @ Dev Bootcamp Chicago

!33

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

Page 34: Tech Talk @ Dev Bootcamp Chicago

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

3 ways to learn

!34

Page 35: Tech Talk @ Dev Bootcamp Chicago

!35

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

Page 36: Tech Talk @ Dev Bootcamp Chicago

Chicago Tech CommunityPlaces to Go

!36

Chicago Ruby

http://chicagoruby.org/

@chicagoruby

73 “Internet & Technology” Meetups near Chicago, IL

Page 37: Tech Talk @ Dev Bootcamp Chicago

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

3 ways to learn

!37

Page 38: Tech Talk @ Dev Bootcamp Chicago

!38

Coding Practices

Page 39: Tech Talk @ Dev Bootcamp Chicago

!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

Page 40: Tech Talk @ Dev Bootcamp Chicago

!40

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

Rose-Hulman

Page 41: Tech Talk @ Dev Bootcamp Chicago

!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."

Page 42: Tech Talk @ Dev Bootcamp Chicago

!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."

Page 43: Tech Talk @ Dev Bootcamp Chicago

!43

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

Page 44: Tech Talk @ Dev Bootcamp Chicago

!44

How do you test this?

Page 45: Tech Talk @ Dev Bootcamp Chicago

!45

Yes. This will do.

Page 46: Tech Talk @ Dev Bootcamp Chicago

!46

Acceptance Testing

Page 47: Tech Talk @ Dev Bootcamp Chicago

!47

Integration Testing

Page 48: Tech Talk @ Dev Bootcamp Chicago

!48

Unit Testing

Page 49: Tech Talk @ Dev Bootcamp Chicago

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

Coding Practices

!49

Page 50: Tech Talk @ Dev Bootcamp Chicago

!50

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

Page 51: Tech Talk @ Dev Bootcamp Chicago

!51

Design All design trends towards wrong.

Page 52: Tech Talk @ Dev Bootcamp Chicago

!52

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

Page 53: Tech Talk @ Dev Bootcamp Chicago

!53

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

Page 54: Tech Talk @ Dev Bootcamp Chicago

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

Coding Practices

!54

Page 55: Tech Talk @ Dev Bootcamp Chicago

!55

Read Reading code is a Coding Practice.

Page 56: Tech Talk @ Dev Bootcamp Chicago

!56

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

Page 57: Tech Talk @ Dev Bootcamp Chicago

!57

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

Page 58: Tech Talk @ Dev Bootcamp Chicago

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.

Page 59: Tech Talk @ Dev Bootcamp Chicago

!59

Read > Write Can you write before you can read?

Page 60: Tech Talk @ Dev Bootcamp Chicago

!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.”

Page 61: Tech Talk @ Dev Bootcamp Chicago

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

Page 62: Tech Talk @ Dev Bootcamp Chicago

!62

Existing Systems

Page 63: Tech Talk @ Dev Bootcamp Chicago

!63

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

University of Michigan

Page 64: Tech Talk @ Dev Bootcamp Chicago

!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

Page 65: Tech Talk @ Dev Bootcamp Chicago

!65

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

Page 66: Tech Talk @ Dev Bootcamp Chicago

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

Page 67: Tech Talk @ Dev Bootcamp Chicago

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

Page 68: Tech Talk @ Dev Bootcamp Chicago

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

Page 69: Tech Talk @ Dev Bootcamp Chicago

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

Page 70: Tech Talk @ Dev Bootcamp Chicago

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

Page 71: Tech Talk @ Dev Bootcamp Chicago

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

Page 72: Tech Talk @ Dev Bootcamp Chicago

!72

How does this affect your system?

Page 73: Tech Talk @ Dev Bootcamp Chicago

!73

Page 74: Tech Talk @ Dev Bootcamp Chicago

@Dev BootcampIn Review

!74

The Survey

Page 75: Tech Talk @ Dev Bootcamp Chicago

@Dev BootcampIn Review

!75

The Survey

Learning

Page 76: Tech Talk @ Dev Bootcamp Chicago

@Dev BootcampIn Review

!76

The Survey

Learning

Coding Practices

Page 77: Tech Talk @ Dev Bootcamp Chicago

@Dev BootcampIn Review

!77

The Survey

Learning

Coding Practices

Existing Systems

Page 78: Tech Talk @ Dev Bootcamp Chicago

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

!78

Page 80: Tech Talk @ Dev Bootcamp Chicago

!80