Show some respect

September 15th, 2011

Times are hard, cashflow’s difficult… all the more reason, surely, to protect and nurture the resources that allow your business to function effectively?  Apparently not, for at least one high street retailer.

This is a company that we’ve been supplying software services to for almost 12 years. We wrote one of their key business critical applications, that ten years on, is in daily use by their buying department. It’s not changed much in the past few years, but occasionally problems arise - usually due to data fed from other systems, from infrastructure changes, or related to user training issues. We’ve had a support contract with the company the past year, guaranteeing that we will provide prompt support on issues as they arise. In return, the retailer agrees to pay us a monthly retainer, with an additional sum if our support hours exceed a certain threshold (which they never have). So effectively they just need to setup a standing order payment for the same amount each month.

We have never ONCE been paid on time. EVERY month we have had to chase, chase, chase to get payment. In all that time, when we’ve sent 29 emails TO their accounts department, we’ve only ever had 2 emails FROM their accounts department. One was a survey asking for information about outstanding balances (!!) and the other was another request to file an up-to-date statement that had been sent to EVERY SINGLE SUPPLIER; not by BCC, but by including their email addresses in the TO field. Now, this gave me a very useful list of several hundred businesses for me to send unsolicited marketing to, should I wish to; it also brought a flurry of responses from equally incompetent users who hit “reply to all”.

Over the past months I’ve threatened to withdraw services on several occasions; each time IT have stepped in and eventually payment has been received. But over the year, I calculate I’ve spent roughly three times as much time chasing payment as I have providing support. That’s madness and it’s not continuing. I’m not renewing my contract with them and as of November their key production planning application will be unsupported, with no-one in-house (even after running the software for 10 years) knowing enough to support it. (Yes, it’s all documented, but no-one in support reads the documentation before referring support queries to me; plus most of it was written in languages that are no longer supported and they don’t have the in-house skills or tools).

The moral: If you are receiving a valuable service from someone - something worth paying for - treat that supplier with respect and courtesy. Treat them like dirt and they will walk away - even in the current economy.

The hint: If you have shares in the number one retailer for mums-to-be and parents alike, who are based in Watford, sell them now.  

Testing, Testing, 1 2 3…

September 30th, 2009

Not so very long I blogged here about the need for accuracy in documentation. Well, here I am again, trying desperately not to whinge but to instead underline the need for doing documentation well.

Once again I’m trying to implement a 3rd party web service for a client, and the documentation is again just plain wrong. Apart from being so sparse as to be positively cryptic in meaning, there’s a column specifying the maximum size of fields; but the example XML they give blows those field lengths away. Either the example data was never tested, OR the spec is wrong. Of course, I shouldn’t really need the example anyway; but since the spec fails to specify things like date formats, case sensitivity and so on I’m forced to examine the example for clues as to what’s needed.In many cases, of course, documentation isn’t needed. If you’re designing a website, the interface should be intuitive, and have enough helpers and pointers to allow the user to work with it without resort to a manual. There are all sorts of things that can help here, from adopting well-accepted standard layouts and conventions to using tooltips and pop-ups appropriately.

Years ago, in the dim-distant past when Windows 3.11 ruled supreme, Microsoft published a “style guide” that laid down the actual menu names application developers should use, where those menus should go, the size of buttons etc, right down to detailing in pixel-specific detail the colours and layouts for the corner of a button. Now in those days it was hard to make your application distinctive or different, user interfaces were pretty boring rather than pretty, but at least once you knew how to work one Windows application you could learn others very easily. The web has blown that model out of the water, and there are some pretty amazing visual metaphors that pass for buttons these days.But then there’s a whole raft of software that most certainly DOES require accurate, detailed documentation, and that includes web services. The documentation effectively IS the user interface for these types of application, and they’re certainly the first point of contact for a new user. First impressions count, so for goodness’ sake not only get the documentation factually correct, but make it easy - a pleasure if possible - to use.  Otherwise your (potential) users will get frustrated and fail in their implementations.

