Monday, May 23, 2011

Design Sense : Making Sense of Error Messages

No matter, how well we design our Software Systems, exceptions are bound to happen. Some times, due to our internal faults arising from bad or incomplete design like not handling errors or certain uncommon conditions. And some times, due to events that are totally out of our control. What makes our application exceptional is how we handle those exceptions and keep the conversations going. 

Here is an example of an Error Message on Microsoft Xbox that needs serious re-work from Microsoft.  If you are wondering it must be a mistake as it doesn’t even look like an error message allow me to explain.


Customers need XBOX Live Gold level subscription to access Netflix.  I did have a Gold Subscription and I have been happily watching movies streamed from Netflix for a long time. Now and then, XBOX stops the movie and comes to this particular screen after a couple of beeps asking me to “Upgrade to Gold or Sign in”  doesn’t make any sense at all.

After a couple of instances, I figured out that this screen pops up when connection to the internet is lost or down. I confirmed it by shutting down my wireless router a couple of times.

Error messages, particularly those that are displayed to end customers, must be sensible, contextual and make sense. If possible, prompt users to take alternate actions that may provide a temporary work around.  In this particular case, if internet connection is lost, it should just say that it can’t connect to internet rather than I don’t have the right subscription.  Can also make suggestions to end users on how they can make sure access to Internet is working properly.  If internet connectivity is just fine but Netflix servers are down (like it happened last month), it can nicely share the same that it can not contact Netflix servers, but connectivity is just fine. 

Take a look at how you are handling exceptions like this and review whether those error messages are making sense, keeping your customers informed and most importantly keep the conversations going

Saturday, May 21, 2011

PDC Keynote : The Opportunity of Win32 (1992)

If  you have some time to kill this weekend, watch the PDC Keynote from 1991 by Bill Gates talking about the huge opportunity for Software Development community with Win32.

You can in fact watch all PDC Keynotes from the PDC archives at Channel 9. Its nice to walk down the memory lane and see how the current Microsoft stack evolved from early 90s to what we have today.

Friday, May 13, 2011

AppHarbor : Developing .NET Apps Could Be Fun Again

How much time it will take for you to type “git push appharbor master” on Git Bash console?  Let us say, 5 seconds. Great, that’s all it takes to bring your well baked code to your waiting customers, fully tested. Push your code to AppHarbor and the rest is magic (well, almost). The Application is built, tested, deployed and live in a few moments. Wow !

Git + CI +  Azure = App Harbor, an awesome, unbelievable .NET Platform on the cloud.


I wish AppHarbor is 10 years old. Just stumbled upon AppHarbor yesterday while on Twitter and within a few minutes (say 5 at the most), have the first Hello World kind of ASP.NET MVC app created and deployed with membership database fully configured.

More as we explore further.

Sunday, May 8, 2011

Hire Smart As Not All Software Developers Are Equal

I stumbled upon an interesting article on Techcrunch titled “Why the new guy can’t code” and couldn’t resist but shout the hell out ‘yahooooo’, for this was exactly the view, experience and ideas we had that led to creating one of our most differentiating services a couple of years back.

About a couple of years ago, we created this banner to announce about a service we started called '’SmartHire”, a new and quite unique way to evaluate prospective Contractors, Consultants or Employees. 

Though, some of us would like to tout it as a new and unique way, for me it was just common sense all the way. What we have decided to do as part of this process is that we actually sit with prospective candidates about 3-4 hours and watch them actually implement a piece of functionality, in real time.

Once candidates arrive for what many assume an in-person or face to face Interview, Candidates will be given a piece of paper that describes an idea for a  new application or concept of a piece of functionality to be added to an existing application.  They will be given a computer with all necessary software pre-installed and candidates are even allowed to phone a friend or colleague to get ideas or just Google for solutions.  And they are allowed to ask questions any time during the session.

One of us will sit through the session and observe how the Candidate is approaching the problem and ask questions through out. We ask questions literally on every aspect.  On technology, choices they make, alternatives they pick, the flow they follow, the way they code, the whole nine yards of the exercise.  On everything they do and they don’t.

If a candidate searches on Google for an idea or a solution to the problem in hand, we are very much interested on what exactly he/she searches for, how do they refine the search, where will they start their search and once they find out an idea or completely working solution, what they will do.

Similarly, if they chooses to call a friend or colleague, how do they explain the problem, how do they listen, how do they pickup the guidelines or ideas the other person on the line throws at them and lot more interestingly what will be the first thing they do after the phone call.

This is quite remarkable in many ways. And the results are totally mind blowing in many cases.  It totally reveals the genuine skill set (both technical and non-technical aptitude) and definitely provide a more realistic, true and thorough feedback on a candidate’s capabilities than a 4 hour typical interview could provide. 

Some software developers sound so good on paper, but their aptitude in problem solving sucks. And some developers that may have been out rightly rejected if we had just followed traditional screening, proved to the right choices to be on board and beat the first group 9 out of 10 times.

Given how it works, it is the least preferred choice for most recruitment firms and agencies. First of all, it needs lot of effort,  it won’t scale that easily and most importantly it demands that their recruiters are actually practitioners of the very technology. Not just anybody.

For us, this is one of the BEST methods that really worked and so we introduced this service to our customers. It did limit our scope in terms of offerings (areas of expertise), but this is what we believe the BEST for our customers.

What do you think? How did you hire your last Consultant, contractor or an employee?  Do you think it is worth time and effort investing in a session like this ?

If you are looking for a Developer to work on Microsoft Technologies, we can definitely help to screen them through our ‘SmartHire’. Give us a call or send us a message for more details.