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

!1
Enova
Fred Lee
CIO/CTO
fred@enova.com
@fredlee

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

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

!4
Employees

440. 170 in Technology.

!5
Values

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

!6
IT & Systems Engineering
!7
Software Engineering
!8
!9
PostgreSQL
!10
Linux
!11
The Survey
Asked recent graduates at Enova. It was totally
scientific.
!12
How has your undergraduate
studies NOT prepared you for
doing software engineering in
the real world?

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

!14
What skill is MOST important in
the real world?

!15
A Pie Chart

Bringing the Big Data!

11

2
9

5
14
1

Good Code
Communication
Existing Systems
Experience
Intelligence
Learning
Coding Practices

7

!16
Three Things

What I will talk about . . .

Learning

Coding
Practices

Existing
Systems

!17
Learning
!18
“Ability to learn new things quickly
(complemented by a desire to keep
learning).”
U of Chicago
!19
“The ability and willingness to learn.”

Rose-Hulman
!20
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.”
!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
The ability to learn is more
closely tied to humility than
anything else.

!23
3 ways to learn

Watch out! You are gonna have to get humble.

!24
Do
Learn to learn by doing.

!25
Skill + Tenacity

!26
Skill + Tenacity = Skillnacity

!27
Skill + Tenacity = Skillnacity™

!28
Sophocles
"One must learn by doing the thing; for though
you think you know it, you have no certainty, until
you try."
!29
Sophocles
"One must learn by doing the thing; for though
you think you know it, you have no certainty, until
you try."
!30
3 ways to learn

Watch out! You are gonna have to get humble.
!

First: Do

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

!32
Pat Metheny
“Be the worst guy in every band you’re in.”
!33
3 ways to learn

Watch out! You are gonna have to get humble.
!

First: Do
Second: Co(mmunity)

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

!35
Places to Go

Chicago Tech Community

Chicago Ruby

http://chicagoruby.org/
@chicagoruby

73 “Internet & Technology” Meetups near
Chicago, IL

!36
3 ways to learn

Watch out! You are gonna have to get humble.
!

First: Do
Second: Co(mmunity)
Third: Go

!37
Coding Practices

!38
“. . . 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
!39
“They have a strong passion for learning about
our craft . . .

Rose-Hulman
!40
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."

!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
The only way to write code that
can cope with change is by
testing your code.

!43
How do you test
this?
!44
Yes. This will do.
!45
Acceptance
Testing
!46
Integration
Testing
!47
Unit Testing
!48
Coding Practices
Not what you think.
!

First: Test your code.

!49
Code Design
What about great OO design? Doesn’t that allow
you to cope with change?
!50
Design
All design trends towards wrong.

!51
Mike Tyson
“Everyone has a plan ‘til they get punched in the
mouth.”
!52
Mike Tyson
“Everyone has a DESIGN ‘til they get punched in
the mouth.”
!53
Coding Practices
Not what you think.
!

First: Test your code.
Second: Don’t worry about design. Test your code
instead.

!54
Read
Reading code is a Coding Practice.
!55
Read
Most of your time will be spent reading code, not
writing it.

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

!57
A Pie Chart

Don’t believe me? Here’s a chart!
Being Awesome
Writing Code
Reading Code
Getting upset at bad code before you realize that you wrote it a week ago.

5

5

45
45

!58
Read > Write
Can you write before you can read?

!59
Stephen King
“If you don’t have time to read, you don’t have
the time (or the tools) to write.
Simple as that.”
!60
Coding Practices
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.

!61
Existing Systems
!62
“Very little emphasis is placed on
understanding existing code, and
integrating with existing design
paradigms”
University of Michigan
!63
“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
!64
Realize
What is the code? What is the system? Is there a
difference?

!65
The System

More than you realize. Web Application.
Sixth Layer

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

Hardware

File Systems

Data
Center

!66
The System

More than you realize. Web Application.
Sixth Layer

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

OS

Hardware

Virtualization

File Systems

Disk
Data
Center

!67
The System

More than you realize. Web Application.
Sixth Layer

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

App/Web Server

OS

Hardware

Database

Virtualization

File Systems

Disk
Data
Center

!68
The System

More than you realize. Web Application.
Sixth Layer

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

Code

3rd Party Integration

App/Web Server

OS

Hardware

Database

Virtualization

File Systems

Disk
Data
Center

!69
The System

More than you realize. Web Application.
Sixth Layer

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

Internet

Browsers

Code

3rd Party Integration

App/Web Server

OS

Hardware

Devices

Database

Virtualization

File Systems

Disk
Data
Center

!70
The System

More than you realize. Web Application.
Sixth Layer

Fifth Layer

Fourth Layer

Third Layer

Second Layer

First Layer

New
Users

Old
Users

Bad
Users

Fraud

Internet

Security

Dev

QA

Browsers

Code

Hardware

Devices

3rd Party Integration

App/Web Server

OS

God

Database

Virtualization

File Systems

Disk
Data
Center

!71
How does this
affect your system?
!72
!73
In Review

@Dev Bootcamp

The Survey

!74
In Review

@Dev Bootcamp

The Survey
Learning

!75
In Review

@Dev Bootcamp

The Survey
Learning
Coding Practices

!76
In Review

@Dev Bootcamp

The Survey
Learning
Coding Practices
Existing Systems

!77
/r/ama

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

!78
Enova
Fred Lee
CIO/CTO
fred@enova.com
@fredlee

!79
!80

Tech Talk @ Dev Bootcamp Chicago