It’s not difficult - the simplest approach (once you’ve been through the planning, design, drafting, writing, proof-reading stages, of course) is to give your documentation to someone who does NOT know the product, and ask them to install / use / whatever, using just your documentation. They should not only be able to follow the instructions, but be able to do so easily, confidently, and know why they’ve done what you’ve instructed them to do. They should be able to access ALL aspects of your software.On this last point, I’ve long maintained that software features should not be discoverable only by accident - the user should be directed to the full feature set (at their own pace, of course) without needing to stumble across features.

To my mind, the rot in this area set in with Windows 95. Before then, Windows users accessed their file system primarily via the built-in “File Manager”; in other words, the USER managed the FILES. In Windows 95, Microsoft decided that the user wasn’t responsible enough to manage their system, and replaced File Manager with “Windows Explorer”. At one stroke, the file system became an “unknown” quantity, and the user had to “explore” - navigate through the unknown, never being sure of what they might find. It might seem a small point, but I strongly believe it marked a turning point in software - no longer were users in charge, but the software was and, if the user was lucky, they might work out how to use it.

(BTW, at Small Office Solutions we don’t work that way - if we write a service or a tool that doesn’t have a “traditional” user interface, we write documentation for it, we proof-read it, and we get someone to “test” it. We believe that’s the way it should be done.)

Remote Employment Awards

September 3rd, 2009

So, as you may have seen on my website’s homepage, I’ve been shortlisted for the Remote Employment Awards in the Freelance Contractor category.

Apart from surprise and delight, my overall feeling about this is that it’s both a huge honour and a responsibility. It’s something like 1 in 7 people in the UK are now “self employed” (in the broadest sense) and whilst not all of these could be described as “freelance consultants”, freelancers make up a significant proportion of the country’s workforce. However, judging by press coverage, and more importantly political decision making, you could be forgiven for thinking that there’s only a handful of us. Whilst there have been some concessions to “small business” over the past few years (reduced Corporation Tax rates, no necessity for audited accounts, simplified company structures etc) few address the “micro-business” explicitly. Conversely, this Government seems to view anyone with the nous, determination and vision to be working for themselves as to be doing so primarily to avoid paying “fair” taxes.

Firstly, it’s apparent that there will never be any agreement on the meaning of “fair”, and to use it in political terminology at all will only ever inflame things, and can never succeed in reaching agreement with all parties. That aside, it must be equally apparent to anyone with any common sense that choosing to “go it alone” is far too big a step for anyone to take for the dubious “benefit” of paying slightly less tax. As a freelancer, working through my own limited company, I qualify for protection under the Working Time Directive (except that as a Director, I can exclude myself and, if I’m to make a decent living, have to work far more than 48 hours per week). Similarly, I qualify for sickness benefit and paternity leave. But should I be in a position where I might choose to take those benefits, I will be losing far more in lost earnings than I could stand to take in benefits, so of course I just soldier on. (As it happens I feel like death as I write this, but am here at my desk working anyway). I pay not only employees’ NI contributions, but employers’ as well (or my company does). But since these payments directly reduce my company’s profits, this is a direct cost to me personally - unlike employees of a larger company. When you try and balance all the pluses and minuses of freelancing, it quickly becomes clear that this way of working is not supported by our Government, and it’s a hugely risky step to take (if leaving paid employment to start up, anyway).

So what does this have to do with the Awards? Well, I see them as a news “hook” on which to promote not only my own business, but the situation that freelancers in general find themselves in. Coincidentally, the awards come at a fortuitous time, just a few weeks before National Freelancers’ Day which is a great opportunity to fly the flag for freelancers everywhere.

When I heard I was shortlisted, one of the first things I did was conduct a poll amongst my clients, to gather their views on both Remote Working and Freelance Consulting. Around 40% of the respondents enjoy Remote Working for at least part of the time; 100% felt that freelancers offered a more flexible, better value service than the “big name” consultancies. That perhaps was inevitable, since my sample is of people who have already chosen to work with freelancers.  But all were able to give specific advantages to their own businesses of working with independent freelancers, and that alone gave me reassurance that, whether with the Government’s support or despite the lack of it, demand for freelancers will continue.

