Category Archives: architecture

One Size Does NOT Fit All

In a few posts on this blog I’ve tried to make the point that you need to know your local market. It seems Google are beginning to wake up to this… well, in Japan anyway, people in Eastern Europe or for that matter Western Europe will have to make do with an American viewpoint.

If you think about it, it shouldn’t be that unusual that a large corporation changes to suit it’s customers. But it is and it is noteworthy because it makes you wonder how many times a corporation has moulded the customers expectations to fit a “need” that is created for their products. Street-view has been a wonderful case in point in the UK and EU with people on all sides trying to determine the legitimacy of it – and in some cases the need for it ? Most times we need a map, not a picture.

How many times has a vendor pitched a product that will integrate “with a few changes to the surrounding infrastructure” ?

Advertisements

Every Project Starts with a Deadline

Everyone in Software is familiar with the “Iron Triangle”, the triumvirate of Time, Features (Functionality, or Scope), and Resource. In summary, these are the three factors that control any project, altering any one of them always alters the effect of the others, with enough Features, Time, and Resource, you have a high Quality product.

In recent years all the various methodologies have focussed on trying the win the “Time” argument, to stop the idea of time limits being set up front and thus reducing the Functionality as the Resource is generally fixed (which even if increased may have less benefit)  which may in turn lead to a lower quality product.

This has lent some credence to a new myth, that projects don’t need to have deadlines or set time limits, and in fact shouldn’t have in order to create good “Quality” software.

And in the real world…

This is a joke. Let’s start from the very beginning, suppose you are asked to deliver a project, you will generally be asked three questions, never mind all the ones you should be asking, those three are:

  • How much ?
  • How long ?
  • Who do you need to hire/what do you need to do it (you could suggest this is how much) ?

Consider that everything you do has a deadline, even if this deadline is not the one for delivery. It is important to set a goal, and often this represents a line in the sand, where you can evaluate the progress and determine if you can proceed.

If you doubt this, consider what you ask the guy who comes to install your cable. If (s)he fails to turn up when they say or takes 2 weeks to wire a plug, you are not going to pay them. When you bought your house, your bank didn’t give you money that you could “pay back when you wanted”, they attached a timeline to it that reflected a best guess according to your capability to pay.

The Punchline

Your project has a deadline. It will always have one. Your aim is to have a realistic one, and that assumes the business understands what it is trying to have delivered. Even then a deadline is not your enemy, it marks a decision point for others to determine if they want the deliverable. It also acts as a focal point for your efforts, provided that the focus is not panic. There is no point in the argument of “it’s done when it’s done”, the money running out stops that dead. Remember the bank who lent you the money for your house, they don’t stop the clock because your job did. The bad news is that the bigger the organisation, the larger the number of levels that the deadline has been established over… so maybe the idea started at the board, so the CEO has a point in time in mind, then the Architects get the idea, and at some point there has to be a business case, and this will always need a deadline!

Practically, you have the following options:

  • Cheap and quick – may never get upgraded/fixed, but will do, soon find out how import the deliverable really is 🙂
  • No time at all – build a prototype, be upfront about it, if it works out, you can work on the full system, if not, well software doesn’t take up landfill.
  • No resource – establish your own timeline of what you need to achieve – if the shortfall is obvious, either you get more resource, or time.
  • Work nights! – this is not an option. Unless you are 20 and can work on 3 hours sleep, you’ll start spending 50% of your productive time fixing what you thought you achieved. Don’t do it. The odd hour fine, night, no.

Or hopefully:

  • Just enough of each of the three parts of the triangle – due to the business understanding what needs to be done and having funded/invested appropriately

Conversely:

  • Too much time – things wander and all three parts can be wasted.

Good luck with the deadline 🙂

The Funny Character Taskforce Rides again!

Amusingly I got a link to Joel Spolsky’s post on Unicode by one of my Italian colleagues. The punch line being that even though we both work for a European company (owned by a US company) we can’t seem to be able to put the accent on the last ‘o’ of his surname – which should be ‘ó’ – in the User Directory of the mail system.

