Monday 3 December 2012

A Delayed Post On Programming

This has been a difficult post to actually publish. Started writing it on Friday afternoon, then stopped to have a think and read up on some research and recommendations that have been put forward about the UK National Curriculum, skills shortages etc. Seems like a maze of twisty passages all alike (name that game - ed)

So to cut a long story short, here is my contention.

The problem with programming is thus: Anyone can program.

The Government's contention, along with some great and good of the Video Games industry is that not enough people know how to program!

Very straightforward, very simple and it appears this is what the changes to the UK (England and maybe Wales - devolution is a wonderful thing) National Curriculum are going to bring about. The existing ICT that is taught in schools is  not fit for purpose. Having read some (but not all - just a tad bull) of the OFSTED report - I didn't spot this phrase at all - maybe it is in report speak where the words that are used have other meanings - i.e. think of Yes, (Prime) Minister, and I missed though it was there but not in those exact words.

There appears to be a ground swell of opinion that things have to change, and as with most thinks linked to the Government, they need to change quickly (well that is after multiple years of reports, falling number of students studying GCSE and A Level Computer Science and the lack of joined together teaching of ICT across the whole National Curriculum) The UK Government are finally going to leap into action, possibly by 2014.

There is even a report, to whit,  Next Gen, that uses phrases list STEM (Science, Technology, Engingeering and Mathematics) and STEAM - that is STEM with Arts as the additional A,  (there is nothing like a dame - or in this case a good acronym - ed) which states that the  UK is failing to produce enough skilled people with the appropriate ICT skills, and the main contention of the report is that not enough people know how to program and programming should be taught

Aside: Forgive me if I am mistaken, but isn't the reason we have fallen from 3rd to 6th in Video Gaming industry is due to lack of tax breaks amongst other things? The other could be argued that we are just moving with the times and outsourcing our highly skilled work to cheaper countries  - why pay programmers UK wages when you can bring them in from around them world for a much cheaper price, or maybe more simply just off-shore the work! Makes good business sense to me. Remember all programmers are of identical standard and are interchangeable resources to be moved from job to job as often as necessary (not really - there is lot of research on the difference between the best and worst programmers in terms of quality of work etc - ed.)



So, why is there a skills shortage in programmers? There is not. There is a shortage of good, great and brilliant and exceptional programmers!

Writing code is easy, anyone can do it! Even the major of New York is now taking lessons.

However, the issue is that the vast majority of code that is written :


  • is not robust
  • is not test driven (and ain't that a subject for discussion - but not today)
  • is not performant
  • is not reliable
  • fails to meet the end user requirements (even when the end user knows what they want, and in the vast majority of cases they do not have a clue what they actually want - but they do know what they don't want!) If you cannot believe this - see UK Government IT Blunders
  • is not maintainable
  • is incomprehensible 
  • is unthinkingly cut and pasted
  • is sometimes not even under source code control (yup - that is real scary)
  • is not part of a continuous integration process (even though free tools do exist to help do just this)
  • is written against out of date business requirements, high level designs, low level designs and other specifications written in a language that is open to interpretation (English).
  • is not cared for by the very programmers creating it
  • is unsupportable 
  • is unrepeatably built  (i.e. build once and forget - almost like fire and forget)
  • is not tested much (how many projects have test code coverage of  > 90% and when it is that high the statistics have been gamed so are useless. How we cheered when the test coverage on one project I worked on moved from 0% to 1%)
  • fails to be "I've started so I'll finished" - but I've started - now I am rotated to another short term contract and couldn't care less about the mess I have left behind; and never learn from mistakes as they are sorted by someone else!
  • fails to log useful information - real Goldilocks stuff this one - not too little logging and not too much logging - needs to be just right!
Argh, now I have run out of STEAM ! There is a rich seam to be picked here, and pick at it I will; it is like a scab that has hit that itchy stage!

The above is the start of a much longer discussion (rant - ed) that I shall continue with over the coming days and months. 

I have to say that I feel that I am kicking the donkey that has fed me for the last 30+ years.

Minor Bio: I have been programming to little or no effect since the early PC days, Sinclair Spectrum, Commodore PET/64, initially mostly in BASIC, even had a FORTH machine for a while! The vast majority of the time in C and Java, with forays into a number of other languages, C++, Scala, PHP,  on most flavours of *NIX, Linux - for small, medium and large companies, almost all on contract. Had my contract renewed most (if not all?) of the time - so must have been doing something right I suppose.

For reasons of NDA's I will not name the companies directly, and will change the names of any protagonists to protect the guilty, but I am findable on LinkedIn and that has a potted history of many of the companies I have contracted at, so with a little thought you should be able to work out which companies are which!

As Zebedee says, "Time For Bed." Boing.

BTW: Don't ask me about "IR35, Gordon Brown, Dawn Primarolo, Section 660A, Business Tests and Hoops" - as that will definitely cause a rant.

No comments:

Post a Comment