The concept of customer service

August 6th, 2009

OK, so you know where I’m coming from, I’ve just had the 48 hours from hell. And it’s not over yet. I’ve had the gross misfortune to have to contact Microsoft. I’ve you’ve ever had to do that, you’ve probably got a pretty good idea of what I’ve been through. If not, sit down, and let me tell you a story.

I run several machines here, for both internal services and developing customers’ software. To do that, I have various different versions of operating systems and applications. Most of my systems run Office 2003, and for compatibility purposes, I need to keep them that way. However, I have a couple of clients who need some Office 2007 development. I’m not committed to it yet, just checking out the issues and preparing quotes. I only have one machine that I can afford to put Office 2007 on, and that happens to be the server.

So, I duly installed Office 2007 Enterprise Edition on the server, entered the product key, and expected to be up and running. But instead, AFTER installation and on launching any office application, I get a pop-up “This copy of Microsoft Office ….. cannot be used on Terminal Server”.  (My server has Terminal Services enabled, so that I can do remote admin on it from any of my other boxes).

Pretty much all my OS and apps licenses are purchased through the Microsoft Action Pack Subscription; this is a package that gives me internal-use licences to just about everything, and is offered to partners so we can train, develop and demo MS software. We’re fully within the MAPS license terms in the way we use the software here.

I won’t bore you with the exact details, but suffice to say I’ve spent the past 48 hours in online chats, on phone calls, awaiting phone calls, etc.. etc.. with people in India, Egypt, the USA and the UK.  I’ve had responses varying from direct insults and abuse, to having people literally pleading with me to let them help me.  I’ve been cut off three times.  I’ve been given wrong numbers by MS staff twice.  One single phone call this morning lasted over 2 1/2 hours. 

Ultimately, it seems the MAPS licensing does not include the Volume License that you need in order to run Office 2007 under Terminal Services. Office 2003 is fine, MS are aware of the issue and in Office 2010, MAPS subscribers will be able to run Office on a TS machine.  The actual product is fine, it’s just a license issue.

There are two issues here. Firstly, NOWHERE does it say on the MAPS site that such a restriction exists. In fact, customers are positively encouraged to buy MAPS in order to demo various software configurations; yet for some combinations, we are expected to pay out additional license fees. Now technically, I’m pretty certain this contravenes the Trades Description Act, and possibly the Sale of Goods (fitness for purpose) laws as well. I have repeatedly pointed this out to MS, and whilst they can’t say that the MAPS info pages make this point anywhere, neither will they give any hint that they take the matter seriously enough to put a note on the webpages to that effect. This in itself is a clue to their attitude to their customers - they can’t be bothered to literally lift a finger and put a note on a webpage, warning their customers that additional expense may be involved.

Secondly, it should be blindingly obvious to any customer service rep that if there is an opportunity to resolve a client’s problem, (especially where it has arisen in good faith on the client’s part) at little or zero cost to the company, then it is incumbent upon them to do so. If nothing else, it’s simply good manners!

However, clearly either MS staff are not of this mindset, or have been instructed not to be helpful. On two occasions today, therefore, I had to spell it out to an MS support person: “There is a zero-cost to MS option here - you can issue me with the keys/license that I need in order to run the software you’ve sold me. I will still be aware of Micosoft’s appalling internal and external communications, absurdly complex licensing, but I will also know that MS genuinely have customer’s interests at heart and are prepared to make small concessions in order to provide decent customer service. Or, you can choose not to issue the key I need, confirming to me for ever that MS are totally self-centred, and have no interest whatsoever in their customers. In each case you can be assured that I will tell everyone who will listen my story. ”

The fact that on each occasion the rep made platitudes about taking my concerns seriously, having my interests at heart, respecting me as a customer etc.. etc., they both ultimately said “no” simply underscores the attitude that Microsoft have. Customers, to them, are the lowest of the low - dirt to be wiped from the soles of their feet.

