Wednesday, 23 September 2009

BCS: A lesson in irrelevance or alienation ?


The British Computer Society (BCS) was created in 1957 and has about 70,000 members out of 1 million + UK IT Professionals (figures from E-Skills UK).

A membership of less than 7% after 52 years in existance is not particularly impressive. Given its royal charter and priviledged position you have to question why the BCS fails to attract the majority of IT professionals.

IT Training Firm Firebrand believes 91% of IT professionals are unaware of the BCS accreditation scheme (CITP). However, I believe the real reason that the BCS fails to attract members is not simply down to its lack of relevancy to both employees and employers, but its alienation of potential members.

It has tried many schemes to attract members and I remember many years ago as a teenager visiting computer shows and seeing the BCS trying to sign up young people to join 'ACE', the Amateur Computer Enthusiasts club for young people who "weren't good enough to be proper BCS members". This rather patronising approach to attracting members- even young ones- unsurprisingly failed!

25 years later, the BCS launched ELITE, "Effective Leadership in Information Technology" but this time only open to members of the BCS. So the journey from patronising to pretentious has been completed. The irony is that all you need to be ELITE is to be a member of the BCS and in IT Management. Quite frankly its harder to become ELITE in the classic arcade game (and more cherished I suspect, even after 25 years) than this BCS assignment.

However, if you want Chartered status, then you need to take one more step and take the test, but given their sample question (see below) I don't think this is a barrier either.


So, many IT professionals could be ELITE, MBCS and CITP, yet shun these attributes and prefer instead to seek certifications from Microsoft, Oracle, Cisco etc as a means of personal development, recognition and progression.

I am not sure whether the latest revelation from the BCS (trying to create a global IT profession) is another example of corporate delusion or the recognition of its failure to attract people in the UK and hope that professionals abroad will be more receptive.

The problem though is within the organisation's DNA which remains elitist and apparently oblivious or impotent to the many IT challenges facing the industry and society. Whilst the BCS proports to be "Enabling the Information Society" the reality is that it has failed to have any significant impact within the industry, even after 50+ years.

Sadly this - more than membership numbers- is the real tragedy. The BCS appears ineffective in making any positive impact on IT in society, in government and industry.

As a country needing to diversify from manufacturing to a knowledge economy there are obvious areas where the BCS - if it had achieved a broader membership and greater vision - could have impacted including; PC's in every home, everywhere internet, re-platforming schools, UK Software independence, open standards, public IT projects etc .

The list is endless. The contribution, it seems, isn't.

Friday, 18 September 2009

"Code Monkeys" and the "Software Eunuchs"


Its odd given the historical roots of programming - and in many ways its growing complexity -that the term 'Code Monkey' should have arisen.

You don't get 'Lawyer Monkeys' or 'Financial Monkeys', so why has this derogatory term emerged? 

My view is that this is the result of a 'devaluation' of the role of programmers and the increased demarcation of roles that has arisen - at least in part - from the introduction of the Waterfall methodology.

The demeaning term of "Code Monkey"  suggests that coding is just a basic and simple process of churning out lines of code according to the specification. Rather like a copy typist or a translator taking a specification and transposing it onto the computer. The "real brains" being with the analyst, the designer or the architect (in fact anyone but the person who built it). No wonder many coders want to become something other than a coder because they don't feel their role is valued. 

It may seem a rather minor point to be making, but actually I believe this has contributed significantly to poor software. Naturally it is demoralising to programmers to be thought of as "Code Monkeys" (either explicitly or implicitly), but more than this, it disengages and divorces them from the analysis, the design, the user, in fact everything except the lines of codes they are "cutting" (not sure I like that expression either).

From a coders perspective, they feel more like a "Software eunuch", a coder without involvement, influence or power over their project. 

So product development is reduced from being a creative team effort to a production line effort ('A' doing what 'B' passed down the line) and unidirectional.

This is where you get the typical "swing" characterised so well in the cartoon.

You can just hear the programmer turn round saying "but I'm just the code monkey" not as a badge of honour, but to excuse their involvement in a project they had no influence. 

There are many lessons to take way from these experiences, one of which is the need for team work and joint ownership of outcomes not simply isolated ownership of processes or individual deliverables that might be expected in a production line environment.

The other is the recognition that coding is an intellegent and creative activity not best suited to monkeys of any description, and that intelligent creative people have more to contribute to the development process than simply cutting code.  

This is one reason why I believe the Agile methodology has made a significant positive impact on development due to its much higher involvement and engagement with developers. Certainly this is my experience.  

My Three  (R)evolution Rules...

1) Don't hire code monkeys.

2) Don't treat coders like monkeys and

(coders)

3) Don't work like code monkeys.














p.s. they never did get any monkeys to type the works  - or even words - of Shakespeare.

Friday, 28 August 2009

Unit Performance Testing


I mentioned in my previous post about the need to test performance early. I always intended to follow up with more detail on how this is achieved and this entry is designed to provide some detail behind this. The fallacy of only looking at performance after system integration testing is now becoming well documented so there is no need to repeat my earlier points.