It also made me remember that I’d had this post in my reading list for a long time. In essence the point being made is that complying to Unicode standards does not mean an implicit use of UTF-\d{1,2} although for some reason which escapes me, this is exactly what .Net and Java do by having UCS style chars which are 2 bytes wide (or wchar). Great. Why ?!

Anyway, the point, Unicode – support it, you aren’t an island, no matter what Ted says, even if you never release your code to a non-english speaking country use a platform that supports it so on the chance you do, you’re ready. Given the number of places that need this (Hint: it’s the majority!) it’s going to make sense at a programming language level and on your product. If you’re using XML and ASCII the chances are you’re converting from ASCII to UTF-8/16 to process the XML even if you’ve specified ISO-8859-1 (Latin 1). If an encoding to support Unicode is there, use it.

For those in Europe and pretty much anywhere else in the world, it’s a must. In the US, I guess you can afford to annoy Spanish speaking people, hey ?

Bistromathics

Douglas Adams was right, the world is powered by ideas on the back of a napkin. In fact I wish people would do more of this.

I didn’t know that one of it’s main uses would be to stop the “I can do that in a weekend” point of view. But then estimation, is time and time again (pun not intentional) an issue raised by developers.

Maybe the best way to start a project is in a bistro, with a large supply of napkins and no computers…

Making a lot of noise fixes nothing…

Outlook 2010 is broken people! In what way ? Well it doesn’t render HTML… which is strange to me because it is an EMAIL client, not a web browser…

When did the idea of using a markup language that depends on server hosted artefacts become a sensible way of creating an email ? Unless you like being tracked in your inbox (yes this is why the images are not downloaded if your settings are smart) this is a really dumb idea. What exactly does HTML add to your words ?

So right now, 24,198 (at time of writing) want to Outlook to support “real” HTML, with “proper” CSS, and possibly… JavaScript. Can this nightmare get any worse ?!?

Well apparently it can’t, which is good. Not that I like RTF much either, I guess I’m an old-fashioned ASCII based luddite. Except nowadays I’m a UTF-8 based luddite.

It might be a little churlish to point out that approx 25,000 people is probably barely a fraction of the user base, and certainly not representative.

It has however demonstrated a couple of things: the idea of harnessing the community to provide news or trends is broken when it comes to twitter. You want to know what to fix when you have such a large and diverse user base ? The majority, not the noisy ones.

TV Personalisation

I see this has cropped up again on the various roadmaps out there, and it’s high time I got my two pennies out there.

This is probably the 4 or 5th time in two (three) companies that this has come up as a user feature for a Digital TV (DTV) service… and nobody has built it yet, well they have, but I’ll come onto that.

The chief issue that I have with this idea is that no-one is entirely sure how it’s actually going to work!

Ok, hold up, from a technical viewpoint it’s entirely doable, with the emergence of technology that has it’s roots in the Internet world appearing on the DTV platform it’s perfectly possible to start having some form of user session to target content (and ads!)  to you.

If it’s that easy you ask, why haven’t we done it ? Well it comes down to something a bit more fundamental: How do people use a TV ?

The TV is not the Computer

That’s an obvious statement isn’t it ? When you use the computer or more accurately, sit down in front of the keyboard, mouse, and monitor, there is only one person using the computer. You. The websites you go to that you login into are all making the assumption (logically) that as you are the only person at the keyboard and screen, that you are indeed the person you say you are. I’m not planning on going into a treatise on security here, but it is a basic tenet of personalisation that you might have some token representing “you” that is then used to tie your content to “you”. When you then logoff and leave the keyboard, screen and wired rodent, the next person logs into “their” websites/accounts/etc and the user has changed to them.

