"What every beginning developer should know", from Codemash, January 10, 2019
Here's an article that's a sort of companion to the presentation: https://blog.newrelic.com/culture/10-secrets-learned-software-engineering-degree-probably-didnt/
3. Where I'm coming from
32 years of software development
Manager, team leader, hire programmers
I spend a lot of time on StackOverflow
(That's a lot of beginning devs)
15. "All the SQL I know I learned
on the job. Why are
databases an elective? What
doesn’t use a database?"
16. ID Name Manager Salary
1 Smith N 1,000
2 Jones N 1,200
3 Franklin Y 1,500
4 Davis N 800
# 10% raise for non-managers
while (employee = read_employee())
if employee.manager = 'N'
employee.salary *= 1.10
write_employee( employee )
17. ID Name Manager Salary
1 Smith N 1,000
2 Jones N 1,200
3 Franklin Y 1,500
4 Davis N 800
# 10% raise for non-managers
UPDATE employees
SET salary = salary * 1.10
WHERE manager = 'N';
18. Different mindset
# Iterative
while ( employee = read_employee() )
if employee.manager = 'N'
employee.salary *= 1.10
write_employee( employee )
-- Declarative
UPDATE employees
SET salary = salary * 1.10
WHERE manager = 'N';
-- Plus it's faster!
22. Four alphas, hyphen,
two digits
ok = TRUE # Assume OK
for pos ( 0..3 )
if ( !isalpha( substr(partno,pos,1 ) )
ok = FALSE
if substr(partno,4,1) != '-'
ok = FALSE
for pos ( 5..6 )
if ( !isdigit( substr(partno,pos,1 ) )
ok = FALSE
37. A different mindset
ok = TRUE # Assume OK
for pos ( 0..3 )
if ( !isalpha( substr(partno,pos,1 ) )
ok = FALSE
if substr(partno,4,1) != '-'
ok = FALSE
for pos ( 5..6 )
if ( !isdigit( substr(partno,pos,1 ) )
ok = FALSE
... or ...
/^[A-Z]{4}-d{2}$/
44. Don't Repeat Yourself
"Every piece of knowledge must have a
single, unambiguous, authoritative
representation within a system"
-- Andy Hunt & Dave Thomas
"Cut & paste is a headache in waiting."
-- Andy Lester
55. This is your first project on the job
"Look into ticket #3481"
56. Working with
existing code
Assignment 5 in CS 200
Write code that does a thing
Assignment 6
Code review on another random student's Assignment 5
Badmouthing their code = instant F
Assignment 7
Extending the code from Assignments 5+6
65. Work in open source
Working with distributed teams
Source control
Project lifecycle: New features, bugs,
releases, etc
Test-driven development
Written communication
66. Thank you for your time
Andy Lester, @petdance on Twitter
blog.petdance.com
68. You have to have everything
memorized, and if you look
it up you're a loser.
All you have to do is look
things up on the Internet
and use those answers.
69. Three traits of a
great programmer
Laziness
Impatience
Hubris
-- Larry Wall, creator of patch & Perl
70. Laziness
The quality that makes you go to great
effort to reduce overall energy expenditure.
It makes you write labor-saving programs
that other people will find useful and
document what you wrote so you don't have
to answer so many questions about it.