ACCU2015: Days 2-4: Asynchronisation & Philosophy

As you might have suspected, I have been either too intellectually stimulated or beer fazed to write a blog post from day 2 onwards…

So the time has come to sit down quietly on the Sunday afternoon after the conference and write down some summarising words about the following days.

I had a fair number of insightful moments, either during presentations or subsequent discussions with participants. So much so that I will write about my day 2 lightning talk in a separate post.

Once again there was a great blend of the deeply technical (in this case lots on multi-threading) and the philosophical. This is what I love about this conference because it grounds the philosophical and enlightens the deeply technical. Wonderful.

Olve Maudal & Jon Jagger play Music Mashup

Olve Maudal & Jon Jagger play Music Mashup


Day 2:
There was a truly scary presentation by Alex Naumann from CERN about how physicists were using a C++ interpreter CLING and novices were developing a massive C++ codebase with loads of cut and paste. Thanks to the massive data sets that exist, at least they have a large body of test data to verify correctness – but still…

There was also a great quote from Olve Maudal’s presentation on the history of C and C++ saying that enums in these languages are troublesome because Dennis Ritchie hated them and hacked them in as quickly as possible! A classic point that highlights the relationship between the quality of software and whether a programmer is externally or internally motivated.

Phil Nash’s presentation on seeking simplicity was a great presentation about differentiating the Simple/Complex axis from the Easy/Hard axis. It was also interesting for its reference to Cynefin, which was found in other talks too. His references are at http://www.levelofindirection.com/storage/simplerefs.html.

In the bar (thanks to Bloomberg for the free beer) there was a fun music mashup machine which I had a play with. It consisted of a camera below a translucent panel with blocks which had QR codes on them for the 4 sound types of bass, percussion, melody and voice banks. So intriguing that I actually took a photo of Olve and Jon playing with it.

David Sackstein presenting (with apologies for image quality)

David Sackstein presenting (with apologies for image quality)


Day 3:
David Sackstein’s presentation on Coroutines was given to a packed audience. Although it was fascinating for its content, I found it more so for its effect on the audience. The coroutine idea is not new, as anyone who used to use setjmp and longjmp will know.

When David explained that a coroutine handed off control to another context (or stack) while the initiating one was held, there were the inevitable cries of – but that means things are not being done in a multi-threaded way! The noise of hearing the pennies drop was almost deafening as he explained: “But that is what the operating system is doing for you anyway in a multi-threading environment! It simplifies your code to be more explicit about the handover points.”.

Classic! Yeah I know we have multiple cores but if you don’t grok how schedulers work on a single processor you are asking for trouble before you get anywhere near parallel processing.

The great thing here is that there are great simplifying techniques to make the scheduling far more explicit in people’s heads – which is wonderful for educating folk about multi-threading. In this case coroutines simplify the thinking needed to cope with processing in two different contexts, which means I may be able to simplify all my ugly callback code.

This thread (pun intended) during the conference was repeated in other presentations, so it seems like the community is getting its head around asynchronous programming. Maybe I will get more people who survive my interviews when we reach the multi-threading questions! I can hope.

There was also a great, and courageous, talk by Peter Hilton about how to name things. A great reference here was to George Orwell’s essay, Politics and the English Language.

Day 4:
On the final day I really enjoyed Roger Orr’s talk on Coding without Words questioning when we should name things rather than make use of C++ features such as lambdas and auto. This talk helped me realise that using names instead of implicit language constructs is important if the name actually denotes an important piece of knowledge in the application domain or surrounding code segment context. For me this presentation epitomised the link between technology and philosophy really well.

Roger’s talk also allowed me to unbend my mind after listening to Jonathan Wakely talk about the importance of Application Binary Interfaces (or ABIs). Really interesting, really important and really good – but Ouch! Oh yeah – for the programmers out there – in his lightning talk he said PLEASE do NOT use leading underscores on your #ifdef names for header file include guards – as a library writer that is HIS namespace you are encroaching on! Good one.

The final keynote by Chandler Carruth of Google was an exposition of the set of tools, or “ecosystem”, around the clang compiler.

All in all a great conference. Now all I need to do is go and get my head back into normal mode again – whatever that is!
Until the next time…

ACCU2015: Day1: Bits & Pieces

So it is rather late at the moment. Just had a great evening at a local Tango class with some great live music. Absolutely & totally sublime and completely different to the Nerdfest!