When it comes to TV we behave differently, for a start, it’s an implied group activity, although it might  not be. The interaction from the user is less, much less, the TV delivers things to you, you don’t look for content. The searching you do is done in the EPG, with a view to finding something that you then watch for a period of time. The input is different, you don’t have a keyboard (with apologies to the 3 Sky subscribers who do… 🙂 )

This is the basis of the “sit forward/lean back” model (the words appear interchangeable, sit back/lean forward is another name for it as is lean back/lean forward), it is broadly based on our interactions with the system in front of us and how they shape our experience and expectations.

But people have done personalisation on TV ?

They have, and two examples spring to mind, HomeChoice and BARB. Used for different purposes but with equal issues.

Ok, HomeChoicewhich is now Tiscali – was a fairly novel idea, it was the first large commercial attempt in the UK to deliver TV and VoD over ADSL i.e. not on a traditional broadcast network. When you got the service, you logged in using your account details and you then set up a profile, you repeated this for every person in your house. In theory this means it can then “learn” about what you want and tailor its content (much like TiVO) however there was a subtle flaw…

…if the users are anything like the people I know who had it, one person logged their profile in and never logged out.

So we’re back to square one, a TV with n people in front of it and no idea who they are.

Why BARB ? Well they work on a similar principle, although slightly less sophisticated (or more depending on your viewpoint) model where each person in the household has to log their id into a box to indicate who is watching at any time. This is then fed into a system to interpolate the viewing figures.

The issues with this are fairly obvious and can be the subject of many posts, but they do indicate a need for some physical interaction between the user and the TV to say who is in the room.

This is not part of the current TV experience!

So how do you get personalisation to work ?

The first point is to recognise that this is not entirely a technical issue. First and foremost it’s a User Experience or Human Interaction challenge.

The solution to this will come when someone brings the kind of thinking that produced the iPhone to the TV. It will need a new way of interacting that uses a familiar interaction, but allows you to enable the new functionality.

The second point is that adding user ids to broadcast systems that are broadly ignorant of them is HARD. This is not something that can be bolted on, it will be a long and difficult project which will need some very clear direction on what personalisation means. Thankfully we can look to our brethren in the Enterprise sector who have had to do similar exercises before now.

The third is that this will open up a can of worms. Will you use User tracking ? Do you have sticky profiles ? how much data have you captured ? What the regulations around it ? What do you do about Adult content ? Targeted ads ? Who controls this ? Will you have targeted content with DRM ? How will you interact with third parties ?

The last point is that the UI challenge is also there for convergent platforms, where the idea of Live, Time-Shifted, On-Demand and Shared/User Generated content has come together, and this would have to also cope with these functions.

To take this forward, it’s time to see what people can do with the UI, it will need to be ambitiously creative and be a ubiquitous part of the TV. I’d really like to see people push this. Imagine your STB was more like the XBox or PS3 as a functional device (albeit without their quirks!), imagine what we might see ?

So, if you think you’re ‘ard enough, come make it happen!

Currently Listening to: Oakenfold – Ready, Steady, Go

Inconsistency in upgrading

As you may have noticed, most things these days like to upgrade themselves over the internet, which means for some products (or worse your box) an unexplained slowdown as they download that other bugfix/servicepack/upgrade.

It has to be said that for Architecture as a whole, together with the Source Control, Project Development/Delivery and Infrastructure Policies, this is one to sort out before the code is even started. While the Agile community may want to code from day one, the truth is that these type of activities, whilst not being coding, will save you much time, pain and money down the line if you get them “right”.

Well, I say “right”, let’s be honest, we aren’t perfect, but we should know our business, right ? In this sense our update/upgrade policy should match. If you want examples, there are plenty out there:

For my money, my current model to follow would be Steam. It’s transparent enough so you know what is happening, granular enough to control it, and CONSISTENT.

That last point in particular, it’s annoying to find out about major updates to programs on systems that supposedly update, such as the “Live” products from Microsoft, via other routes; in the same way as it’s not much fun to find updates that are allowed to reboot your box without telling you.