Joel Spolsky – Design and Decisions

Joel ends up #4 on my list of Business of Software speakers.  Here is my take on his talk.

Vista-UAC-Prompt Have you ever wondered why UAC in Windows Vista/7 annoys you so much?  Joel tried to delve into this topic and uncover why users hate this kind of behavior. 

To Joel, it really boils down to one thing, Design is the art of making decisions. Good design means the decisions were right, whereas bad design means the opposite.  It is obvious that the UAC design was for security, not for users.  In UI design, we need to be making decisions that help users accomplish their goal. Bad decisions interrupt users and cause them to hate your application.

Even though it sounds simple, most development companies think more about their product’s features than about how users use them.  User’s don’t want a product, they want a solution to some problem!  They might need features to accomplish this, but those features need to align with their goal, and not impede it.

This doesn’t mean we should sacrifice the number of features for simplicity, we should just make sure the features we implement help the users and not impede them. If we can do this, we have created an elegant application.

My favorite example is Amazon’s 1-click purchase button. Making 1-click actually work wasn’t easy. It took a lot of development work to handle all the cases, but in the end, it made accomplishing the user’s goal (buying something) easier than any other ecommerce site. No impedance. Don’t let the amount of work stop you from making the right decision.  Creating an elegant application isn’t easy, but it is possible if you want to make it happen.

Lastly, think really hard about using modal dialogs.

DSC00326 (800x600)

Ryan Carson – How to make your company remarkable?

DSC00313Ryan is #5 on my Business of Software top five speakers, and the first to be reviewed.

Ryan reminds me of a gentle Jason Fried. His outlook on life and software is very similar to Fried’s, except he throws in words like love and treats his customers like gods. Ryan had a lot of great things to say, some quite obvious but good hear. Here are a few highlights from my perspective.

Be a passionate leader. Obvious right? Yes but Ryan backed it up with a couple great examples of things passionate leaders do. Be opinionated and blog about it. Opinions mean you believe in something, and that will be seen by your employees. Taking those opinions and blogging about them creates thought leadership for your team and the outside world.

Love your customers. I think we do a pretty good job at Rackspace and Carson nailed two key attitudes that help make this happen. Never speak disrespectfully of a customer. How many times have you heard a developer say something like That customer asked for what? That’s stupid. While their idea may not align with your direction, it is a real issue for a customer. Understanding that helps you understand your customers better. Also, use your product everyday. Most developers have no idea how much of a pain their app is to use. Using it everyday helps break this wall down. Make a developer go through the signup process or create a new account have them set it up. It will show some interesting insights.

Treat your team like royalty. This is the point of the talk where Carson and Joel held hands for a little bit (that or I need new glasses). It is obvious, but it also isn’t easy. It is good to be reminded that everything begins with your employees. Having great employees is one of the key parts to having a great company.

Invest in good design. and Be more creative than you need to be were two key points that go really well together. This is that extra 10% that doesn’t need to be done, but get’s all the attention. Do things that are a little crazy, a little out there, a little more beautiful than it needs to be, and get great publicity for them. At Carsonified, they take a week and just do something creative every now and again (I forget how often he said). All too often, team’s get stuck in the trenches and don’t get a chance to do something creative. Give them that chance, you will be amazed.

Other key points were Give back to your community, Build kick ass products, and Get good at publicity all of which I agree with.

It is all really summed up by Don’t regret not doing what you had to do to make your company remarkable. Hopefully Neil will be able to post Ryan’s talk soon so that you all can view it.
DSC00314DSC00315

Business of Software Top 5 #BoS2009

I just got back from the Business of Software conference in San Francisco. It was a great time and I wanted to share it with the world (or those few poor souls that read my blog regularly). There were a ton of great speakers, but I wanted to highlight who I thought were the top five. Over the next few days, I will be posting about a specific speaker and why I liked them, so stay tuned.

DSC00299DSC00300

Restoring Transaction Logs in Powershell

Using the SQL Server UI to restore a bunch of transaction logs is the most painful thing I have every done. I created this script, and then tested restoring around 10,000 transaction logs and burnt through them pretty fast.

Create the script restore-transactionLog.ps1 with the following code. (I am using integrated auth and running the script on localhost. It wouldn’t be too hard to use different connection strings in the code if you wanted)

param
(
    [string] $dbName
)
 
process {
 
    if(test-path $_){
        $sql = "RESTORE LOG [$dbName] FROM  DISK = N'$($_.fullName)' 
                WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10"
 
        write-verbose $sql
 
        sqlcmd  -Q "$sql" -E
 
    }else{
        write-error "Can't find file $_"
    }
}

Then you can use it pretty easily in the following scenario.

gci c:\MyTransactionLogDir | 
    sort LastWriteTime | 
    .\restore-transactionLog.ps1 "myDb"