My background in programming

You may have guessed that programming languages are a bit of a passion. Python is my current favourite language but would love to do more in Haskell and am itching to develop another IOS and / or Mac app in Swift language but Swift is now open source and there are several platforms other than Apples' where Swift can be put to good use. Of course I have a respect for the power and utility of Javascript but it's not a great language is it! Although, where Javascript is necessary, editing a Coffeescript source with Sublime Text will automatically keep a corresponding Javascript file in sync.

Historically, the languages that I have written most lines of code in are: IBM's System/360 Assember / System/370 Assembler and IBM's C-like PL/S; amounting to the 10's of thousands both before and after I joined IBM in the 1970s. I have a great affection for System/360 Assembler and a terrific respect for the people who created it in the early 1960s. I can remember spending many happy hours studying the System/370 Assembler Principles of Operation manual - in fact taking it to read in bed on more than one occasion!

But, for anyone who's keen on programming and languages, there is no better time to be alive and programming than today.

I have tried many, many programming languages; I have to own up to some lines of COBOL code that are probably still runnning in a bank in Dallas 40 years later. I never was a great fan of C, but I loved C++ and Modula-2. Ada, Java, PL/1 and Occam

Specifications

Of course, programming languages are all very well, however no program can really be considered to "work" unless there is some specification against which to measure its behaviour.

The most important thing about a specification is that the team - all stakeholders including the clients and developers - share as near a single idea idea of what it is they are developing.

I have worked with different teams that use everything to make a specification from a file of Keynote or Powerpoint diagrams through UML to the more formal and precise English of a specification in the Z notation as described elsewhere on this site.