Note: I am not saying that system performance testing shouldn’t be done, just that Unit Performance Testing should be done as well to catch problems early on and therefore reduce costs/rework. So Unit Performance Testing should be thought of in the same way as Unit Testing (e.g. not a replacement for system testing but as a precursor to)

However, the next question is how can you measure TAP (Total Application Performance) at a unit level before the whole application has been put together? To expand on this, supposing you are developing a functional area of the system which must respond to the user within 10 seconds. So you have a TAP Metric of 10 seconds for this functional point/use case (this being the typical post integration performance test target metric).

However, in this functional area, there are 5 discrete units of code that need development. These units all require execution to deliver the functionality to the user. They most likely will have different levels of complexity, performance profiles, and could possibly behave slightly differently (e.g. in terms of performance) depending on how they invoke each other.

The point is, although you can record the performance of each unit of code, how can you possibly derive a target pass/fail mark from the TAP given the variables above? It is this sticking point which has lead many to give up pursuing this further.

The solution is heuristics and probability. Whilst it doesn’t guarantee to catch 100% of all performance bugs, it has a high degree of probability to catch the majority of the really bad performance bugs (and it is these which generally require expensive re-writes).




Heuristics:

Using the previous example of a TAP target of 10 seconds comprising 5 separate units of code (A,B,C,D,E), I have presented 3 scenarios above (1-3).

Imagine that only unit “A” has been built yet. What should its pass mark be?

A starting place (without weighting or analysing any of the unit specifications) is 2 seconds. This simply divides each unit up equally (see scenario 1). If “A” is within this metric then it is probably low risk.

In Scenario 2, unit “A” is taking 5 seconds to execute and should immediately flag a warning. It may be that taking 50% of the TAP target is not an issue as this particular unit of code is doing most of the work (e.g. getting data from the database) but it does flag the need for inspection and clearly redefines the acceptable Uniform Performance Target of 1 second for each of the subsequent Units (B-E).

Scenario 3 is actually not uncommon. One – often significant unit – of code performs exceptionally badly and uses up (and sometimes exceeds) the TAP target. The remaining units of code (B-E) must use ZERO time or otherwise fail the TAP Target. Given that this is unlikely, Unit A needs to be profiled and optimised in order to reduce its execution time.

So to conclude a very simple approach (without needing a lot of upfront analysis) provides a mechanism to identify units of code that may contribute to failure when full system performance testing is conducted. The three scenarios are indicative (Green: within allocated time limit; Amber: above allocated unit limit but not above TAP Limit; RED: up to or exceeding TAP limit)

It is also worth noting, that sometimes “A” has already been written in a previous development cycle and whilst performant then, is now performing badly in the context of its usage/invocation by unit “B”. For example, say the purpose of unit “A” was to process thousands of widgets in a day, but unit “B” is asking it process a single widget over a thousand days. The subtle difference may not have been apparent at the time, but “A” had been optimised to iterate over widgets not days and the new use case is causing it to badly perform.

In this example, unit “A” isn’t even on the radar (as it already exists), but through the “RED/AMBER” flagging of unit “B”, the subsequent profiling reveals that 80% of Unit “B” processing time is taken up by “A”. In response to this it may be necessary to rewrite/enhance/optimise Unit “A”. This again may affect any other units relying on Unit “A”. Again all this is identified long before system testing is conducted.

Weighting:

As shown above, even using a simplistic rule of thumb approach can identify and capture issues early on and is worth piloting to gain further insight into how this approach can be customised within the context of your development processes.

The Unit Targets can be further refined with the upfront involvement from architects on the unit specifications. Analysis up front should be able to weight the units in terms of likely performance impacts and used to modifiy the time allocation given across the units (e.g. from the equal distribution of time to weighted).

For example, an obvious default weighting might be 3 for database activity, 2 for processing/business logic, 1 for gui/presentation. The higher the weighting the longer the predicted execution time.

You would then add up the weightings and divide the total by the TAP target and this would give you the weighting value in seconds (or part of) which you then apportioned to the unit based on its weighting.

For example using say that “A” was getting data from the database and was weighted as 3. The remaining 4 units (B-E) were simply presentation and were weighted as 1 each. This would give you a total of 7 divided by the TAP of 10 gives you an individual weighting of 1.428 seconds.

From this you derive the acceptable performance for Unit “A” is 4.285 with each of the other units limited to 1.428 seconds.

Whilst no formula is guarenteed, the use and refinement of these tools will enable you to capture a greater degree of performance issues early on reducing significant rework, costs and delays.


Thursday, 9 July 2009

Google "Kill Bill III" & Larry Strikes Back


As predicted in October 2008 Google announced yesterday that they were bringing out a new operating system for laptops/netbooks etc. As previously thought, Chrome is going to be at the heart of the system, in fact I suspect - other than speed, simplicity and security - the operating system is actually going to only play a "supporting role" in powering the browser to do its job.