However I did retire to the bar on getting back from the dancing – it is important to network – to find that it was still buzzing. Had a great chat with a guy who works in CFD (Computational Fluid Dynamics), even though it was midnight! Amazing how you can talk about multi-processing late at night after a beer. Or have I been doing this job too long?

As for the day’s conference proceedings: Because Jim Coplien is recovering – thankfully – from a seriously illness, today the first keynote was by Pete Goodliffe about “Becoming a Better Programmer”. It was OK but not too many new points for me. Just a light presentation. The main points I took away were:

  • Money incentives work against producing better software. They are different targets. (A subject close to my heart)
  • The 4 levels of Maslow Competence Hierarchy (not the needs one): Unconscious Incompetence (Dangerous!), Conscious Incompetence, Unconscious Competence & Conscious Competence.
  • Dunning Kruger Effect and the cognitive bias of experts under-estimating their ability while novices over-estimate theirs.
  • Of course there was also the obligatory mention of the Dreyfus model of Skill Acquisition which has a good breakdown of the learning levels as well as mentioning that it takes 10000 hours (about 10 years) to become an expert in something.

Next up I went to a talk by Seb Rose, a TDD advocate, on “Less is More” making the case for adjusting the progression of test changes to make them have less ‘fidelity’ to your final test intentions during development to allow you to converge faster to the final implementation. This one left me wondering about this whole stepwise approach to knowledge generation implicit in TDD. Sometimes it does not happen in this left-brain way of small steps. Sometimes there are massive jumps as we tear down old structures and remake them. Also whatever happened to the differentiation between growth & development? Subsequent conversation with other participants showed that I was not alone in thinking about this although, of course, TDD does have its place.

One great point that Seb raised was the importance of saying “I don’t know”, which can be a difficult thing for anyone who is supposed to be considered competent. We need to assume we are initially ignorant and be happy in accepting it.

He cast aspersions on Planning Poker saying that in his experience it has always been wildly inaccurate. For light relief he showed an image of these cards from LunarLogic.
LunarLogic No Bullshit Cards
The main point I took away from this talk was just how much software development is a knowledge generation process (i.e. epistemic) and how we need to be clear about the next smallest question we need answering.

After lunch I split my attendance between a talk called “Talking to the Suits” and a more techie C++ one about the issues in converting the Total War game from Windows to OS/X which was mainly about the differences between the Microsoft and Clang C++ compilers (the Microsoft compiler is much more accepting – which might not help since it wont detect errors in template code if the template is not instantiated).

I will only mention the “Suits” talk because there should be a video of the Windows to OS/X one.

I came away from the “Suits” talk with some great cliches, e.g. Quality is not job number 1; Business loves legacy. The basic point here is that we have to be more explicit about the quantitative costs/gains when making a case for any technical work. We cannot assume that business leaders will be able to understand the ins and outs of things like IDEs, Technical Debt, etc. A good call to make sure we communicate more effectively about such things. A good idea here was the “Problem : Solution : Results” guideline when presenting information. For example: Problem: “Even simple changes take a lot (quantify) of time”; Solution: “If we improve the design of this part of the system”; Results: “we will save weeks of effort (quantify) when we add new workflows”.

That is probably enough for now since I really need my beauty(!) sleep. I have also put my name forward to give a Lightning Talk on “My Thinking is NOT for Sale”. Oh dear. I need to sort out the slides for that now!

Till later…

ACCU2015: Nerdfest Supreme

Well, another ACCU conference is here and I have just arrived at the hotel today and am settling in, meeting some friends and listening to a talk by one of them, Michael Feathers of ObjectMentor.

I am not presenting this year because I do not have my thoughts straight about some of my latest thinking – namely “My Thinking is NOT for Sale” – especially how I can even get our current business culture to start thinking about knowledge work in such a way. Although there are some signs.

One of the interesting things about these conferences is hearing some of the more vocal and opinionated people hold forth. Initially I start off feeling fairly intimidated, but then inevitably I find something to comment about and we end up having great conversations. In truth there is a nice balance between the more vocal folk and the timid ones. But here good logical thinking always get respect regardless of how quiet or noisy you are – unless of course the participants have stayed too long and late in the bar! Although thinking about it, John Lakos IS a force to be reckoned with!

Unfortunately another person I really really wanted to talk to was Jim Coplien. He was scheduled to deliver a keynote, but I was told he will not be attending due to illness. I was hoping to have heard more about his DCI work (See also his blog post and this video)

