Fred Lee, CIO/CTO of Enova, gave a presentation to recent graduates summarizing the key skills needed for software engineering in the real world. He discussed that the ability to learn, use proper coding practices like testing code, and understanding existing systems are the most important skills, rather than what is traditionally taught. Real-world programmers must have humility to keep learning from doing, communities, and going to events. They should focus on testing code over design and spend more time reading code than writing it to understand existing systems that software needs to integrate with.
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.”
!21
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.”
!22
23. The ability to learn is more
closely tied to humility than
anything else.
!23
24. 3 ways to learn
Watch out! You are gonna have to get humble.
!24
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
!39
40. “They have a strong passion for learning about
our craft . . .
Rose-Hulman
!40
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."
!41
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."
!42
43. The only way to write code that
can cope with change is by
testing your code.
!43
56. Read
Most of your time will be spent reading code, not
writing it.
!56
57. Read
Most of your time will be spent reading code, not
writing it. Correction: Reading ugly code.
!57
58. 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
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.”
!60
61. 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
63. “Very little emphasis is placed on
understanding existing code, and
integrating with existing design
paradigms”
University of Michigan
!63
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
!64
66. 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
67. 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
68. 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
69. 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
70. 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
71. 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