No company, no matter how large, is invincible. This year we’ve seen many major US institutions - GM, Fanny-May, Freddy-Mac, Chrysler - collapse. Their downfall has been precipitated my many factors. However there are many ways to trigger disaster for a company, and I would suggest that Microsoft are single-mindedly charging down the road of totally disenfranchsing their customers. This is just as sure a recipe for disaster as any other.

If you have shares in Microsoft, I recommend you sell them now.

Acuracy is improtant

May 11th, 2009

And not just in general text (as in this article’s title).

I’m currently in the middle of enhancing a website for a client of mine. We’re building in some server-side processing that communicates with a webservice, by POSTing some XML. The complication (not that it should be) is that the owners of the webservice are in Australia.

They provided what seemed to be a comprehensive set of instructions on using the service, but on following them to the letter, hey-ho  -  it didn’t work.

First up, they’d added username/password authentication to their site, without mentioning this in the documentation. Very easy to resolve, but it took 24 hours to get the email to Australia and a return response.

Great, so now we can hit their webserver. Except that now, when authenticated, we get a 404 “not found” response. Another 24-hour round trip query later, and yes, they’d mistyped the URL in the documentation - wrong case. (In fact it turns out it WAS correct in one place in the documentation, but wrong in the place I’d taken it from).

OK, now we can POST the data, and get a response; this time it’s complaining about “missing field XmlData”.  Now, this isn’t a proper SOAP service, they just accept XML data within a standard POST field named “xmlData”. Note the difference in case there? The error message states “missing field XmlData”; their documentation calls it “xmlData”. So I spent a while with various combinations of upper, lower and camelcase trying to get their service to recognise my input. Eventually I realised it was a bug in my code anyway, but it was something I’d have spotted a lot sooner if the error message had matched the fieldname ACTUALLY needed (which was xmlData, as per the documentation, not XmlData, per the error message).

So now we’re really getting places, right?  Actually, no.  Although we’ve resolved the server authentication issue, the data also contains an affiliate ID and password field. Despite copy/pasting from their “welcome” email, it’s not being recognised. I’ve a feeling (though it’s just that at present) that the ID is valid only on the “live” server, not the “development” server I’m currently pointing at. The documentation pack ONLY gives the development URL, however, and asks developers to test their code (and have the service confirm that all is well) against the development server before going live. So, there’s going to be another 24-hour delay (at least) whilst we sort out IDs and passwords again.

In short: typos, missed information and the right hand not knowing what the left is doing has turned this very straightforward task into a marathon. When I, as a freelancer, price up a job like this I make assumptions about how long certain tasks will take; and I also make the assumption that, given an apparently “definitive” document, I have the necessary information. Each time I spend 10 minutes testing and then have to put everything down for a day whilst waiting an email response (not to mention writing the email itself as well) costs me nearer 40 minutes, as I have to load/unload projects, remind myself of the next task, collate and file documentation etc.. etc.. and on a small job like this, what was supposed to be a nice productive task quickly becomes a wound haemorraging profits away. Multiply this wastage by a few dozen times as other would-be users of this webservice around the world suffer the same problems, and quickly hundreds of pounds are being wasted for the sake of a 15-minute proof-read and a little care.

It doesn’t matter how much you’ve tested your software product, if the instructions on how to use it don’t work, your efforts are in vain. I’ve long held the belief, and this example vividly illustrates, that documentation (in terms of user manuals and guides) is an integral part of software development and that it, too, demands rigorous, controlled, planned testing every bit as much as every line of code that your developer writes.

1and1 web hosting

May 8th, 2009

1and1, and their associated company FastHosts, don’t have a great reputation for customer service.  I’ve been using 1and1’s Sharepoint hosting service for a couple of years, and don’t have any real gripes with them for the service. But now I no longer need that service, and so want to cancel it.

