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)
2433
Associated topics are indexed under
Q050 - Object Orientation and General technical topics - General Technical Subjects [3213] Should I use Open Source or Commercial software? - (2011-03-26)
[3112] Public and private courses - subjects available for 2011 - (2010-12-29)
[2800] The Merchants And - (2010-06-09)
[2568] Forums for your Melksham and open source discussions - (2010-01-09)
[2099] Should I maintain the programming code on my own website? - (2009-03-23)
[462] Big number - (2005-10-12)
Q908 - Object Orientation and General technical topics - Object Orientation: Design Patterns [4096] Perl design patterns example - (2013-05-20)
[4021] Spike solution, refactored and reusable, Python - Example - (2013-02-28)
[3843] Caching Design Patterns - (2012-08-20)
[3810] Reading files, and using factories to create vectors of objects from the data in C++ - (2012-07-21)
[3716] Learning C++ - a design pattern for your first class - (2012-05-02)
[3608] Design Patterns - what are they? Why use them? - (2012-02-12)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[2741] What is a factory? - (2010-04-26)
[1224] Object Relation Mapping (ORM) - (2007-06-09)
[485] North, Norther and Northest - PHP 5 Objects - (2005-11-04)
G906 - Well House Consultants - Programming Standards [3685] Programming Standards in Lua - (2012-04-06)
[2364] Getting it right from the start - new programmers - (2009-08-17)
[2363] Alpaca Case or Camel Case - (2009-08-16)
[1852] Perl and Blackberries - (2008-10-23)
[1679] PHP - Sanitised application principles for security and useability - (2008-06-16)
[1596] Selling curry to the chinese takeaway - (2008-03-31)
[945] Code quality counts - (2006-11-26)
[356] Sudoku helper or sudoku cheat - (2005-06-23)
[343] Should I use structured or object oriented? - (2005-06-10)
[272] More to programming than just programming - (2005-04-08)
[148] Programming in isolation - (2004-12-11)
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)