This brings Google into the "stack owning society". Microsoft own the stack from Windows to Internet Explorer, Apple own OS X to Safari (not to mention the hardware) and of course Sun had Solaris & Java. Finally Oracle was also building its own stack (and now owns Sun's to boot).

So actually the prediction that Google would go this way was perhaps not the greatest prophesy! Of course, they haven't necessarily got exactly the same blocks, but it would seem the key ones converging are the o/s and browser (though don't rule out hardware just yet).

So firstly how will Google differ from Microsoft? Well the paradigm is different. Microsofts "eco-system" is around fat (ok "rich") client software on top of its fat operating system. Google on the other hand has its eco-system firmly in the cloud. The operating system isn't (YET) the destination, but a departure lounge for the web based applications rendered by Chrome.

It is unlikely that Google will Kill Microsoft with its new o/s, in fact potentially its o/s is likely to be quite complementary (though i'm sure google will not admit it), but what it will do - perhaps not immediately - is start to erode the monopoly of Microsoft.

Googles new operating system may well be perfect for netbooks. Windows 7 isn't going to get close to the speed I suspect google will deliver to the netbook. My guess (having used windows 7 on a laptop and xp on a netbook) is that windows 7 on a netbook will be comparable with Windows XP. But that is still slow!

If googles operating system is as good - and as fast - as Chrome, then I think we could see netbooks migrating towards Google. In addition I suspect Googles o/s will be free versus Microsofts chargeable windows and when applied to low cost netbooks, you will see that users will have more than one reason to choose google.

Given the power of the netbooks and their reduced screen/keyboard you won't necessarily want to use it for much more than browsing. However, as Microsoft well knows, the power will increase and as users get aclimatised to Google O/S and 3rd parties start developing for it, the eco-system will develop and potentially spill over into laptops and pc's. This is Microsofts greatest fear.

Microsoft is vunerable. Vista was a disaster. They got "disrupted" by the netbook and had to resurrect XP for the netbooks and focus on putting windows 7 (Vista 1.1) on an atkins diet to stand any chance of creating an upgrade path for XP. But they are still "disrupted", a fat-os isn't actually right for netbooks and also, given the price-point, the monetisation model is also wrong.

Add to this that Microsoft's Internet Explore has nose-dived to about 40% usage a (second place to Firefox) and you have to conclude that Microsoft is not dead but wounded in the key "Platform" space. The platform is where the war is being fought. The O/S runs the hardware, and the Browser increasingly is the Application Engine.

Time now to predict ACT 2: Larry Strikes Back.

The reall author of this drama of course is Larry Ellison who tried to do what Google are doing about 14 years ago. It wasn't called the netbook or chrome then, but in 1995, he brought out the "network computer", a scaled down computer for the network centric world (read cloud/web). Of course, he was ahead of his time and it failed. But now is the time, and what he tried to do then, is becoming a reality now, except not lead by Oracle, but by Google.

However, Larry is not one to be left out of anything. He has the cash and - with the Sun acquistion - quite a bit of the technology to launch a 2nd front against Microsoft. In the previous "Microsoft Monopolistic Paradigm" it would be crazy for yet another o/s and browser to be fighting out the crumbs left by Microsoft. But things have moved on. Microsoft doesn't have the monopoly on the browser, and could quite easily be squeezed out of the growing netbook market leaving Google and Oracle to have a 3-way fight (i'm assuming here Apple remain fixed on the high value "up market" space).

Now Oracle have the capability to build the kit (e.g. SUN) as well as build on top of the kit (Solaris and Java). Given that this was always close to Larry's heart and that he loves Microsoft just as much as well Google, I think it won't be long before he announces his OracleTop. Where he may decide to do one "upmanship" is that he will add one more item to the stack. Whereas Google and Microsoft have to work with 3rd party generic hardware, Oracle could build their solution from the ground up e.g. build it from hardware to browser - just like Apple.


Monday, 23 February 2009

GoogleTop II

In my October 2008 post, I stated that Chrome was perhaps just a precursor to Google trying to own the entire Stack (Operating System/Browser/Web app) and that Android was their first stab at this via the mobile phone.

It now looks like that Google and/or others will use/extend Android to do just that. Asus is apparently considering deploying Android on their Netbook and in January 2009 it was reported that techies had already achieved this on an Eee PC.

If they do meld Android with Chrome and the Google Apps then you can see with the Google marketing machine a clear strategy and alternative to Microsoft in some areas.

I still believe Splashtop and variants could be a real challenger in the mid term, but this news isn't a good one for Microsoft particularly at the low end netbook space.
See latest news on Freescale's $100 netbook with Android. With the reduced computing power of Android, netbooks can be even cheaper and further undermine Microsoft in that wintel netbooks have to be more powerful and with an additional license cost.

Tuesday, 17 February 2009

The Netbook Revolution

I am fortunate to be writing this post on my new Dell Mini 9 Netbook which I received gratefully as a birthday present. Since it was from my wife I had some say in just what netbook was chosen and what operating system loaded.

I agonized over the operating system for quite a while. I did not want to have a legacy - read Windows XP - operating system loaded. I would certainly NEVER go for vista even if it was "possible" and Windows 7 (which would be viable) is not out yet.

