Tuesday, 5 March 2013

Achieve the Results You Plan For



Fear of Waste



In this economy, every dollar counts. Guilt or embarrassment sets in from spending on something that doesn't work or collects dust on the shelf from lack of use. by Gary Horsman



Pretotyping

At Google we say ‘Data beats opinion’ and ‘Say it with numbers’. Pretotyping does this: it moves you from the world of ideas to the world of data. The discussion between the innovators and investors is no longer about opinion. You don’t just think your product is going to be great; you have data to back you up. That changes the conversation. I like to say: ‘Innovate like a start-up; go to market like a grown up.’ By Alberto Savoia, founder of Pretotype Labs and former Google innovation executive.



Learning, how important is it?



“The need for learning never ends, so your desire to do so should always outweigh your desire to be right”. by KevinDaum.com



The above are quotes from articles I’ve recently read which have all resulted in the same afterthoughts relating them to the BI industry I work in. I think I can best sum this up by saying for me it raised the importance for setting expectations or to elaborate, you achieve the results you plan for, which coincidently is taken from our customer engagement methodology, our marketing Manager will be pleased!



So to explain and to add more context, what has setting expectations and planning got to do with BI reporting or analytics?



Ever known a company or person to buy into the idea that a piece of software will change their fortunes without understanding whether the potential value delivered back outweighs the cost of buying it? I raise my hand! And it’s not that we’re stupid, but having been in the SME marketplace for the majority of my customer interactions I have witnessed a lot of software purchases being based upon a belief, a desire, a good sales job! And as a result when it gets reviewed and to justify if it’s not being used or not worked, nine times out of ten you will hear amongst the feedback some reference to requirements or spec not being delivered. Basically, what has been delivered is different from what they thought would be delivered?



I’ve sat in the same room, listened to the same conversation about the same project yet on the debrief you still have a totally different understanding of what the customer wants to the fellow project team members.






So how do you limit this risk? Obvious, you say, you plan and document things. And although it does sound obvious traditionally only a few companies, usually the corporates were the only engagements where a Proof of Concept, Business Case, Investment Justification Study were undertaken before a decision would be made on a new reporting platform. Typically, this would be a paid exercise that either an external company or experienced internal specialist would conduct.



I have seen over the past 3-5 years its not only corporates who are raising business cases to justify investment. Of course the financial climate has played a part in this however the concern I have in what I have seen in the SME marketplace is that with financial constraints many are conducted by internal personnel who really don’t have the experience let alone the dedicated time to deliver the plan and keep on top of the documentation required. But surely this can’t be the only reason? Are there not companies out there offering this service for a reasonable fee! I’m pretty sure last time I looked most, if not all software products (even open source!) have partners that will offer to charge you to tell you what you already know…  And herein lies the issue… Many SME Business Leaders are still conditioned to react to consulting fees with this very thought pattern.



Apart from being in a better position professionally is it not better to pay for or hire a third party to conduct the analysis who can also dedicate the necessary time for the job and inevitably get things done a lot quicker. Doesn’t it also give them liability if the analysis proves mistaken and gives a much better chance of receiving an honest, complete assessment? 

Pay a company to scope it. A business case that has liability but also reputation at stake is a professional and lowest risYou k option no matter what I or the emotional part of your brain is telling you... 


Whether its learning to trust data to support your business decisions or conquering the fear of getting it wrong. Through planning, you will set realistic expectations and in doing so improve the relationship with both your colleagues and your customers and you never know maybe you’ll achieve the results you plan for… 

Written by:  Ben Hedger, Senior Business Development Consultant, DSCallards



Related articles:




Automated Testing with TestComplete: Checking whether System under Test is running on a 32 or 64-bit Operating System



When automated testing under different versions of operating systems, sometimes you want to perform different actions depending on whether you are running on a 32 or 64-bit operating system.

For example, a file may be installed in one directory on a 32-bit system and a different directory on a 64-bit system (as is commonly the case in Microsoft Windows 7 with the “Program Files (x86)” and “Program Files” directories), and part of your testing may be to test that an installer has correctly deployed certain files into the correct directory.

With the TestComplete automated testing software, you can run a JScript routine using the in-built ‘Sys.OSInfo’ property to perform different actions depending on the operating system.

To give an example of how this might be used, the basic JScript function below checks whether the operating system is 32 or 64-bit, obtain a different directory depending on the result and posts the results to the test log:



Of course, this can be extended to be as complex as you like, but it does demonstrate the possibility of what can be achieved with this useful in-built system property.

Written bySam Massey, Senior QA and Support Analyst, DSCallards
Visit:  www.dscallards.com 

Unit Testing Internal Methods

I’ll come straight out with it, I don’t like unit tests residing within the dll that they are testing, I know that some people quite like this approach and it could be argued that it allows the clients to verify that the unit tests are indeed in place and working correctly.

http://proudsalopian.files.wordpress.com/2013/02/dotcover-results.png

For me though they are not a part of the production code and just add unnecessary bloat to it, this is allied to the fact that sometimes test rely on the infrastructure and there may also be a set amount of database interaction which for a live client is a big no no!

Instead I prefer all of my unit tests to be in a single or suite of test projects that are invoked sometime during the build process to verify the quality of the code. Recently we have been retroactively fitting some unit-testing to new functionality within a legacy project (which means that we do not of course have dependancy injection!) and I came up against an issue that we have come up against before but have always cludged our way around. The issue is one of scope, I like to test the validation routines for the business layer in isolation but we never ordinarily make our business layer validation methods public instead relying on the main ‘Update’ method to perform the validation prior to save. I like to call the validation methods in isolation because it means that the tests are more performant which in turn means you can be more thorough and reap the rewards of a more stable and tested application. Ideally I like to make the validation methods private or protected but for the sake of unit testing I will compromise and make them internal, this way they can be invoked from anywhere within the business layer but NOT from outside. OK, now scan back to my first paragraph and you can see where my problem lies… I don’t like unit tests in the dll itself.

Luckily .NET has a solution to this problem in that internal methods may be made visible to named external libraries; thus our unit testing library can invoke the required validation methods without exposing the same methods in the public API. However, all of the examples I have seen for implementing this are very poorly documented and so I thought as an aide memoire for myself, and as a service to the internet at large I would share my experiences.

To find out more, visit Conrad's full blog here.

Written by Conrad Rowlands, Senior Developer, DSCallards
Visit:  www.dscallards.com

Legacy Code and the Missing LINQ

linkncircleWhilst porting a legacy Visual Basic 6 screen to .NET (I know, it still happens!) I came across a horrendously complex piece of code used to refresh a list of people (whose details may or may not have been verified by the user) with new data possibly. In essence quite a simple job, if the person had already been verified then we need to mark them as such after the refresh SO LONG AS their data has not changed in the meantime; as with all things there are of course more complexities but this is in a nutshell the problem which in terms of VB6 code costed large amounts of comparison coding and collections of state information, It is also true that we were building on a live system and so you inherit all the goodness and badness that you’ve coded thus far.

Now however things are different, we have the wonderful world of .NET and the awesome world of LINQ, a technology that in my experience kills of all that ‘coding driftwood’ that accrues over time and development cycles. So how hard could it be?

To find out, click here.

Written by Conrad Rowlands, Senior Developer, DSCallards.
Visit:  www.dscallards.com