But back to Michael’s talk, which was called “Organizational Machinery around Software”. He was arguing for making the code architecture primary and structuring teams around that architecture. Basically saying to flip Conway’s Law and use it as a lever to get better results rather than having it inadvertently mess up your design because you did not structure your teams in the right way. The basic concept is simple. The implementation and convincing of management may be another thing entirely but it is an interesting view of basing your team structure architecturally rather than perhaps by market segment, or in some other way.

One of the things that he said was that we could take lessons from how the military manage personnel rotating through their teams (or crews I guess), and that business could do the same. As you might guess if you read my blog, I would find such a though unsettling, primarily because there is validity in what he says due to the fact that business is usually run on military lines, whereas I consider that there is a difficult tension between trying to write quality software and its usual economic context. More thought required…

I am looking forward to tomorrow, although I shall be breaking away from the conference in the evening to partake of some Argentinian Tango at some local classes! I might see if I can get some of the techies to come along – could be interesting… This will of course mean that any blog post may be delayed.

Here are some of the notes I made about the talk:

  • Being too conservative with code mods will cause a very fast deterioration of the codebase. ie. not refactoring.
  • Interface cruft. Easier to change code either side of an API, rather than mature the API.
  • Legacy comment.
    20150421_1932_MichaelFeathers_OrganizationalMachinery
  • Interesting research from Robert Smallshire in the audience: Developer halflife is 3.5 years. Code halflife is 35 years. (See this presentation)
  • We should be able to visualise a system architecture for ANYONE in the organisation to understand. Not just the techies.

Until next time…

My Thinking is NOT for Sale

Its 2 o’clock in the morning and I am finding I cannot sleep. A thought that is so off the wall has been gripping my mind for a while now and I am finding it more and more relevant to what I have seen happen during my career as a programmer.

The title is worth restating:

My Thinking is NOT for Sale

This is not so much a shouted response to all those times that good technical effort has been driven carelessly under the steamroller of prevailing economic needs – usually those of the money swallowing monsters that are most companies – than it is a statement of an underlying truth, if only I can express it well enough and in shorter sentences. So here goes…

If you pay for software you will not get what you need. In fact you CANNOT buy software because it is not a finished product. The current economic model we have just does not fit and I believe this is why there is so much trouble in this area.

What is important about good software development?

Over my 30 odd years of work the primary creative and energizing point has been the interaction between the developer and the actual user as a system has come into being. The best of it has been the conversation between the two as they navigate the area of the user’s needs. If the developer is skilled, both technically and personally, they help facilitate both parties in mapping an unknown area, probably only vaguely expressed in the “wants” that the user can currently identify.

This is a conversation of human discovery in thinking.

It is priceless.

It is a gift.

It is a Free process. Capital F.

It cannot be bought.
It cannot be sold.
It is NOT a product.

It only makes sense if the effort is freely given by the developer. The inner costs of doing this are so high that it requires a high level of motivation that can ONLY be internal. To try and shoehorn it into our current ways of thinking about money devalues the process and I think this is what is underlying the problems I have seen happen many times.

The kicker here is that it is likely that it can only be funded by gift money. That means that there can be NO LINK between the funding and the final “product”. I use quotes because that word is a misnomer of what is actually going on.

Unrealistic?

Just go and read a book called Turing’s Cathedral by George Dyson and you will see how the Princeton Institute for Advanced Study was funded by donation. This was where John von Neumann worked and developed the architecture that underlies modern computers.

The picture of how the whole current edifice of modern computing was birthed from gift money just blows me away. I find my thinking so bound up in the capitalist model that to separate the resource – i.e. the money to give time for people to think – from the product of that thinking in such a way shows up the illusion of the current funding models for such work.

Is that enough to allow you to see it? Truly?
If you can then maybe you might understand why I am having trouble sleeping because in my tossing and turning my feelings tell me it could change everything…

Or maybe this is all just a dream and I shall be sensible when I wake up.
Hmmmm.

Post-ACCU2014 Thoughts

My thinking has been working overtime since I attended and presented at the ACCU2014 conference in Bristol.

[The delay in producing another post has been due to a lot of rather extensive personal development that has been occurring for me. Add to this some rather surreal experiences with dance – clubbing in Liverpool being one particular – and you might understand the delay. But that will be the subject of a separate post on dancing – I promise!]

But back to thoughts subsequent to my attendance at ACCU2014…

The Myth of Certification

The Bronze Badge. Small but beautiful.
One experience that really got me thinking was a pre-conference talk by Bob Martin reflecting on the path the Agile software development movement has taken since its beginnings. He mentioned an early quote from Kent Beck that Agile was meant to “heal the split between programmers and management”, and that one of the important guiding principles was transparency about the technical process.

