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

Slides:



Advertisements
Similar presentations
How to be a good Programmer
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.
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 
Working with JavaScript. 2 Objectives Introducing JavaScript Inserting JavaScript into a Web Page File Writing Output to the Web Page Working with Variables.
XP 1 Working with JavaScript Creating a Programmable Web Page for North Pole Novelties Tutorial 10.
Chapter 2: Input, Processing, and Output
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
© 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice An FAQ on FAQs for Libraries Pamela.
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.
Personal Character Chapter 33. Outline  Isn't Personal Character Off the Topic?  Intelligence and Humility  Curiosity  Intellectual Honesty  Communication.
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
More on Fusebox at Fusebox Development Methodology : More on Fusebox at Fusebox Development Methodology.
Eng. Mohammed Timraz Electronics & Communication Engineer University of Palestine Faculty of Engineering and Urban planning Software Engineering Department.
ICAPRG301A Week 4Buggy Programming ICAPRG301A Apply introductory programming techniques Program Bugs US Navy Admiral Grace Hopper is often credited with.
COLD FUSION Deepak Sethi. What is it…. Cold fusion is a complete web application server mainly used for developing e-business applications. It allows.
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.
Testing CSE 140 University of Washington 1. Testing Programming to analyze data is powerful It’s useless if the results are not correct Correctness is.
Decluttering your Software Development Process Michael Smith TeraTech, Inc.
Program Development Life Cycle (PDLC)
©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.
Problem of the Day  Why are manhole covers round?
SE: CHAPTER 7 Writing The Program
Application.cfm tips and Tricks Michael Smith President TeraTech, Inc ColdFusion, database & VB custom development and training.
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.
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,
David Streader Computer Science Victoria University of Wellington Copyright: David Streader, Victoria University of Wellington Debugging COMP T1.
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?
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.
04/02/ Procedures Top-down approach / Stepwise Refinement & Sub Procedures.
The single most important skill for a computer programmer is problem solving Problem solving means the ability to formulate problems, think creatively.
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.
Software Design and Development Languages and Environments Computing Science.
XP Tutorial 10New Perspectives on HTML, XHTML, and DHTML, Comprehensive 1 Working with JavaScript Creating a Programmable Web Page for North Pole Novelties.
1/23 How to become a Guru Coder Michael Smith TeraTech, Inc x110 Copyright.
Implementation Topics Describe –Characteristics of good implementations –Best practices to achieve them Understand role of comments Learn debugging techniques.
For Better Programming
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.
Testing UW CSE 160 Spring 2018.
Cracking the Coding Interview
ColdFusion And Section 508 Michael Smith, President TeraTech, Inc
Software Testing and Maintenance Modifying Code
Chapter 15 Debugging.
Program Design Language (PDL)
Data and Flowcharts Session
Data and Flowcharts Session
Software Development Chapter 1.
How to allow the program to know when to stop a loop.
Chapter 9: Implementation
ColdFusion Form Handling Michael Smith, President TeraTech, Inc
Presentation transcript:

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

2/20 2 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?

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

4/20 4 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

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

6/20 6 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 Rewrite complex code

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

8/20 8 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

9/20 9 Communication skills WORM code, not WMRO code Write code for humans to read, not for computer to run Clear s Use the phone correct understanding Get extra information Listen to upsets, allow let off steam Remember the user – actors, photo, useability testing

10/20 10 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

11/20 11 Coding conventions Save having to think about that part of code Variable naming Indenting Clarifies meaning Case Avoid poor constructs

12/20 12 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 projects

13/20 13 Prioritize Plan before you Code before you Debug Think before you Document before you Code before you Run Test as you go

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

15/20 15 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

16/20 16 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, printable

17/20 17 Modularize to simplify Hide details – black box De-Couple routines Cohesion – do one thing well Test parameters

18/20 18 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

19/20 19 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

20/20 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, to self Take a break, take different approach Use multiple catches

21/20 21 Resouces “Code Complete” – Steve McConnell “The Mythical Man-Month” by Frederick Brooks “Peopleware” by Tom Demarco, et al

22/20 22 Questions? me at