1/23 How to become a Guru Coder Michael Smith TeraTech, Inc. 301-424-3903 x110 Copyright.

Slides:



Advertisements
Similar presentations
Code Correctness, Readability, Maintainability Svetlin Nakov Telerik Corporation
Advertisements

P5, M1, D1.
Unit 6 Assignment 2 Chris Boardley.
Coding and Debugging. Requirements and Specification Recall the four steps of problem solving: Orient, Plan, Execute, Test Before you start the implementation.
PHYS 2020 Pseudocode. Real Programmers Program in Pencil!  You can save a lot of time if you approach programming in a methodical way.  1) Write a clear.
1 Program Design Language (PDL) Slides by: Noppadon Kamolvilassatian Source: Code Complete by Steve McConnell, Chapter 4.
Debugging Introduction to Computing Science and Programming I.
API Design CPSC 315 – Programming Studio Fall 2008 Follows Kernighan and Pike, The Practice of Programming and Joshua Bloch’s Library-Centric Software.
Software Engineering and Design Principles Chapter 1.
Informatics 43 – May 12, Restatement of Goals for Testing Want to verify software’s correctness  Need to test  Need to decide on test cases 
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
CFUNITED – The premier ColdFusion conference Mindmaps For Better Programming Michael Smith TeraTech, Inc.
JS Arrays, Functions, Events Week 5 INFM 603. Agenda Arrays Functions Event-Driven Programming.
1/48 Real World FLiP Fusebox Life-cycle Process Michael Smith, TeraTech, Inc
Loops in CF Michael Smith President TeraTech, Inc ColdFusion, Database & VB custom development
Loops in CF: To loop or not to loop? Neil Ross
1/20 1 How to become a Guru Coder Michael Smith, TeraTech, Inc x110 Copyright.
More on Fusebox at Fusebox Development Methodology : More on Fusebox at Fusebox Development Methodology.
Functions Part I (Syntax). What is a function? A function is a set of statements which is split off into a separate entity that can be used like a “new.
ICAPRG301A Week 4Buggy Programming ICAPRG301A Apply introductory programming techniques Program Bugs US Navy Admiral Grace Hopper is often credited with.
Program Design CMSC 201. Motivation We’ve talked a lot about certain ‘good habits’ we’d like you guys to get in while writing code. There are two main.
Decluttering your Software Development Process Michael Smith TeraTech, Inc.
©2003 TeraTech, Inc Fusebox 4 Michael Smith, TeraTech, Inc x110 Copyright TeraTech 2003.
1/36 1 Project Management What works, what doesn’t Michael Smith, TeraTech, Inc
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with Programming Logic & Design First Edition by Tony Gaddis.
XP Tutorial 10New Perspectives on Creating Web Pages with HTML, XHTML, and XML 1 Working with JavaScript Creating a Programmable Web Page for North Pole.
Extended Prelude to Programming Concepts & Design, 3/e by Stewart Venit and Elizabeth Drake Chapter 2: Flowcharts.
SE: CHAPTER 7 Writing The Program
CS 320 Assignment 1 Rewriting the MISC Osystem class to support loading machine language programs at addresses other than 0 1.
Application.cfm tips and Tricks Michael Smith President TeraTech, Inc ColdFusion, database & VB custom development and training.
Cs413_design04.ppt Design and Software Development Design : to create a functional interface that has high usability Development : an organized approach.
Code Development Code development for end user systems.
CFUGs “Why I like CF” Michael Smith President TeraTech, Inc ColdFusion, Database & VB custom development
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
The Software Development Process
Program Style Chapter 22 IB103 Week 12 (part 2). Modularity: the ability to reuse code Encapsulation: hide data access directly but may use methods (the.
TeraTech. Welcome to CFUN-03 Michael Smith President TeraTech, Inc Winner CFDJ Award Best Consulting ColdFusion,
ANU COMP2110 Software Design in 2003 Lecture 10Slide 1 COMP2110 Software Design in 2004 Lecture 12 Documenting Detailed Design How to write down detailed.
Design and Planning Or: What’s the next thing we should do for our project?
04/02/ Procedures Top-down approach / Stepwise Refinement & Sub Procedures.
1/20 1 How to become a Guru Coder Michael Smith, TeraTech, Inc x110 Copyright.
ATS Programming Short Course I INTRODUCTORY CONCEPTS Tuesday, Feb 10th, 2009 Introduction to Programming.
Principles of Programming. Achieving an Object-Oriented Design  Abstraction and Information Hiding  Object-Oriented Design  Functional Decomposition.
XP Tutorial 10New Perspectives on HTML, XHTML, and DHTML, Comprehensive 1 Working with JavaScript Creating a Programmable Web Page for North Pole Novelties.
Implementation Topics Describe –Characteristics of good implementations –Best practices to achieve them Understand role of comments Learn debugging techniques.
Principles of Programming & Software Engineering
For Better Programming
Chapter - 8 Implementation.
Chapter Topics 2.1 Designing a Program 2.2 Output, Input, and Variables 2.3 Variable Assignment and Calculations 2.4 Variable Declarations and Data Types.
© 2015 Pearson Education, Inc., Hoboken, NJ. All rights reserved.
Microsoft Access Illustrated
Testing UW CSE 160 Spring 2018.
Cracking the Coding Interview
ColdFusion And Section 508 Michael Smith, President TeraTech, Inc
Starting Out with Programming Logic & Design
Software Quality Engineering
Design and Programming
PROGRAMMING METHODOLOGY
Software Testing and Maintenance Modifying Code
Unit 6 Assignment 2 Chris Boardley.
Programming.
Program Design Language (PDL)
Data and Flowcharts Session
Starting Out with Programming Logic & Design
CMSC 345 Programming.
Data and Flowcharts Session
Software Development Chapter 1.
Chapter 9: Implementation
ColdFusion Form Handling Michael Smith, President TeraTech, Inc
Presentation transcript:

1/23 How to become a Guru Coder Michael Smith TeraTech, Inc x110 Copyright TeraTech 2004

2/23 What is a Guru Coder?

3/23 Overview A guru coder… Writes great programs that users love to use Code is easy to maintain Works well in teams Has few bugs Is good at solving problems in a simple way Guru coder: born or learned?

4/23 Speaker Information Who am I? Michael Smith President of TeraTech, Inc Rockville MD ttWebReportServer, CFXGraphicserver MDCFUG, CFUN-04, Fusebox Conf Articles in CFDJ, Fusion Authority Winner CFDJ award Best Consulting

5/23 Programming Experience 25 years programming 8 years with ColdFusion 5 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

6/23 Does character matter? Studies show that 85% of a programmers success is due to human factors rather than pure technical skills.

7/23 What human factors does a Guru Coder Have?

8/23 Guru Coder Character Humble Curious Honest Communication Coding conventions Lazy Thinking and Planning

9/23 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 Tweaking forever for perfect code

10/23 Humble My brain can’t take in the whole program at once - use coding crutches Egoless programming, Rewrite complex code Code reviews Ask for help if stuck > 15 minutes Murphy’s law Examples in comments Reference Change Tracker issue# and Desc Document algorithm used

11/23 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

12/23 Modularize to simplify Hide details – black box De-Couple routines Cohesion – do one thing well Test parameters as they come into each module

13/23 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 Likes challenging projects Google skills

14/23 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

15/23 Communication skills WORM code, not WMRO code (spaghetti) Write code for humans to read, not for computer to run Clear s Use the phone, F2F meetings correct understanding Get extra information EQ. Listen to upsets, allow let off steam Remember the user – actors, photo, useability testing

16/23 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 for team

17/23 Coding conventions Save having to think about that part of code Variable and database naming Indenting clarifies meaning InCONsistent Case confuses Avoid poor constructs Bad spelling propagates Scope variables, avoid public

18/23 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 vs reinventing the wheel Write less code – copy existing code, searchable library of code Use a template/ existing document Consistent look between programmers and projects

19/23 Planning Plan before you Code before you Debug Think before you Document before you Code before you Run Test as you go

20/23 More 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

21/23 Good Commenting Comment to relate distant open and close tags Comment – “see below” rather than break up code Don’t make code or comments go off the page horizontally - printable

22/23 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

23/23 Debugging If you can prove your algorithm must work It is less effort than 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 and/or understand what it does, how can it be maintained? Use debug mode variable to get extra info, stop page execution, save to file, to self Take a break, take different approach Use multiple catches

24/23 Resources “Code Complete” by Steve McConnell “The Mythical Man-Month” by Frederick Brooks “Peopleware” by Tom Demarco, et al

25/23 Questions? Ask now or me at