But then there was a move to introduce a certification for what are called ‘SCRUM Masters’, key personnel – though not project managers – in an Agile software development approach. The problem is that it is just too simplistic to think that getting a ‘certified’ person involved to ‘manage’ things will sort everything out. This is never how things happen in practice and despite early successes Bob observed that subsequently Agile has not lived up its original expectations.

The transparency that the Agile founders were after has once again been lost. I consider that this happened because the crutch of certification has fostered inappropriately simplistic thinking for a domain that is inherently complex.

My inner response to this was: Well what do you expect?

I very much appreciate and value the principles of Agile, but there is a personal dimension here that we cannot get away from. If the individuals concerned do not change their ideas, and hence their behaviour, then how can we expect collective practices to improve? As I experienced when giving my recent workshop, it is so easy to fall prey to the fascination of the technological details and the seeming certainty of defined processes and certified qualifications.

I remember a conversation with my friend and co-researcher Paul in the early days of embarking upon this research into the personal area of software development. We wanted to identify the essential vision of what we were doing. The idea of maybe producing a training course with certification came up. I immediately balked at the thought of certification because I felt that an anonymising label or certificate would not help. But I could not at the time express why. However it seems that Bob’s experience bears this out and this leaves us with the difficult question:
How do we move any technical discipline forward and encourage personal development in sync with technical competence?

The Need for Dynamic Balance

K13 being winch launched, shown here having just left the ground.
This was another insight as to why I enjoy ACCU conferences so much. There is always the possibility of attending workshops about the technical details of software development and new language features on the one hand, along with other workshops that focus on the more ‘fluffy’ human side of the domain.

I live in two worlds:

  1. When programming I need to be thoroughly grounded and critically attend to detail.
  2. I am also drawn to the philosophy (can’t you tell?) and the processes of our inner life.

Perhaps the latter is to be expected after 30 years of seeing gadgets come and go and the same old messes happen. This perspective gives me a more timeless way of looking at the domain. Today’s gadget becomes tomorrow’s dinosaur – I have some of them in my garage – and you can start to see the ephemeral nature of our technology.

This is what is behind the ancient observation that the external world is Maya. For me the true reality is the path we tread as humans developing ourselves.

Also we need to embrace BOTH worlds, the inner and the outer, in order to keep balance. Indeed Balance is a watchword of mine, but I see it as being a dynamic thing. Life means movement. We cannot fall into the stasis of staying at one point between the worlds, we need to move between them and then they will cross-fertilise in a way that takes you from the parts to the whole.

In our current culture technical work is primarily seen in terms of managing details and staying grounded. But as any of my writings will testify, there is devilry lurking in those details that cannot be handled by a purely technical approach.

Teacher As Master

So John - Do I have to wear the silly hat? Well Bill, only if you want to be a REAL glider pilot.
Another epiphany that I experienced at the conference was a deeper insight into the popular misconception that teachers are not competent practitioners. There is the saying that “Those that can – Do. Those that can’t – Teach”. So there I was in a workshop wondering if that meant that because I was teaching programming, was I automatically not as good at the programming? But then a participant highlighted the fact that this was not so in traditional martial arts disciplines.

Indeed – teaching was seen as a step on the path to becoming a master.

We – hopefully – develop competence which over time tends to become implicit knowledge, but to develop further we need to start teaching. This will force us to make our knowledge explicit and give us many more connections of insight, indeed helping us to see the essential aspects of what we already know. There may be a transitional time where our competence might suffer – a well known phase in learning to teach gliding – as well as being a normal learning process whenever we take our learning to a higher level.

So I think the saying needs changing:
Those that can Do. Those that are masters – Teach.

ACCU2014 Workshop : Imagination in Software Development

A week ago on Saturday 12th April I facilitated a workshop at ACCU2014 on Imagination in Software Development which I am pleased to say – thanks to the participants – went very well.

Before the workshop I thought I had bitten off more than I could chew, having read through a lot of Iain McGilchrist’s book “The Master and His Emissary” and realising that using analytical thinking for such an exercise is very difficult. However thanks to my long suffering team at work giving me the chance to do a dry run, I was able to get feedback about what did and did not work and so ended up making some rather last minute changes. The final workshop format ended up being completely different to the dry run.

Before moving onto the exercises I gave a half-hour talk about the links between phenomenology; software; and brain hemisphere function, most of which in hindsight could have been left until after the exercises. My main objective, however, was to raise self-awareness about the participants’ internal imaginative processes.

