|
 Friday, February 08, 2008

Podcast for PowerShell - PowerScripting.net

In a previous post I wrote about staying up to date and how I do it. I included Blogs, Podcasts, Screencasts, etc.

This is one more Podcast to add to the list. The podcast covers all things PowerShell and I must say, its pretty good!

If there is one thing to add to your toolbelt this year, its PowerShell - even Jeffrey Snover agrees. I guess he doesn't count though ... he is one of the architects of it. :)

Apple ITunes Link For Podcast

#    Comments [0] |

The FooTheory Community

I'm very happy to announce that I was recently invited to join the the Foo Theory community. This is something I'm very excited about as I respect the other Foo-Theorians that also post here. This does not mean that Ill stop posting on my regular blog - I will be cross posting all content to my personal blog as well. You can think of that site as a mirror to this site (or vice versa) from here on out.

 

Feeds To Add

While taking a look around Foo Theory be sure to check out two of my favorite blogs on this site:

Trust me, they're two of the smartest guys out there - be sure to add them to your feed catcher.

Look forward to some great content in the near future. :)

#    Comments [0] |
 Thursday, February 07, 2008

Gleaning Clarity Through Unit Test Names

You're unit testing, right? .... right? (If not... shame on you... ) It's known that TDD/nDD types of development dramatically increase the ability to refactor with confidence, increase code readability and help define and enforce business rules (in the tests). Unit testing helps with TONS of things in development (literally the list could go on and on), but what about the unit test names? What do those do for us as developers? 

Predecessors In The Name Game

Roy Osherove has a good post on Unit Test names. Jean-Paul also has tons of good info about unit test names on his blog. I tend to follow these same guidelines. Also - awhile back on the altnet list there was a thread which spawned this post, but unfortunately I could not find it. If I do run across the post I'll augment this thread with the link.

Background

But what about when a bug report comes in? In my work I've used an alternative method so I thought I'd post it here.

  • Lets say the bug report says that "CalculatePayment" is returning the wrong value when the system is in a certain state. This kind of test was completely missed during development. Heck, it happens! Your task is to implement a solution for this bug.
  • Most likely you're going to write a unit test to assert that the solution you specified has been implemented as expected.

 

Naming Convention

When naming these unit tests I will add the word FIX_<WorkItemNumber>_<MethodName>_<StateUnderTest>_<ExpectedBehavior>() as the method name.

Example:

FIX_186_CalculatePayment_WhenRateLessThan1000_ThrowPaymentException()
{ ... }

From this test fixture name I can glean that this is a fix for bug 186, for the CalculatePayment method, for the state when a rate is less than 1000, the method should throw an exception. I've now documented my code as well as created a very readable and understandable unit test name.

I know this is not something everyone wants to do or would do, but in certain companies I've worked at this has helped with work item issue resolution and tracking.

#    Comments [0] |
 Monday, January 21, 2008

MSN Run Once Bombs...

It happens to the best of us, even the creators of the technology...

image

#    Comments [0] |
 Monday, January 14, 2008

Usability - Don't Make Me Think/Remember...

When we were first introduced to the computer it was to help us solve problems not create them. Your mother bought a computer so she could get things done quicker. She bought it because it had all these cool features that could "Remember things for you". We build software to help solve problems, to remove some of the more mundane things in life to make life simpler. Computers are supposed to make things easier, they are not supposed to take my time to answer stupid questions.

Each day goes by that I still find major issues with User Interface development of major web sites. There is SO MUCH information available for free on the Internet that major companies still make no attempt to help the user.

What am I complaining about?

When I visit a web site I want it to do things for me. Provide a service. The following sites provide services, but all fail miserably in regards to basic usability and irritating steps of action.

 


FAILING

www.ups.com, www.dhl.com, www.fedex.com, www.honeywell.com - All of these sites suffer from the same problem. They make me think. Why in the hell cant you figure out what country I'm in? There are ways to do this all over the net. Yet these companies cannot figure it out? I mean, come on... companies like Honeywell who have TONS of engineers on staff cannot figure this simple crap out?

My Beef: Don't ask me where I'm from, when you already know. That's like asking me my name when I'm wearing a name tag.

 

www.myuhc.com (doctor locator) - This thing... oh man, it makes me want to scream. The problem is ... if you log into your account, you can "locate a doctor", yet when you get prompted to enter search criteria you get asked what your plan is. HMO, PPO, PPO PLUS, BLAH BLAH BLAH, like 15 choices. They all look the same to me. That means I have to pull out my wallet each time, find my card, search the small print just so I can answer this question. BUT WAIT.... I LOGGED IN, DID'NT I??!?! That means, the web site should already know what plan I'm part of.

My Beef: Don't ask me what my plan is if you already know. Again, its like asking me my name when I'm wearing a name tag.

 


SUCCEDING

Outlook Web Mail, Gmail - These apps have it down. When I type in an email address and send an email to a contact, these applications save it for next time. The next time I attempt to send an email and start typing a few letters the app helps me find the person I'm looking for. Either by first name, last name or email address.

 

Google.com/Live.com/ask.com - All of these provide great suggestion techniques (such as explained below). Google does really well in this area. Tim Ferriss said that while in Germany (or somewhere Europe) he typed Google.com and got Google.de (Germany's Google). At the top of the site it had a small icon that said something to the nature of "Looking for the US Site? Click here." So it helped the 95% case of actual German users, but maybe the other 5% actually wanted the US Google (note: the %'s are just made up, but you get what I'm saying).

 

Pandora - The music discovery channel. If you like "Wu Tang Clan" and you would like to find artists that are similar to them Pandoras Music Genome Project will help. It helps by finding music similar to your tastes through over 400 attributes. But the real nice thing about the interface is how easy to use it is. If I typed in "Wyclef Jon" the system will return a question to the user "Did you mean 'Wyclef Jean'". Well of course I did, but maybe my friend always said "Wyclef Jon" so I thought it was "Jon". But hey, the user interface helped me find what I wanted to find. It didn't make me think. If helped me find what I wanted to find through assisting me with my spelling.

 


TIPS TO IMPROVE YOUR SITES USABILITY

- Don't make the user re-enter information you already have. (name, address, etc, - basic info)

- Use the Auto-Complete type of control as much as possible. - This helps users when typing in free text. If you're asking them to type in an address into a geographical website, try to assist them with possible solutions. Not everyone can spell Minneapolis correctly the first time. :)

- If you are an international site, FIGURE OUT WHAT COUNTRY THE USER IS FROM and give them that country.

- Catch all the errors. I MEAN ALL OF THEM. I should never see a MySQL Error, a YSOD or anything like that. Give me something telling me that something went wrong and I should check back later.

 

In the end, its all about user experience. Make it easy.

 

The only problem is ... is very hard to make something simple. :)

#    Comments [2] |