Archive for October, 2008

“It became clear that the system was not the problem, but it was human after all.”

Tuesday, October 28th, 2008

It’s two days after elections in Finland and it been brought up to media that somewhat 200 votes has been “lost” in our electronic voting pilot (somwhat 12 000 votes casted) that has been promised to be secure in every way. Actually I’m not surprised of this for some reason.

So, about the background of the problem: every voter who wanted to participate into this pilot had their ballot in electronic form, something similar to credit card. One should put this card to selection machine; then one needs to select the candidate with numerical input and press ok to confirm this choice. Many people have missed the part of pressing ok, causing the electronic card be blanco.

This is just design of the workflow in the application, not even related to user interface. You can verify a good solution while visiting your ATM. At least here Finland it first gives out your card and after that your money — guess why in that order?

So, what has been the reaction? Our ministery of justice stated

Osoittautui, että järjestelmä ei ole ollut se ongelma, vaan sittenkin ihminen. (source: Helsingin Sanomat)

Which can be freely translated: “It became clear that the system was not the problem, but it was human after all.” Remind me of the HAL 9000 and famous “It can only be attributable to human error.” So what goes here wrong?

The users needs are not understood and this causes poor experience and in this case failure of the system, even thought it might technically be reliable it really don’t matter. What matters is that the user is not lost; what ever hack there’s in the engine — but always assume that user can do things differently.

Struggles of new college graduates in their first software development job

Tuesday, October 21st, 2008

I got familiar with a study Microsoft had done with eight of their just graduated employees by observing them 85 hours. They got somewhat good picture where is the problems and shared it in ACM publication.

The first thing that the emphase there is that the technical skills of graduade are rather good ones: they know how to code and write spesifications. But at the same time they provide a good case that actually working in this kind of inndustry reguires rather much human interaction also.

I skip explaining where the people were good and and go directly to problems. So, the first big problem was in area of communication:

An overarching theme of new developers’ communication problems is knowing how and when to ask questions of others. In general, NSDs [graduates] do not ask questions soon enough, and often struggle to ask questions at an appropriate level. (page 228)

Secondly there were issues on collaboration: how to prepare to a meeting, how to advocate your work and how to stand there when colleagues try to dump work. Also team work is something that needs to be focused more, as it’s how the industry works today. At the same time graduates were sometimes “left alone”, especially in cases when there’s a large code base and tiny documentation space:

The social issues we observed focused on working in large teams, working in conjunction with multiple teams, and working with a large, pre-existing codebase. Many times, NSDs were explicitly told that there was little written documentation on a feature, and that the original developers had left the team or the company. (page 228, emphasis added)

Also some core technical skills seemed to be lacking: use of version control system was poor and debuggers cause problems. Even here the human side of developing was clear: some of the subjects didn’t have access to right tools and the problematics of asking for help was rather high, as following highlights:

These technical difficulties often coupled with collaboration and orientation issues. In his first programming project, Subject U struggled with a new API, a new operating system, and a new programming language – in addition to new tools. Despite the almost overwhelming challenge, Subject U felt it necessary to try to do everything himself, without asking questions – in part to demonstrate his value to his manager. Subject U said he learns best by programming his own code and working through the mistakes. (page 228, emphasis added)

The last problem mentioned was related to taking notes and working in environment with huge amount of information — especially when everything is new. Some of use prefer paper notes, other use email — that doesn’t actually matter. But how to store this information in a proper manner and understand it well — that is difficult. Authors present this nicely:

NSDs often struggle to know “when they don’t know” something. Because there is so much new infrastructure to learn, it becomes the norm to have only partial knowledge of a tool or some code. While this is their reality, it also leads many NSDs to fail to recognize when they are truly stuck and should ask for help. (page 229)

NSDs had difficulty orienting themselves in the low information environments in their project team, codebase, and resources. However, this was sometimes coupled with confusing and poorly organized documentation – which was difficult for a novice to navigate or engage with effectively. (page 229)

So after this analysis the presentation goes to common misconceptions. I’ll just present them here and leave the discussion of these to you guys:

  • I must do everything myself so that I look good to my manager.
  • I must be the one to fix any bug I see – and I should fix it the “right” way, even if I do not have time for it.
  • If there was only more documentation…
  • I know when I am stuck when solving a problem.

So, how should these findings effect the education of computer sciences? At least we should acknowledge that application development is more than writing the code and documentation. Actually there’s some things I would rethink; more understanding on how to work with exsisting code base is clearly needed as more and more of software projects just have a pile of grappy code. Secondly, interpersonal skills need more pushing.

Mindtrekking

Monday, October 13th, 2008

I just came back from Mindtrek 2008 conference. The conference is related to new media and it’s usage in different fields, mostly about social media, ubiquitous media and games. So what I actually learned there? Maybe it was the tendency that social interaction is going to push itself to all areas we’re working on.

On the other hand it’s interesting to be in social media event where the use of social media seems to be… exception. I did Jaiku during the event, as did other’s too. But rather many did notes in the old fashion way (nothing against it — I love to work with pen&paper), which seemed strange. Actually this is every now and then happened in other places: for some reason formal settings seem to kill the use of social media tools.

So, I got an CD-rom with all the papers. I need to read the paper Social is the New Pink
by Damien Marchi, as it might have some new radical views. Then I got some new colleagues and met some old ones.

I spoke of ubiquitous media and political life, trying to argument that this new way we communicate has changed and will change how we do politics. Not allways in the good way but in some way anyhow. To see the presentation, head to Qik and SlideShare.

Updated: Link fixed!