Actually there are in fact only 2 options right now, Windows XP or the Linux variant Ubuntu. I wouldn't mind playing around with Ubuntu, but not fighting with it and the general feedback is that the return rate (back to the shop) is 4 times higher for Ubuntu than Windows.

This is not to say that the problem is soley down to Ubuntu (it is apparently the easiest of the Linux variants to use) or simply culture shock to those used to windows (although also likely the case). Whilst these are contributory factors, I think the bigger issue is drivers both in terms of availability and usability. e.g. I use vodafone mobile broadband which works on Windows or Mac but not Linux and whilst this situation may change, the issue then becomes ease of installing and configuring drivers on Linux. The latter is not something Linux is known for and when you think of the myriad of devices that you often connect to your laptop (printers, memory sticks, usb drives, camera's, mp3 players etc) you start to get a little bit nervous.

This is NOT to say that these things are not insummountable just that I spend enough time sorting out IT problems at work and don't really want to create them at home.

So like many techies and non-techies the answer was Windows XP.

This is of course good news for Microsoft. There was a real opportunity for Linux to become a defacto standard on Netbooks due to the inability of Vista to run on these low-end devices. In fact given the huge popularity of these devices - My wife has just ebay'd her Apple Laptop and ordered a Dell Mini 9 for herself - it could have dealt a serious blow to Microsoft. Instead Microsoft have been wounded in terms of lost revenue (XP costs less than Vista) and pride (The Fat os is the couch potato left watching the two horse race).

So is this the end of the Linux Attack on the Laptop?

I don't think we have seen the last of Linux at all, but as i've previously blogged, I do not believe a "Full Frontal Attack" by Linux will succeed. By this I mean that giving users an ultimatum of Linux vs Windows, even an easier Ubuntu vs Legacy Windows XP ultimatum, will result in users turning to Windows.

Why? Because Linux simply isn't a complete replacement for Windows and there is enough doubt amoung the windows user base to prevent them taking a step into Linux on the chance that Linux is enough for their personal needs.

That is why Splashtop is so interesting as a Windows Trojan Horse because it doesn't Take on Windows directly nor does it pretend to be a replacement, just an alternative o/s for some specific tasks particularly the web. However, the Web is a now a major part of our computing life and Splashtop (including varients) offer some unique abilities, like almost "instant on" and hugely extended battery operation.

And whilst this feature hasn't filtered down to netbooks yet I can see it being another transforming feature of netbooks. Why? Well netbooks are the perfect size to carry around with you but you don't want to be waiting longer for the laptop to start-up than the cup of latte - you ordered - to arrive. Neither do you want to carry a power supply brick with you or be married to the local power point of the coffee shop.

Given that netbooks have less memory/slower cpu's a cut down version of linux also makes sense. This will be one of the few inhibitors left preventing netbooks from becoming as popular and widespread - and perhaps on the street - as mobile phones.

Lets look at the others criteria already met;

Cost. The cost of netbooks is half the price of laptops and a number of mobile phone resellers are offering them free with a mobile broadband contract. Lets face it, netbooks are the same price or cheaper than many mobile phones!

Internet. Relying on local wifi and/or putting up with the costs some places charge has been inhibitive. With mobile broadband, you get internet wherever you go (assuming you get a signal).

Data. One of the reasons you didn't take your laptop with you was fear of theft/loss/breakage. This was partly down to the cost of replacing your laptop (see point on cost above), but also about loss of data (often not replaceable). However, with Web 2.0 you can work online with data held centrally or you can use one of the online storage solutions such as www.box.net to secure data on your laptop.

With online applications and data, the demise of your laptop is less of an inconvienience than if you lost your mobile phone. Funny enough halfway through doing this post I was evicted from my netbook by the wife. Since I was blogging online, I simply logged into my laptop and continued the blog. If I had been writing a document using an online word processor it would have been a similar story.

The only thing left is the ability to "lock" your netbook in the same way mobile network providers can do with mobile phones when they are lost or stolen.

For those interested in a review of the Top Ten Netbooks click HERE

Tuesday, 3 February 2009

Balmer's 7


After many months of tolerating and suffering Vista I could take it NO more. I wanted to retrograde back to Windows XP as soon as possible. However, after investigation I was to be told that XP did not have drivers for my newish laptop, so going backwards was not possible. 

Faced with the intolerable current o/s - that would be Vista - and the impossibililty of the past, I opted for the only remaining option; "to boldy go where no one has gone before". Well the future anyhow in the form of Windows 7 build 7000 with the lovely "for testing purposes only" warning.

So having ventured into this pre-release version of windows 7 on my work laptop I have the following to report after almost 2 weeks of continuous usage... 

Windows 7 is what vista should have been! Even as a beta it is more stable, more reliable and considerably faster even compared to XP. 

Connecting to wifi with Vista was a black art, it might work instantly or you could be flaffing around for an hour having to reboot the laptop. With Windows 7 it works seamlessly even from hibernation onto another network. Shutdown (which could take hours on vista) is perflectly fast as is startup and hibernation.

Its not all perfect and there has been a few issues with a printer driver and installing one application, but otherwise everything has installed (including drivers) as it would with Vista. So it looks like they have maintained quite a degree of compatibility. 

Searching is also fast and there are no unexplained slowdowns and freezes that would occur with Vista. This mixed with a mostly improved GUI is quite impressive given that I am comparing a pre-release beta verison of Windows 7 with a post release Service Packed (SP1) Vista. 

7 is certainly lucky for Balmer and particular in relation to version 6 (Vista). Funny though that actually Windows 7 isn't really Version 7, but actually 6.1.7000 which you could argue is a bit of a point release on Vista. I'd agree in this respect that Windows 7 major differential to Vista is not functionality but quality and performance. It is Vista working.

I certainly won't be going back to Vista and am looking forward to the full release of version 7. I believe it just may help settle the nerves of the Microsoft fellowship. It of course isn't Midori nor is it anorexic when it comes to size but it definitely has been on some kind of atkins diet with vastly reduced memory requirements. 

Microsoft says it will even run on netbooks which generally have 1GB or less of memory and Intel Atom processors. Will it run well though? With the performance comparisons i've seen of Windows 7 versus XP I suspect it may actually pull this one off as well. However, it is yet to be clear whether only specific versions or all versions will run on netbooks. 



 



Tuesday, 21 October 2008

GoogleTop

So what is Google playing at by releasing yet another browser into the wild? Another side-swipe at Microsoft perhaps? Could be, but I think there is more thinking behind this. 

Google is creating a whole load of "Google Apps" including Docs, Gmail etc but they - along with many other web apps - can be slow due to the execution of javascript and rendering. 

Creating a really fast browser helps google run faster and therefore gain better acceptance. Of course it is not the only thing that needs to happen. It also needs to be able to handle data offline and hence "Google Gears" was born. 

So what next? We have "Google Apps" running in a "Google Browser"  on ... Windows ... 
I suspect next step is for Google to release a "Google OS" (I have coined it "GoogleTop" not that I want to do the marketing for Google). 

I am not talking about Google inventing a massive "Fat-OS" like Microsoft, but rather a cut down linux varient similar to Splashtop and with Chrome preinstalled plus a few little modifications perhaps. This is not so outlandish given that Google have already ventured into this with Android albiet on a mobile device

I think it would be very tempting for Google to build in search so that if you did store any files  locally you could find them instantly (with, of course, some targeted advertising). 

Google would then be able to provide a completely web (and ad) centric as well as non-microsoft platform with all the applications provided online. 

If Microsoft's WinTel platform is primarily license driven, then the Googletop platform represents an entirely Ad Driven alternative model. Microsoft wants to keep us coded to the desktop for the license fee, whilst Google is trying everything it can to get us onto the web where it can monitise our activities through Ad's. GoogleTop would be a perfect way to do this by effectively just giving you enough software to get you onto the web via Chrome. 

Whilst doing everything online is not everyones preference, I suspect the facebook generation are much more web-centric and will be keen adopters. 

If i'm right then Google's developments all come together as part of an overal strategy to take the stack. Otherwise it would just seem to be random swipes at Microsoft and somehow I think the guys at google are smarter than that. 

Wednesday, 27 August 2008

Is 'Splashtop' a Trojan horse?

I think it is every technologist's dream to develop a “killer app” or (disruptive technology). However, I suspect they are often not the result of deliberate endeavor; but are the by-product of trying to address a deep need or by having faith in a solution that isn’t yet recognised or adopted elsewhere. Sometimes I don’t even think they know they have the killer app until much later on. Perhaps not surprising, since it can't naturally be obvious, otherwise everyone would have developed it!

However, this hasn’t stopped Netscape, Oracle, Sun, IBM, Linux and latterly Google and Apple – and probably many others - trying to develop a solution that would compete or undermine the Microsoft monopoly and/or give them a competitive edge. Microsoft have become – rightly – paranoid about almost everything and everyone appearing with a silver bullet or wooden stake (not that I’m comparing Microsoft to anything evil :) ).