I thought it would be good to highlight some of the primary ideas that came from the exercises, both in terms of the workshop’s preparation and its execution.

The need to get away from the software domain

The exercises in the workshop involved:

  • Listening to a story excerpt from a book.
  • Watching a film clip of the same excerpt.
  • Performing a software design exercise individually.

Each exercise was followed by discussions in pairs. It became abundantly clear that if you give a bunch of programmers a technical exercise, it will behave like a strong gravitational field for any ideas and it will be very difficult to get them to focus on process instead of content. Indeed during the workshop I had to interrupt the pair-based discussions to make sure they were talking about their own inner processes instead of the results of the design exercise I had given them! By reading a story and watching a film clip first it did make it easier to highlight this as a learning point since it was much easier to focus on internal process for the story and film clip.

Individual working instead of in small groups

The trial run with my team at work used small 3-4 person groups. I found that the team dynamics completely overshadowed their individual awareness. I therefore changed the format to make the core design exercise an individual process, followed by discussions in pairs. This had the desired effect of bringing their internal processes into sharper focus. The more you know about an area the more difficult it can be to “go meta” about it.

Some great insights from the participants

STORY
When listening to the story 3 processes were identified which occurred in parallel:

  • Visual – Picturing.
  • Emotional.
  • Logical – Probing.

FILM

  • The film was much more emotionally powerful, to the point of feeling manipulative.
  • But it was felt to be ‘weaker’ due to the imagery being concrete.

DESIGN

  • When performing the design exercise the ideas were experienced as a story, but as a sequential process rather than a parallel one.
  • The logical analysis required thoughts to be made explicit by writing them down otherwise it was hard to hold them in awareness.
  • There was a more conscious awareness of past experience affecting current ideas.
  • The initial analysis was wide-ranging followed by focussing down to the core ideas.

So if any of the participants make it to this page – I would like to say a great big thank you for getting involved.

Slide set follows:

People & Technology : The Boundary Problem : Home Life

If you have seen my earlier post you will know that I am concerned about our lack of awareness of the subtle effects of computer technology on our lives. My deepest concern is about the effects on young children so in this post I am going to talk about the boundaries my wife and I imposed on computer (and TV) use within the home and some of our experiences.

I have been a computer professional since before the early days of the “Personal Computer” boom when we could hardly contemplate that everyone would have their own computer! Many certainly did not even dream of the phenomenal proliferation of “microprocessors” that would take place. That was the word that was used a lot: microprocessor – which highlighted the fact that it was just a super-chip for the electronic nerds like myself. You hardly hear the word mentioned nowadays, but they are still there, usually called just “processors” although thousands of times faster and more powerful and with more fancy names like Core i7 or Phenom.

I also remember sitting at a screen (which was not integral to the computer) typing in commands well into to the late hours at work. But at that time of day I was using an early computer game called “Adventure”, and if you really got into a pickle you would just keep getting the response: “You are in a maze of twisty passages, all alike.”, regardless of the command you typed. Such things used to happen at work since that was the only place where you had enough tech to run the games program. Remember no Personal Computer – or PC – yet!

So I was aware from the early days about the addictive nature of this particular beast. Not only was the game playing addictive, but the programming was (and is) addictive. 4 hours can pass in the blink of an eye if you get “in the zone”. According to folks like Mihaly Csikszentmihalyi, author of the book “Flow”, this is because so much attention is required for the task that we do not have enough attention for noticing the passage of time. This is a central facet of computer technology. It sucks in your attention. No wonder there are social problems. How can you give attention to other people if your computer or phone is taking it all? But I am getting ahead of myself…

Back to home life – my awareness of this addictive nature of technology was shared by my wife and we both decided that it was inappropriate for our young children to use them. I know a lot of the world does not agree with me (yet!), and we knew that we could not stop them playing with computers at their friends’ houses, but we decided on the following rules:

Rule 1: No computers/mobile phones/electronic games AT ALL until the children were 12 or 13.
Thats right – none. Occasionally my work would require me to bring one home, but this was closed away in the box room and the kids were not allowed near it. Especially NO COMPUTER GAMES. Of course when they went to their friends houses they did have games, but in our house it was traditional toys: wooden train sets, building blocks, Lego and so on. [Also, due to our involvement with the local Steiner school we preferred natural materials over plastic. Hence our preference for wooden toys. I currently think plastic toys are ok, but the wooden ones have a nicer feel.]

Well the kids seemed to be ok with not having computers – but the next rule definitely caused complaints…

