How to become a
Guru Coder
Michael Smith, TeraTech, Inc.
michael@teratech.com
http://www.teratech.com
301-424-3903 x110
Copyright TeraTech 2004
1 www.teratech.com 1/20
Overview
What makes a smart coder?
Brains or communications skills?
Does commenting matter to real
programmers?
My Code is my Comment.
What tips can you learn to become
a true programming guru?
2 www.teratech.com 2/20
Speaker Information
Who am I?
Michael Smith
President of TeraTech, Inc Rockville
MD
http://www.teratech.com/
ttWebReportServer, CFXGraphicserver
MDCFUG, CFUN-03, Fusebox Conf
Articles in CFDJ, Fusion Authority
Winner CFDJ award Best Consulting
3 www.teratech.com 3/20
Programming Experience
22 years programming
7 years with ColdFusion
4 years with Fusebox
Also work with SQL, JavaScript, HTML,
VB, Oracle, Access
Teach one-on-one and custom classes
On site and custom development
Fusebox and Process Methodology
4 www.teratech.com 4/20
Does character matter?
Studies show that 85% of a programmers
success is due to human factors rather
than pure technical skills.
5 www.teratech.com 5/20
Humble
My brain can’t take in the whole program at
once
Use coding crutches
Egoless programming
Code reviews
Ask for help if stuck > 15 minutes
Murphy’s law
Examples in comments
Reference Change Tracker issue# and Desc
Document algorithm used
6 www.teratech.com 6/20
Curious
How can I improve?
Constantly learning
Experiment
Problem solving and planning skills
Case studies - Programming Pearls,
alphablox.com, open source sourceforge.net
RTFM and magazines, websites
Have challenging projects
Google skills
7 www.teratech.com 7/20
Honesty
I don’t know
I was wrong
Fix bugs rather than covering up
Understand code before you run it
True status reports – including “bad” news
Stand by accurate estimates
8 www.teratech.com 8/20
Communication skills
WORM code, not WMRO code
Write code for humans to read, not for computer
to run
Clear emails
Use the phone
correct understanding
Get extra information
Listen to upsets, allow let off steam
Remember the user – actors, photo, useability
testing
9 www.teratech.com 9/20
Coding conventions
Save having to think about that part of code
Variable naming
Database naming
Correct spelling propagates
Indenting
Case
Avoid poor constructs
Scope variables, avoid public
http://www.cfug-md.org/articles.cfm#code
10 www.teratech.com 10/20
Coding conventions
Save having to think about that part of
code
Variable naming
Indenting
Clarifies meaning
Case
Avoid poor constructs
http://www.cfug-md.org/articles.cfm#code
11 www.teratech.com 11/20
Lazy
Write smart code instead of repetition of code
Write or use a tool instead of repeating steps by
hand
Macros in your code editor
Use a pre-built tool instead of reinventing the
wheel
Write less code – copy existing code,
searchable library of code
Using template, existing document
Consistent look between programmers and
12 projects www.teratech.com 12/20
Prioritize
Plan before you Code before you Debug
Think before you Document before you
Code before you Run
Test as you go
13 www.teratech.com 13/20
Not as important
Persistence – pigheaded
Experience – is 10 years of experience or
10 x 1 year’s experience?
Jolt programming – all nighters
Code disappear can be good – chance to
rewrite
Avoid tweaking for ever for perfect code
14 www.teratech.com 14/20
Good habits
Code and understand before running
End loops before coding the “filling”
Don’t go long with code “broken”
Plan before coding
Figure out how you will test code before coding
Take a break; sleep on problems
“Telephone” review of problem to a buddy
Write algorithm on whiteboard – diagram
Comment to relate distant open and close tags
15 www.teratech.com 15/20
Reduce complexity
Avoid global data
Short routines, few parameters
Limited nesting
Data driven vs complex logic
Named constants – rather than magic numbers
Descriptive names – variable, database, files,
short, no weird characters
Comment – see below rather than break up
code
Don’t make code or comments horizontally,
16 printable www.teratech.com 16/20
Modularize to simplify
Hide details – black box
De-Couple routines
Cohesion – do one thing well
Test parameters
17 www.teratech.com 17/20
Code for humans to read
WORM code is easier to:
Understand
Review
Less errors
Faster to debug
Easier to modify
Faster to develop overall
Sets a good habit
18 www.teratech.com 18/20
Defensive coding
If it can go wrong it will go wrong
Check parameters exist and data type
Throw errors if assumptions not met
Always code the ELSE part of IF
19 www.teratech.com 19/20
Debugging
If you can prove your algorithm must work
It is less effort to Debug.
Test Parameters at and beyond their limits.
(Some tests must show a failure)
Keep it Simple, Stupid (Kiss)
If you can’t remember what it does, how can it be
maintained?
Use debug mode variable to get extra info, stop
page execution, save to file, email to self
Take a break, take different approach
20 Use multiple catches
www.teratech.com 20/20
Resouces
“Code Complete” – Steve McConnell
“The Mythical Man-Month” by Frederick
Brooks
“Peopleware” by Tom Demarco, et al
21 www.teratech.com 21/20
Questions?
Email me at
michael@teratech.com
22 www.teratech.com 22/20