Windows gives Microsoft a competitive edge, domination and channel/relationship with what must be close to 1 billion + people. Microsoft will do almost anything to protect this franchise.

And of course windows has had to compete with Larry Elison’s 'network computer', Netscapes 'the browser is the computer', Linus Torvulds 'free operating system' and Google’s 'Internet Centric computing' and more recently Apples 'Leopard'.

With Microsoft’s latest Vista release receiving much negative publicity and an increasing Apple market share many would see Apple as a potential rival to Microsoft.

However, Apples operating system is not disruptive at all, simply a better product. A (disruptive technology) is in my view something that often goes under the radar – like a Trojan horse - and is initially purchased/considered for purpose ‘A’ but eventually (and sometimes rapidly) is adopted for purpose ‘B’. It is the later scenario which unseats the established players and disrupts the market.

Whilst Apple may not have the disruptive technology, I suspect splashtop and a number of other offerings ( see engadget ) may deliver a significant blow to Microsoft.

Splashtop – and other similar offerings – is effectively an “instant ON” cut down hardware compliant operating system with browser/email/calendar contacts etc.

And the benefits ?

You do not have to wait ages for windows to load or close down.
You can be on the internet in seconds.
There are less attack vectors for viruses/hackers.
It requires less/no patching/hotfixes.
Battery life is measured in DAYS not hours. Yes DAYS!
There is almost certainly a faster browsing experience than via windows.