1and1 have a comprehensive account system, and although a little complex, it does most of what you need to do. Except cancel a contract, of course. You can add to, transfer in, modify, upgrade, extend etc… but cancel? Oh no. Eventually, if you do a SEARCH on the FAQs (it’s not available in the contents list) you can find a document on cancellation. Seems you have to log in at an entirely different site (and know your 7-digit account number - the other logins are happy to accept any domain name you have registered under your account). The online part of cancellation is fairly straightforward; but then, just when you think you’ve done it, you’re at a page with a couple of links. Click one to send an email confirmation to yourself which contains a link that you follow to confirm. Fair enough, but why can’t that email be sent automatically? 1and1 obviously hope customers overlook that step and they can charge for another year.  To cancel any domains associated with the contract, you click ANOTHER link to open a PDF form which you must sign and FAX back to them.

Now, the page says that the fax number is on the form. It’s not. In fact, it’s not anywhere on the site. I did, after quite a bit more searching, find a fax number for 1and1’s contract department, and have sent my fax to that number. But of course they may complain that it’s the “wrong” fax number. So I hand-wrote a comment pointing out the omission of the fax number, and stating “Unless I hear from you, I will assume this instruction has been accepted by 1and1, and I will not be liable for any further costs as a result of 1and1’s failure to comply with this instruction“.  I was thinking, on past experience with 1and1, that they are likely to take ANY route to try and bill me again despite my best efforts to cancel. After sending the fax, though, I spotted a disclaimer on the form “Hand-written or electronic amendments to and comments on this form will not be taken into account and will be considered non-existent“. 

This is the electronic equivalent of sticking your fingers in your ears and singing “nah nah, I can’t hear you”.  I doubt very much it would stand up in court, but it underlines 1and1’s attitude towards customer service. You may draw your own conclusions.

Sotfware’s a funny old thing

May 6th, 2009

OK, so this is my first blog post here. Just intalled Wordpress, and getting to know it.

Wordpress, eh? Yes, it’s free, it’s supported by my hosting provider (Fast2Host, bless ‘em) and everyone knows how to navigate a Wordpress blog. After all, it’s used by millions of bloggers the world over, right?  So it must be pretty bug-free and easy to use, right?And so it is, basically. Five minutes after clicking “install”, here I am, blogging away.

But you see that apostrophe up there in the blog title (and also in this posting title?).  Funny thing, apostrophes (and double-quotes too, for that matter). You see, because they’re almost universally used by database systems to mark a piece of literal text (and distinguish it from a database command) , apostrophes themselves can be tricky to get into databases. They’re used in HTML, too, and various other places. And so to enter an apostrophe into a database, or show it in HTML, there are various work-arounds; special character sequences that tell the software “what comes next is an apostrophe, but don’t treat it like that, just handle it as plain text”.  And most of the time, that works. Except that when setting up the blog, I entered a quote, and it came back displayed as \’. I edited it, thinking I’d mis-typed it. Still showing as \’  - and a second instance, I’d not seen first time around, was now \\’.  Each time I edited, it added a backslash.  As a developer, I quickly twigged that I needed to enter the “encoded” version, ' - now it displayed fine. I went back to admin to make one more little tweak, hit save, and voila! I was back to \’ again.  When Wordpress displays ‘ on the public pages, it correctly displays it as a quote, or apostrophe. But it does the same thing when you edit, so that when you save, and then display again, the quote is “corrupted”.

Now this isn’t such a big deal. No planes have crashed, no power stations exploded, no pacemakers failed.But it’s an indication of just how fickle software can be. Sometimes my clients alert me to “issues” in software that, on the surface, appear really trivial, but also really obvious - how on earth could I have delivered software with such an obvious problem?  But software testing is not a “do it once and forget” process; no doubt the developers of Wordpress tested that admin screen many many times, and never spotted what, to me, was a glaringly obvious issue.  So this is no way a gripe with Wordpress. But it does make you wonder, if a piece of software as much used as Wordpress has glitches and gotchas of this type, is it any wonder that so many computer systems sometimes behave oddly, or that, now and again, even the most accomplished software developer slaps his forehead in a “doh!” moment when a client points out an “obvious” mistake?