Rule 2: No TV.
Eventually we would watch DVDs once the children were 10 or so, but NO TV. And no DVD watching in the bedroom. In fact this was when we got the first family computer in the house to watch the films. If we wanted to watch a film we would congregate around it and have our evening sandwiches watching the film as a family. Why only films? Mainly to place a boundary around our viewing – with TV it is too easy to keep on watching just the next programme, and the next, and the next, and so on… We still have no TV despite me working in the business, and my wife and I are quite happy with that state of affairs.

So what about our experiences with this regime?

Certainly there was some complaining from both our daughter and son about how all their friends had these games, or could watch TV. But we were quite firm and simply said something like: “Yes I know my loves, but we don’t agree with that for you at the moment.”

As I said above, the games issue was not a problem, possibly because (a) I was so sure it was a bad idea and was very firm about it, or (b) they really enjoyed their own games that they would make up themselves. They both have wonderful imaginations and we have many happy photos of them playing without a computer in sight.

The “No TV” was more difficult especially as we would go to their grandparents and they would be allowed to watch TV or a video. This was why we introduced watching family films at around 10 years, although with such great imaginations we had to be careful about the content, even though they were age-appropriate films and seemed innocuous to an adult, the children could get quite scared by some scenes. I think adults too easily assume that the consciousness of children is very similar to their own.

There is an important story about our experience related to the “No TV” rule:

One day a friend of the children came around to play and had a shock when he could not find the TV! He was quite bewildered. Meanwhile our children got stuck in and started putting the wooden train set together. He just sat and quietly watched what they were doing, initially without taking part, until my son and daughter pulled him in and started showing him how to play. I was amazed and later found out that at home he was allowed unlimited access to the video player and would keep rewinding and replaying his favourite scenes over and over again. This boy had partially lost the “knowledge” of how to play! In the past this would have been considered a pathological problem, and I am convinced this is becoming more of an issue for the children of today.

If we fast-forward to the present day, both kids are now at university, both have their own laptops, both have them in their own bedrooms, both watch DVDs in their bedrooms. It is now a different phase of their life and they need to be part of the current culture for it is to be their culture. We will see how it develops.

But perhaps some concluding thoughts:

Boundaries must be placed around our use of such gadgetry and in writing this post I have come to see that it is all related to Attention.

The Boundary Problem is giving rise to The Attention Problem.

Our social human communications should not take second place to our electronically mediated communications. You can see an earlier post where I talked about some of the problems inherent with the latter.

Attention is a special thing that we give to the world. Currently we are giving too much attention to our machines, when we need to give more of it to our fellow humans.

People & Technology: The Boundary Problem : Bringing Work Home

At last the mainstream computing world is beginning to catch up with my warnings about unbridled technological use. The latest “Communications of the ACM” has an article entitled “Living in the Digital World” about the effect of gadget use on people’s social behaviour.

I have been a member of the ACM since 1986, having managed to get one of the early super short sexy email addresses ct(at)acm(dot)org so beloved of Unix types. Usually I have been severely unimpressed by most articles from the ACM folk about the existence of any problems with technology use, let alone a balanced view on what those problems might be. Most press has been heavily for technological use, even down into Kindergarten, with what they call the K-12 curriculum.

Oh dear me.

As someone who has programmed computers since the mid 70s I can tell you that coding for this stuff definitely does affect your social skills. I am not your usual uncommunicative nerd type – I like to think that I have quite good social skills – well – as long as you don’t get too close! What I have noticed is that the necessary criticality required to do the “day job” can spill over into your close relationships. This was a primary influence that led to the break-up of my first marriage, although of course as ever there were faults on both sides. But bringing my critical nature home definitely adversely affected my first wife, resulting in her developing allergies galore. My favourite anecdote is that apparently most of these allergies disappeared within a month of me leaving.

Hmmm…

When I found myself doing the same thing again in my second marriage, even I was not stupid enough to think that it was all the other person’s fault. I have now toned down my critical nature when at home and my kids, now of University age, are not backward in coming forward to tell me to “Chillax”. After having realised the problem existed I was extra watchful of myself during their early years and my wife and I have definitely been “good-enough” parents – or so the kids seem to think – honest!

[A problem with parenting is that it is too easy to try so hard to definitely NOT make the same mistakes our own parents did that we “slot-rattle” to the other end of the spectrum and guess what… the effect on our children can be similar to what we wanted to avoid. It seems to be a psychological law.]

So why do I call this issue of technological use The Boundary Problem?

Lets look at a number of places in my own behaviour where I did not have appropriate boundaries:

Without realising it I brought the thinking techniques from work back to the home.
I now know that the highly critical thinking required for software work must be heavily constrained within a close relationship. Of course we need some critical thought, especially if we are parents, but – as a teacher once said to me – there is value in developing a “Nelson’s Eye” and not chasing every little thing. This is easier said than done, especially when it means trying to respond rather than react to a situation that is pressing your buttons!

I was not aware of the effect of programming on my psyche.
This is a biggie and applies to almost every computer professional. In my early years it never crossed my mind that there could be a problem. Soon after the realisation hit me, I went to a computer conference and ran a session to discuss the personal aspects of being a software developer. You should have heard some of the comments! “Navel gazing” was the least abusive one. It is understandable since most technical types like to play with the toys and gadgets. Nowadays things have changed a small amount and with more “techies” you can see the penny starting to drop. I think this is mainly due to what we call “Agile” software development techniques, where you really need to focus on your programming process as well as your technical knowledge. When recruiting programmers the question “Are they aware of how they learn?” is as important as “How good is their technical knowledge?”. If someone cannot take critical feedback it can be very difficult to have them on a software team.

Of course the drive to earn more money just reinforces the “boundaryless” behaviour. You cannot expect companies to control their call on their employees’ time.

Another interesting observation is that when I was younger the gadgetry was much more enticing to me than it is now. I have spent far too many late nights programming computers into the early hours of the next morning to only see the glamorous side. You may see a nice phone. I see just how many hours coding are required to make it work well.

Well that is a small view from the inside of the industry.

In the next post on this topic I will talk about how we as parents dealt with The Boundary Problem at home: A house without computers or TV!

A Grand Prix Day Out

I have recently witnessed a true spectacle and Grand Day Out – with apologies to Nick Park.

I was lucky to see the British Formula 1 Grand Prix at Silverstone, followed by a reflective evening thinking more about the relationship between the human and machine sides of the whole car racing spectacle.

The company I work for has been sponsoring the Formula 1 Virgin Racing Team this year and I luckily got one of the tickets for the British GP on Sunday, care of Virgin hospitality. It was also a day to see what my new camera could do!

Timo Glock of the Virgin Racing Team. Tricky to get the shot with my digital camera due to button delay. Only just got the front of the car.

I must first confess that I am not a die-hard F1 fan. Like many others I have watched it on TV, but have never gone to see it in the flesh. The last time I saw any motor racing was when I went to see some karting race day at Blackbushe, having raced karts there myself in the late 1980s.

At Silverstone I was mainly struck initially by the friendly crowd atmosphere at the track. It seems that the british fans have a special family feeling to the sport. And during the race when the british drivers go by the atmosphere is particularly electric. Though normally a fairly pensive sort I, like others, definitely got carried away by Lewis Hamilton’s progress throughout the race, and at certain points found myself jumping to my feet and shouting myself hoarse as the whole crowd rose to cheer him along. Crowdthink perhaps, but harmless enough in this case and quite a fantastic feeling.

Lewis Hamilton blasting past after the rain had stopped.



I was in the “Club A” stand which gave us a direct view of the final tussle between Hamiton and Massa for 4th place at Club Corner. Everyone in the surrounding 3 or 4 stands were on their feet as Hamilton managed to fight his way back to keep 4th place. Hence the following seemingly silly photo of a bit of his car left on the track after the contact between them.

OK OK. A gratuitously silly picture of part of Hamilton's car on the track after the bump with Massa.


Before the race a great display, as ever, by the Red Arrows brought a further element of British Pride to the proceedings. I even managed to get a half decent shot of them.

A lucky shot of the fantastic Red Arrows with landing lights on but no undercarriage down!



So what were my reflective thoughts? In the evening the Virgin hospitality was very good and extended to having a viewing of the film “Senna”, which prompted my gray matter to mull over a number of points.

Firstly, it seemed to me that the brazilian driver drove from a place that was strongly human, and it made me think about Lewis Hamilton. Though such comparisons are odious, I do think there is a similarity in their styles which explains why they could draw such a response from the crowd. My best word for it is that Senna drove, and Hamilton drives – from the HEART. Despite all the surrounding amazing technology, their humanity is visible in their driving style. I believe this can be said about other drivers too – but I am relating to these two drivers in particular.

Both had their origins in kart racing. Hamilton, like Senna, has an aggressive style of driving which I believe shows his passion to win. This style can give problems sometimes – for instance I can see Hamilton struggling with the current Formula 1 tyre regime. I thought this was noticeable this weekend when Vettel was attempting to get past Hamilton. Vettel didn’t get past and came in early to get a tyre change. Was this possibly because he was having to drive more aggressively at such close quarters to match Hamilton? Only he knows.