I am sure these points are an obvious attraction to anyone with a laptop. Note the 'instant ON' offering is NOT instead of windows but an additional solution. You can still boot up your 'full fat' windows solution whenever you want.

But windows now isn’t needed if you simply want to surf the web or pick up/send email. You will also be able to view any office documents, just not write any documents in word etc. But you can use the various online word/excel solutions that Google and others provide etc.

So hang on, you actually will be able to use the web, email, book meetings, check your calendar, write documents online as well as spreadsheets etc. You will be able to do this instantly and quickly and with a battery life that is measured in days....

You will still load up windows, but won’t it be less and less, as you find more ways of doing stuff online and/or Splashtop and others provide more instant functionality? Sure you will still have windows – as a comfort blanket – for a while at least, but only for a while.

And gradually windows would die a death of every increasing instant small silver bullets, not for everyone but for the many people who simply use their compute for these activities. After all we have the Playstation 3 and X box for games don’t we?

So whilst Splashtop is not seen as a challenge to Windows, but simply complementary (purpose 'A'), I can see it developing into a real challenger and even replacement (purpose 'B'). I predict this will be one of many slimOS products being released in the next 12 months.

My quesiton is, have Microsoft seen this coming and is Midori their response?

But perhaps the most important question is, will they be too late?

Tuesday, 19 August 2008

The Three Legged Dog

One of my bug bears - and everyone in IT seems to have at least one – is performance.

Badly performing applications and operating systems really annoy me – often more than other bugs due to their persistence - and more importantly, reduce my productivity. Yet such an annoying feature seems commonplace and I for one do not buy the “it’s the hardware” argument any more than I would buy the “it’s the road” argument for a badly performing car.

I should distinguish between apps run on recommended hardware and those run on an old desktop next to the broom cupboard in an office – far far away... - a not too uncommon experience.

I am sure many of us can catalogue the list of applications and operating systems that fail to perform everyday functions. I have previously referred to Vista as poorly performing (and in my view too fat to live) and even my brand new HTC PDA - sporting Windows Mobile 6.1 – runs like a snail.

As well as not buying into the “it would work well on a CRAY supercomputer”, I also don’t buy into the “part of testing” argument either. Sure, testing should report the issue and indeed FAIL the release because of it, but they are hardly responsible for the performance(though I have to question why they do not exercise this veto more often).

Finally I do not buy into the “it’s a bug” argument. Sure, it is a bug, but not in the sense that I find performance normally referred to. E.g. that that performance issues will become apparent during Performance Testing which, according the V-MODEL, occurs during system testing.

Of course, this is a reasonable place for verification BUT not the first instant for this testing, in the same way that you would not expect it to be the first place to discover of bugs that would otherwise be discovered during unit testing.

I also do not subscribe to the idea that code performs by default and it is only the random occurance of bugs that interfere with this natural state of affairs. I assert that actually the reverse is true; that unless performance is architected and coded in from the start, then it will always perform badly. I would also assert that this statement is more able to explain the reality of our experience of applications.

In my experience, more often than not, the functionality has had to be re-written from scratch – rather than bug fixed - due to its poor performance. It has not been a “bug that crept in” but simply the absence of performance architected/designed code. This also explains why poor performance often isn’t rectified pre-release due to the cost of re-writing code and the effect on the date of release.

However, this is all the more reason why code needs to be architected and designed for performance and not just functionality. It would appear that “non functional requirements” - such as performance – are treated as “soft” requirements rather than “hard” requirements, the implication being that they are an optional extras.

I do not buy into this or the run out of time argument either, since this performance has to be considered up front, not last. If you leave it to last you have left it too late.

The example I had quoted to me on several occasions is the cash machine. Accepting all the functionality of the cash machine, if it took 10-15 minutes to dispense the cash, just how often would you use it?

I also understand that performance (and also scalability) is harder to achieve these days due to “The Stack”. In the “good ‘ole days” you coded in machine code/assembler direct to the CPU. Now you go through numerous stacks, api’s, classes etc which you didn’t write and have actually no idea how they perform under different circumstances. But that only sustains my previous assertion that code does not perform by default, but only through careful design, architecture and unit testing.

It is also true that code may have different performance profiles given the tasks required. For instance, a piece of code relating to train schedules may be very quick to list all the trains departing on a given day, but horrendously slow to list the trains on a given line. This dimensional performance characteristic can be present in many different areas.

Another mistake is data processing; Developers responsible for data entry logic can overly influence the schema for data entry performance over data access, yet data reads often account for 80% of db access in the wild. Thus data entry is fast (since it is dictated initially) but data access is slow. The effect is poor performance overall.

So my TEN principles for improving performance are;

