I'm a great believer in coding standards. In well commented code. In a good choice of variable names, of code re-use, and of thinking before you write. There are points which I stress on every course, even if the majority of the time I spend is on the actual language. So I should not have been surprised to have been asked if I could provide a "
Good Practice Course" along the lines of the specification below.
I applaud the customer who has asked, I think it will be very worthwhile for them ... BUT I myself don't have the training / knowledge of the formal skills and more academic issues (nor course notes) to deliver, and I have "no bid". I'm very happy to overview / spend a day on these topics. But not a week. Which brought the question "do you know anyone who CAN help?".
I know this gets read / found - please get in touch (graham@wellho.net) if you can help - I'll pass on your details and let you talk direct.
Source Code Control
Distributed Version Control (DVC)
[Setup, users, locks, branches, logs, merges]
Testing
TATFT (Test All The $&?#+[\] Time)
BDD/TDD (Behaviour Driven Development / Test Driven Deveopment)
Unit tests
Continuous Integration
Naming conventions
[variables, functions, filenames]
Code Inspections
Design
Unified Modelling Language (UML)
Design Patterns
[Factory, Memoization, Facade, Singleton, Strategy]
MVC (Model, View, Controller)
Documentation
Design documents
Code Structure
DRY principle (Don't repeat yourself)
Code smells
WTF/s
Demeter's Laws
Running Well
Serviceability and efficiency
Analysis of Algorithms
[IO bound, Memory bound, Performance analyisis]
Code to handle code
Metaprogramming
2nd order functions
Continuations
Convention over configuration
DSL (Domain Specific Languages)
I would personally add the following to a genaral programming techniques course:
User support and user documentation. Team communications and co-ordination. WIBNIF (Wouldn't it be nice if). Extreme and pair programming. Library design and maintenance. Backup and contingency. Requirement specification and portability. Security of code - legal and abuse prevention. Inherently stable code. Algorithm design.
Final note - the examples illustrating this course should be in an appropriate Open Source language - I am happy to talk with anyone who's interested in delivering the course about where it would be (long way from Melksham) when it's needed (very soon!) and which language it's in.
(written 2009-08-05)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Q908 - Object Orientation and General technical topics - Object Orientation: Design Patterns [485] North, Norther and Northest - PHP 5 Objects - (2005-11-04)
[1224] Object Relation Mapping (ORM) - (2007-06-09)
[2741] What is a factory? - (2010-04-26)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[3608] Design Patterns - what are they? Why use them? - (2012-02-12)
[3716] Learning C++ - a design pattern for your first class - (2012-05-02)
[3810] Reading files, and using factories to create vectors of objects from the data in C++ - (2012-07-21)
[3843] Caching Design Patterns - (2012-08-20)
[4021] Spike solution, refactored and reusable, Python - Example - (2013-02-28)
[4096] Perl design patterns example - (2013-05-20)
[4098] Using object orientation for non-physical objects - (2013-05-22)
[4325] Learning to program - what are algorithms and design patterns? - (2014-11-22)
[4330] Java - factory method, encapsulation, hashmap example - (2014-11-27)
[4356] Object factories in C++, Python, PHP and Perl - (2014-12-19)
[4359] How to avoid too many recalculations within an object - (2014-12-21)
[4377] Designing a base class and subclasses, and their extension, in C++ - (2015-01-01)
[4396] Java Utility class - flexible replacement for array. Also cacheing in objects and multiple catch clauses example. - (2015-01-16)
[4421] How healthy are the stars of stage and screen? - (2015-02-09)
[4581] Thin application, thick objects - keep you main code simple. Example in Ruby - (2015-11-21)
[4626] Singleton design pattern - examples and uses - (2016-01-20)
[4663] Easy data to object mapping (csv and Python) - (2016-03-24)
[4673] Separating detailed data code from the main application - Ruby example - (2016-05-16)
Q050 - Object Orientation and General technical topics - General Technical Subjects [462] Big number - (2005-10-12)
[2099] Should I maintain the programming code on my own website? - (2009-03-23)
[2568] Forums for your Melksham and open source discussions - (2010-01-09)
[2800] The Merchants And - (2010-06-09)
[3112] Public and private courses - subjects available for 2011 - (2010-12-29)
[3213] Should I use Open Source or Commercial software? - (2011-03-26)
G906 - Well House Consultants - Programming Standards [148] Programming in isolation - (2004-12-11)
[272] More to programming than just programming - (2005-04-08)
[343] Should I use structured or object oriented? - (2005-06-10)
[356] Sudoku helper or sudoku cheat - (2005-06-23)
[945] Code quality counts - (2006-11-26)
[1596] Selling curry to the chinese takeaway - (2008-03-31)
[1679] PHP - Sanitised application principles for security and useability - (2008-06-16)
[1852] Perl and Blackberries - (2008-10-23)
[2363] Alpaca Case or Camel Case - (2009-08-16)
[2364] Getting it right from the start - new programmers - (2009-08-17)
[3685] Programming Standards in Lua - (2012-04-06)
Some other Articles
Learn a new programming language this summer.Apache, Tomcat, mod_proxyWhat search terms FAIL to bring visitors to our site, when they should?Java Collection Objects in the java.util packageLooking for a practical standards courseUploading and Downloading files - changing names (Perl and PHP)Helping new arrivals find out about source code examplesGraphics in Lua - an example using the gd libraryFor Lua Programmers AND for Town PlannersHow to make a Risotto (PHP build style)