However, back to my main focus. I found that this situation of driver passion and mastery related to some of my thoughts about the interaction between the human being and the technology.

As I have noted before: The technology amplifies our capabilities. Thus it requires more skill, judgement and mastery. Any small mistake is amplified into a big mistake, and particularly so in motor racing. The technology can also mask and eclipse the human being behind it.

Yet here we witness these sportsmen mastering the technology, but more importantly, in this mastering of the are mastering themselves. It is this all too human struggle that is so compelling, especially when they succeed, and especially if we can see and feel the struggle with them. In this case Hamilton’s drive from 10th position on the grid to 4th or 5th, and in the rain, was just elating. No other word for it. I must also mention that Button also drove really well until having an abortive pit stop.

I wish all the drivers a safe battle with their opponents, and also, a constructive struggle with themselves.

Too many VIPs. There was an almost constant and noisy stream of helicopters coming in and out through the whole day.

The fans in their Sunday best on the track after the race. There were at least 100,000 people at the GP. Not all countries get people on the track afterwards.

Charles trying to get all arty farty with his photography of the side of the stand.

HOW TECH-AWAKE ARE YOU?

The title is not a misprint. I do not mean Tech-Aware. I mean Tech-Awake. Here is a little story and some thoughts:

Last Wednesday I was driving home from work and encountered an illustration of the problems of trying to set appropriate rules for traffic.

A High Energy Story
The road in question was a connecting road through an estate. It had a 30 mph speed limit and there was a barrier in front of the opening of a path. I was about 200 yards away from the path when I saw some children walking out from it and congregating next to the barrier. Some of them had bikes and I could see there was a possible hazard. Although the speed limit was 30 miles an hour, I decided to reduce my speed to 15 miles an hour. Sure enough when I was about 50 yards away from the barrier, a high energy child came whizzing out from the path like a particle shot from an accelerator and zoomed out across the road on his push scooter to the other side. All without looking for traffic coming from my direction. At 15 mph it was no problem to stop, leaving about 25 yards between me and the young boy in question.

This is not a rant about the children of today or the lack of parental control. Children bring life to the adult world and this boy certainly had plenty of it! I find myself wanting to celebrate that life.

I would rather question our indiscriminate and mostly unconscious use of powerful technologies that in truth we have less control over than we would imagine. A mantra I have is that accidents happen due to bad judgement. When a bad judgement coincides with the use of a powerful technology, such as a car or aeroplane, the situation is ripe for a tragic outcome.

So let me assess the situation I am in as the driver above:

Firstly : Technology amplifies my existing capacities, or gives me new capacities. Cars allow me to travel faster than walking; Aeroplanes allow me to fly (Wonderful!); and a final example: Computers amplify my thought – well a certain type of thought anyway.

Secondly : I can make mistakes. I am not a machine. I would not want to be a machine – a point of view that I believe confirms my sanity! Like our young children, making mistakes can bring life to our world. I enjoy musical improvisation where frequently a mistake can be turned into a beautiful thing.

So what am I to do?

Time to Wake Up
I have wanted to publish this post because I think that our use of technology is asking a fundamental question of us. It is asking us to become aware and most of all to WAKE-UP in our use of these tools.

The reason why this is so important is that when using a car, aeroplane or computer it is too easy to have too much trust in the system and frequently we go to sleep in some way. We may fall asleep at the wheel, rely on buggy fly-by-wire systems, or let computers (try) do some job we would be best doing ourselves.

So here we are – going to sleep, when we need to be waking up.

With flying it is blatantly obvious just how important it is to be careful. All you need do is look out of the window to the ground thousands of feet below while you are trusting the engine to keep on working. This is why as a pilot you are expected to learn a lot about the aeroplane and its systems, far more than you are expected to learn about car mechanics.

I have heard it said that the best way to make a car driver safer when driving around is to put a 6 inch knife blade on the steering wheel pointing towards the drivers chest! Hmmm. Not too sure about that but I can see the point. (Pun intended 😉 )

Would it be possible to work at holding that awareness of how powerful a machine you are using and to bring your awakeness up to meet the situation? I know I can do it when flying and I do my utmost to do so in the car. Though I can look back to the consequences when I have not done so and have felt especially stupid in those moments…

A Question to Ponder
Well there are some thoughts to consider and this time I will leave you with a question…

Is it asking too much for people to become more awake in their use of technology?