1. Use cases must include performance profiles/response times.
2. Design must include reporting, scope and response times.
3. DBA must be involved in database design and focus on data access/reporting performance.
4. Architecture must be involved in development start-up meetings with performance a key agenda item.
5. Developers need regular performance training.
6. Unit Testing MUST include performance profiling including use cases which effect data dimensions/reporting etc.
7. Developers/architects need to include performance strategies as part of their training/coding approach.
8. Unit Testing must have success/failure criteria including performance.
9. Architecture must be involved in reviewing code not just in terms of formation/patterns/quality but also performance
10. QA Departments are given veto over poor performing releases.

Thursday, 14 August 2008

Will Midori have Brains as well as Brawn?

I recently blogged about the arrival of Vista. The gist was that Vista was suffering from the bloated consequences of Microsoft’s golden rule of compatibility. The “new hope” being Midori which apparently drops this mantra with a fat free Operating System embracing the latest technology and paradigms of “manycore” computing etc.

Great! This will definitely have a positive impact on security, performance, scalability etc. But in looking for a new operating system I still want something more than just a young fat free athlete. I want it to have brains as well as brawn. I know I’m demanding, but then Microsoft does have the resources to deliver.

What do I mean by brains? Well to be honest I don’t have a nice one line explanation. But let me start by giving you some context....

In January, Bill Gates was over in the UK doing what I’d describe as his “goodbye” tour and I was lucky to get invited to one of these events. Even luckier still, I entered a question which got chosen to be asked of Bill Gates. This was my question....


Is the pace of innovation slowing down?

"There have been many technological and software innovations over the years with the Internet, Client/Server, Web applications and .NET etc., but is the pace of innovation slowing down? .net was a major innovation but since then many would characterise Microsoft releases as user experience enhancements? Are we likely to experience this consolidation until the next leap, perhaps to AI platforms? What work is Microsoft doing in this area?
"

Bill’s answer wasn’t a one line answer either, but the gist was that Microsoft can only move as fast as the market will allow etc. True of course, but who do you choose as the pace-maker? Some organisations are still running DOS and Windows 3.1 whilst others are more than happy to lead with the latest (and yes, of course, a lot of organisations sit in between). The point is that you need to cater for both with the leaders helping to mature the new products that the followers later upgrade to. So whilst I accept Bill had a point, I don’t accept it fully.

So back to my point about the next operating system. I guess some would argue, that Microsoft breaking compatibility, is in itself, a momentous decision (if they do make it!). However, it won’t be that dramatic, since either Midori will run in a VM under windows or windows rill run under a Midori VM; or both concurrently under VM. So not really as momentous as we might think.

So what does a windows operating system - with brains - look like? Well here is just a taster (perhaps you can add some of your own)...
  • It should be fully integrated to the cloud with security implemented as standard.
  • Data/Apps stored online with backups to the pc/laptop rather than the other way round.
  • Solutions – not simply software – should be delivered jointly through install and services adding greater value.
  • Removal of data silo’s through xml standards and online data hubs.
  • Improved meta-data (as well as standards/hubs) to aid search.
  • Not having to rebuild your PC/Laptop every 6-12 months to restore performance.
  • Application installs that do not pollute the Operating System: integration rather than invasion.
  • Ability to restore your environment online to any laptop/pc.
  • Software that adds to the whole rather than simply a point solution (this requires the Operating System to have the right architecture).
  • An Operating System capable (really capable) of self repair and that can diagnose (and fix) automatically and not come up with dumb suggestions like "the cable isn’t plugged in" when you are trying to connect via wifi.
  • An Operating System that supports a degree of artificial intelligence which can be leveraged by applications - and I don’t mean pathetic “office assistant” type gimmicks.

If pushed, I would define the new O/S as being: Secure, fully integrated to the cloud, AI Powered, Data and user centric. e.g a long way from where we are today.

For the majority of users out there who don’t understand about firewalls, service packs, antivirus databases, backups etc (and quite frankly they don’t want to) this would Rock their World. Oh and yes, they wouldn’t go out and buy a new PC each year because they don’t know how to fix the one they have that each year gets infested, slow and unusable.

Like I said, Microsoft could deliver on this. If not I can see both Apple and Google eying up the possibilities of giving birth to this new type of computing.

Monday, 11 August 2008

The Vista Saga

There has been much noise on the arrival of Vista in our lives with deep emotion and drama. Having used Microsoft's latset Operating System for over 6 months I can relate to this emotional experience!

To me, an operating system is much like a car; it’s a means to an end. We expect it to do the business; start first time, get us to where we want to go safely and quickly, and without breaking down etc. We don’t celebrate that it achieves this, but get very emotional when it fails, as we rely on it, day in day out, to get us where we want to go.

However, emotions aside, it’s time to take a dispassionate view of the Vista Saga. I’m not one who views Vista as a great product marred by poor perceptions (as Microsoft would suggest) or that Vista has transitioned overnight from a Skoda to a Rolls Royce with the arrival of Service Pack 1. But nor do I believe Microsoft was invaded by gremlins that had too much food after midnight.

