Jim Richards

 

Sorry about the delay there folks, I’ve recently bought and moved to a new apartment, and am now in the process of changing jobs. I’ve got a few weeks off and so will be able to get back to updating the site more regularly, and do some site maintenance – like changing the theme.

You’ll also notice I’ve added a category for books. I’ve done 50 book reviews for Amazon, and I’m going to start copying them over to here, so they’re in one place.

So, the next post should be soon (in the next few hours) after much delay.

Thanks for being patient,
Jim.

Share on TwitterShare on LinkedInDigg ThisShare on TumblrSubmit to StumbleUponSave on DeliciousSubmit to redditShare via email
 

I think there are two types of meetings: essential, and really essential.

I actually enjoy meetings, they get me away from my desk, and they provide an opportunity to get some input, for some decision making and to get dormant parts of my brain working again.

Essential meetings are those required to keep a project going, they might be daily or every few days. They can be something where people get together in a meeting room, or just pulling your chair up to a co-workers desk and going over something. These meetings get the most done, but are the least organised. However, one clear ingredient of these types of meetings is that they are usually internal meetings, and as such they tend to get spontaneously created, shifted around, forgotten, cancelled, changed or pushed into the background and as as Agent Smith says, it’s inevitable.

And if the focus is on getting the job done then meetings are like doing a check of the map to make sure you’re going the right way. If the highway doesn’t have any turn-offs then you don’t need to check the map so often. But if you’re in a squiggly city like Canberra, then you need to check the map every few streets (or have a good GPS.) But eventually you have to have one of these meetings to make sure all is well in the world. Thus, regardless how much disdain you give these kinds of meetings, they eventually become essential.

Really essential meetings are usually external meetings with the client. These will have a fixed day and time and rarely get shifted due to the amount of work it takes to actually organise it. These meetings can go for an hour, sometimes more and consist of quite a bit of waffle, kerfuffle and other ~fuffley items. Due to the number of stakeholders involved and their relative levels of power within an organisation, the ratio of decision making to participants tends to approach zero. (Or one, I never was good ratio maths.)

Well, I guess that’s a bit of an exaggeration (the inability to get things done in client meetings, not my mathematical ability with ratios.) But part of the challenge is that in internal meetings there’s already a corporate language in use that facilitates faster communication. When meeting with the external client, the use of language has to be very carefully clarified in order to avoid ambiguities.

When ever I have a client meeting, I’ll take lots of notes and then after the event (and sometimes, it is an event) I go back to my deskicle and write everything up as best I can and send it to all the stakeholders. (That’s an odd expression, stakeholders, it sounds as though Buffy is going to turn up with her friends and kill Edward, et. al. One can only hope.) Then afterwards I can use the notes as a point of reference of what I’m doing. Internal meetings however are just a fluffy feel good get together to do a check of how things are going. Usually.

I don’t like to have internal meetings run like external ones with client. But that’s just me and the situation I’m in now. If I was working in a huge corporation and I had people from all different departments who didn’t know each other, then yeah, I’d be a bit more formal, but then I think that would reduce the productivity of the meeting. Formality however reduces ambiguity.
So, where does that leave us?

In a mixed up world between formality and ambiguity.

Share on TwitterShare on LinkedInDigg ThisShare on TumblrSubmit to StumbleUponSave on DeliciousSubmit to redditShare via email
 

So, I’ve been trying to get my head around how best to deal with our heterogeneous development environment in an agile way. It’s easy to say a process is agile, much like we used to say software was user friendly. We just slapped a label on it that said User Friendly. Now I think we’re sometimes doing the same with Agile.

So, how do we distil agile down to its core elements. Well, we don’t have to, it’s been done already. I think for where I am, competing priorities are the greatest concern. We’ve always got client jobs going on, in different stages of development. However, we usually try to make sure the developers have one block of work on a day, but one day might be a different job to the next. And we need to consider how we invest our time in planning for the future with new technologies.

Almost every good feature in computer operating systems today, including most features in DOS, Windows, and Windows NT, came from the mind of one hackerĀ  or another. Typically the work was not commissioned by a company. It was done as a research project then productized. Without these people, we make no forward progress. – Larry McVoy, The Sourceware Operating System Proposal, 1993.

Our struggle at the moment is finding the right balance between letting the developers have their time to freely investigate a new technology, and doing paid client work. We can’t spend all the time doing study and training, and developers aren’t robots that can churn out code 100% of the time.

One point of view is that research can be done as part of clients’ work. That is, when a client’s job is being quoted or designed we can throw in project time then and there to do the research required to get the job done. I call this the Brave New World way of doing things. The advantage of this is that it’s fully funded research and has a clear end goal and time allocated to the work.

The flip side is having dedicated time not allocated to a particular job where the developers can try out new things that don’t directly lead to a paying client’s job. The advantage here, as in the quote above, is that it tends to lead towards more innovation and discovering unique things that may not have been discovered if the goal had already been chosen. The down side of this, of course, is the cost. It doesn’t directly bring in revenue. Research is a cost, not a profit generator in the short term.

The business person prefers the first way, and the technical the second.

Planning for the long term is expensive, but the investment pays off much later. But how much later? And is it really the domain of a small business to be doing research?

I’m sure if we position research as training, then it would be fine. It might be easier to justify the expense if we had found a training course, the money to send the developer off on it, and off they went for a day or two. We’re not talking about pure research, but about investigating new technology without the pressure of delivering to a client.

So how does this all fit into a agile way of doing things? Well, it doesn’t directly. Agile is about delivering to the customer the best product within the constraints provided. And, although the principles mention

Continuous attention to technical excellence and good design enhances agility.

and

The best architectures, requirements, and designs emerge from self-organizing teams.

We need to think about how we can make those an input to the system rather than as an end product. How can we keep the business and technical people both happy?

Share on TwitterShare on LinkedInDigg ThisShare on TumblrSubmit to StumbleUponSave on DeliciousSubmit to redditShare via email
© 2011 The Three Legged Pig Suffusion theme by Sayontan Sinha