What I do believe is that Microsoft are finding it harder and harder to build on top of windows. Vista, of course, is not a single operating system, but just one more incarnation of NT which had to inherit legacy windows which itself was built on DOS (and with many bits, 16, 32 and 64). It has also had to cope with many files systems from FAT to FAT32, NTFS (and until it was jettisoned from the plans, WinFS). It has also had to cope with the myriad of configuration architectures, from .ini to .reg to metabase to .xml. The list is not exhaustive but you get the drift.

The Microsoft Windows dynasty, whilst hugely successful, has got fatter and fatter and is now not just clinically obese, but morbidly so. This overweight geriatric, whilst sporting beautiful clothes, is about to croak.



Vista stuggling to delete a 443 byte shortcut in under a minute

Sorry, I said I’d stay away from emotions.

Microsoft’s mantra of compatibility has lead to windows inheriting everything from the past. This has resulted in the bloating of windows and critically, 3 increasingly impossible missions: Performance, Quality & Security.

Windows development and testing is constrained by the many "personalities" that exist within it and the many compromises that Microsoft have had to make to ensure compatibility.

Trying to ensure performance, quality and security whilst not impacting on compatibility must be like trying to tap dance through a mine field. And of course testing all the different components, personalities, configurations, files systems is a gargantuan undertaking that in reality could never be completed fully.

So the real problem isn’t the developers or testers but the impossible mission that Microsoft set itself in the name of backward compatibility. Fortunately it looks like Microsoft have an alternative plan to develop a compatibility free, fat free replacement called MIDORI.

The only question is whether Microsoft will try and put windows on an Atkins diet to extend its life or accelerate Midori to enter in a new dawn.

Whatever they do, I just hope it does the business.

Wednesday, 6 August 2008

Product Development Balanced Scorecard

The biggest challenge for anyone responsible for software product development in an ISV is getting the right functionality developed at the right cost in the right timeframe.

In a later post I may blog on the blunt tools of “de-scope or de-lay” to manage releases, but for now I'll focus on the functionality side.

This is always a hot topic as there is never enough time to do everything and you can easily be pulled from pillar to post from almost every area of the business and externally (from marketing to presales, support to projects, customers to prospects).

It’s almost impossible to please everybody particularly with a single release, but here is one way to almost get there.... The Product Development Balanced Scorecard. I developed this specifically to address the area of product management and in an attempt to keep as many stakeholders happy as possible.

The concept is based on the Balanced Scorecard developed by Dr Robert Kaplan and Dr David Norton as a business performance measurement framework. The key is achieving balance across the 4 quadrants.

I have categorised functionality based on its key benefit to the business and also aligned to the stakeholders/end users. All functionality should fit into one of the quadrants below. Some functionality can sometimes fit into both. In this case you would allocate it to all those relevant.

Q1 - MARKET:
Functionality which is entirely new (rather than an enhancement) and/or targeted at a new market (could be geographical, vertical, horizontal or commercial) would come under this quadrant along with Market Trends/forces (e.g. Technology, Standards) etc. Such work would often come from market analysis, often be considered strategic and an investment in future revenue.

Q2 – PRESALES
Once you are in the Market, you still need to win the business. Developing some Unique Selling Points and “Sex ‘n Sizzle” in the product can make the difference between winning and losing. Often many suppliers can deliver similar functionality and so winning is about having something that stands out from the crowd. Working closely with presales will inform you of what is needed in this quadrant. This is not to be confused with core functionality (e.g. what is expected) but about demo’ing and delivering something eXtra.

Q3 – SUPPORT
All software products need to be Implemented, Deployed and Supported. How much effort required in each of these phases is as much to do with the product design as product functionality. By careful design (and if necessary redesign and further development) you can reduce the time to implement a solution (improve revenue recognition) as well as significantly reducing support effort either by designing out potential for issues and/or fully building in diagnostic capability. The net result will be happier customers, reduced support costs, improved revenue delivery and profit.

Q4 - CUSTOMER BASE
Everybody agrees that your customer base is your life blood and treated well do all the presales and marketing you need. You need to keep them happy to retain them and reference them. Every customer will have some niggle or wish list, however minor, that if developed in (or in some cases out) via an enhancement will turn them into a raving fan. Make sure you listen to your customer base and identify these gems. As well as turning the customer into a fan and a reference you will also be able to recognise upgrade revenue as they move to that release and ensure your customers are on the latest codebase. In many cases customers won’t upgrade for any other reason (including Q1 and Technology refresh!).





Ok, so these are your quadrants. Now you need to balance them. Every Development Plan should categorise each feature against the Scorecard. You can then add up (in both cost/effort and number) the items in each quadrant to ensure it is balanced.




It is important to look, not just at the number of days, but also the number of items. For instance if you have developed 150 days of functionality for the customer base, but this represents only 1 distinct item of functionality you may have problems getting your customer base to upgrade unless you can be very sure that they all will really benefit from it (which is rare in my experience). So in the example above (and graphically below), whilst the cost is largely balanced, the number of items is out of balance.



As with all statistics, analysis and scorecards, they are a guide and there are exceptions to the rule. However, if used properly this scorecard can help keep all your stakeholders happy. Indeed it can often be used to show the stakeholders how you plan or have given them a fair slice of the development budget.

Nick