Showing posts with label technology. Show all posts
Showing posts with label technology. Show all posts

Tuesday, February 24, 2009

Developer personality dynamics

A while back, the members of my team participated in an Insights Discovery process session. Insights Discovery consists of a personality questionnaire completed by each team member followed by an analysis and group session to discuss the meaning of the results to facilitate improved communication and synergy between team members.

We found the results very enlightening and I've noticed improvements in team interactions since we went through the process. I'd like to do it again to include team members who have joined us since.

Insights Discovery assigns each personality type to a place on a color wheel. We found that most team members had mostly blue personalities, which are common amongst developers (introspective thinkers), although we had a couple of greens (supporters) and one red (directors).

Blue vs. red can be a challenging dynamic and one recent interaction I witnessed brought me back to our analysis. Here's how it played out (with ficitious names):

Blue Ben was pulled into a data warehousing project after it had become late and over budget. Although Ben had some ideas for improvement, he was met with resistance since those already on the project were already personally heavily invested in the current design. Ben continued to work on the project which, while continuing to come closer to completion, continued to go later and further over budget.

Eventually, Red Rudy was brought in to help complete the project. After just a day or so of orienting himself to the current solution, Rudy approached Ben, saying, "Hey, there are a lot of things with this that really suck." While Ben knew Rudy was overreacting, he also knew some of what Rudy was saying was true. However, Ben suddenly felt defensive; his work was seemingly being called into question. But most of it wasn't even his decisions! He was now in a position where he felt compelled to defend work that wasn't even his!

By the next week, Rudy had largely redesigned the solution. Well, it wasn't really redesigned all that much, but since it was Rudy's work, he could now distance himself from the previous solution. Unfortunately, this further alienated Ben, who now felt "stuck" with "his" inferior solution (that he didn't really even want in the first place) while Rudy ran off with the new, improved goods.

A week later, close to the end of the project, Green Gary came in to help with some final tasks. He took a look at Ben's solution and then approached him, saying, "Hey, I noticed a few things that might be worth looking at for improvement. Maybe you already figured them out, but how would you feel about discussing them?" Ben was more than willing. He finally felt like he could share some of his frustrations; Gary helped Ben confirm his own ideas while enabling them both to feel more ownership over the project rather than defensive about it.

Soon, a new phase of the project began, and Rudy's solution was used as the starting point. Ben had a lot to offer but struggled to feel any connection to the project--this no longer felt like the thing he had invested so much in.

What this scenario helped illustrate is that the outcomes, at least in terms of the attitudes and happiness of the developers, can be affected greatly by how the developers are approached. Beware of forcing developers to defend things they don't want to defend!

Tuesday, February 17, 2009

How much is your email worth?

A coworker recently sent me a link for a company's website promoting a cool concept for dealing with email overload. Seriosity's Attent borrows some ideas from the online role playing gaming world and provides a way to attach virtual currency to emails you send and receive.

When you send an email, you attach an amount of virtual currency, called "Serios". You attach the number of Serios you think the email is "worth", meaning the amount required to get your email read. The recipient (assuming they are also an Attent user) sees the number of Serios you attached and emails with the most float to the top of the inbox.

You have a limited amount of Serios to spend, so you have to choose wisely. The idea is that having to attach a limited resource to your emails forces you think a little more about how valuable your communications really are. You get more Serios when people send you emails with them attached and you also get an allowance of 100 new Serios each week that you send at least one.

There are some cool features such as visibility to recipients' Serio balance and history so you can get an idea of how many Serios you'll need to spend to get someone's attention.

I think this is an intriguing and promising concept. The company has plans to expand this to other forms of communication, and I think it would work even better when instant messaging, phone calls, and even support requests are included in the Serios financial world. It would be great as an incentive for participating in collaboration sites.

The biggest downside to Attent is that it requires a "critical mass" of connected users to make it useful. So, I encourage everyone who reads this to try it out!

Monday, July 28, 2008

Why I don't like project code names

Lately we've been in the habit of assigning code names to projects my team is working on. We have "Sterling", "Caprice", "Janus", etc. The list goes on to include "Bentley", "Moonstrike", "Delgado", "Kodiak", "Donnybrook", and others.

This is similar to how Microsoft typically uses code names for products before they have chosen an "official" release name. However, we're doing it even in cases where the products already have a name!

Here's why I don't like the code names:

  1. They confuse users. In discussions with users and stakeholders, they often don't understand why we keep calling the product "Sterling" rather than "EscrowManagement" or "EMS", for example.
  2. They make it hard for developers to find things. In SourceSafe, OnTime, and SharePoint, I see a proliferation of strange words. How am I to know to look for "Caprice" when I want to find the source code for the Standards Management System?
  3. They make it hard for DBAs to associate databases to projects. In several cases, we've actually named the database after the code name in test and production. How are the DBAs to know what application the Janus database goes with? Resolving this and item 2 above require the use of a lookup step to map code names to their project.
  4. They are geeky. These sorts of things appeal more to developers than to users or executives and create alienation.
  5. They lead to inconsistencies that have to later be found and corrected. It is tempting to use code names on screen and report output, but in the final release, that's not going to fly, so someone will be busy going through all the source code to make sure all those references use the real product name before final release.
  6. They serve no real purpose. Code names add a level of abstraction, and in most cases that just makes things harder to manage and understand. In the cases where a name is needed for a project before it has an "official" one, just do your best to pick something that is likely to be an acceptable final name. It will be more meaningful than a code name.
  7. They create separations in the chain of knowledge about a project. Typically, we assign a different code name to each new version of a project. The result is that when you want to search for information across the lifespan of all versions of the product, you have to search an array of code names.

I would be happy to see project code names go away. If an official name hasn't been chosen, do your best to pick something meaningful. And if you must use a code name, rename everything to the real name once it's chosen.

Collaboration site incentives for contribution

At work we use Microsoft Office SharePoint Server 2007 (MOSS) for team and project collaboration. After several months, it now contains a wealth of useful information in our knowledge base wiki, various discussion groups, and blogs. We have the ongoing challenge, though, of getting people to participate. One of the hardest problems to solve is how to get people to take time after solving a problem or coming across a tip to write it in the knowledge base or as a tip of the day.

I think one intriguing solution worth trying is to provide incentives in the form of quality voting. Many web sites that accept user contributions use such a system: users can vote either thumbs up or thumbs down or, in some cases, on a numeric scale, how useful they think the review or article is. The poster of the article then accumulates points based on the number of positive votes their contributions receive.

We could do the same sort of thing by attaching voting mechanisms to discussion boards, wikis, blogs, etc. This encourages not only quantity but quality.

Then, points could be exchanged for rewards. Achieving a certain point level could also be part of employee goals. We could also reward fractional points for simply voting, to encourage reading and voting.

Unfortuntely, SharePoint 2007 doesn't include this capability. It would be a useful excercise for someone to write an extension to SharePoint to provide it. See this article for some ideas.

Sunday, July 20, 2008

How are your Google skills?

It's probably safe to call myself a Google power user. I use it all the time and it's rare I can't find an answer to a question with the right Google search (sometimes it does take a bit of work, though).

I'm closing in on my 15,000th recorded Google search.*

So, I'm going to do a few blog posts to talk about some of the cool tips & tricks you can do with Google as well as a few nifty features you may not already know about.

Today I have a little quiz to test your searching skills:

Email me a Google search phrase that will return sites about the band The The.

I'll post the best submissions in the comments to this post.

*If you have a Google account and log in whenever you do a search (or use iGoogle), Google keeps track of your search history and even fine-tunes your results based on your search history. My search count is now at 14,501. My search history starts from April 25, 2005 and apparently my first recorded search was books about ecuador. Later that day I searched on spunkball and clicked this result link.

Wednesday, June 25, 2008

Reducing email distractions

Email has the potential to be very distracting. How many times a day do you check your email? Everytime that little Outlook notification pops up about a new email coming in, don't we all immediately go read it? That's a lot of interruptions in a typical day.

As of this morning, I'm trying out a new way to process email to reduce those distractions. I'm going to check my inbox just three times a day: first thing in the morning, around noon, and at the end of the day. I hope to get that down to two checks a day eventually.

I've turned off the default Outlook notifications. I've removed the Outlook icons from the notification area in the taskbar. I set up a new rule to pop up an alert if I get an urgent email (so if you need me to respond immediately, mark it urgent).

To make sure I don't need to spend much time in my inbox, I use a system very similar to that described in Getting Things Done where I immediately process the items in my inbox. They go into one of several specially named folders I created: @Action - Now, @Action - Soon, @Someday, @Waiting; or they get deleted; or they get moved into one of my reference folders (I have one for each project). The special folders start with "@" to sort them to the top of the folder list in Outlook. By moving things into one of these folders immediately, it keeps the inbox very clean.

@Action - Now is for emails I need to act on today. @Action - Soon is for things I need to act on but at a lower priority. @Someday are things I want to read in more detail and possibly act on later. And @Waiting is for emails that I can't do anything with yet because I'm waiting on someone else.

I'm one of the few people who actually likes the Outlook Today feature in Outlook. I have it configured to show me the next 7 days of my calendar, my task list, and the message counts of my inbox and the four special folders I mentioned above.

I'll let you know how it all works out.

Defining .NET properties the easy way

Once you've done a fair amount of programing in .NET, it quickly becomes tiresome to define your custom properties in code:

private int myProperty;
public int MyProperty

{
get { return myProperty; }
set { myProperty = value; }
}

It gets to the point where you seriously consider just declaring everything as a field instead:

public int MyProperty;

But resist the temptation! There are downsides to this including difficulties with databinding and all sorts of issues if you later change your mind and want them to be properties.

So, stick with properties but make your life a little easier by using the built-in prop snippet. When you want to create a new property, just type prop and hit Tab twice and Visual Studio will insert a nice template for creating the property. You can tab through the fields in the template and easily change the type and name to what you want.

And here's the really good news: the new version of C# that comes with Visual Studio 2008 includes a feature called Automatic Properties. This allows you to define basic properties using this syntax:

public int MyProperty { get; set; }

Behind the scenes, the C# compiler translates this to (basically) the same code as if you'd used the more traditional syntax.

For more information on Automatic Properties, see this post from Bart De Smet's blog.

Storage of NULL values in SQL Server

Earlier today a couple of team members asked whether NULL values in a database take up any space. I wasn't sure of the answer so I did a little research which I decided to share here in case anyone is interested.

The quick answer is no, NULL values don't take up any additional space. However, each column does take up a certain amount of space whether or not it contains any data. Fixed datatype columns (int, float, char, etc.) take up a specific amount of space depending on the size of the datatype (int=4 bytes, smallint=2 bytes, float=4 or 8 bytes). Variable length columns (varchar, varbinary) take up a minimum of 2 bytes per column even if empty (to store the actual length pointer).

The NULL status of each column is stored in a special part of the row called the NULL bitmap that contains one bit for each column, in 8-bit chunks. So a table with 1-8 columns has a one byte (8 bit) NULL bitmap but a table with 9-16 columns has a two byte (16 bit) NULL bitmap.

If you’re interested in the detailed version, be sure to check out Inside Microsoft SQL Server 2005: The Storage Engine, which I highly recommend with the rest of the series.

The document was sent to the printer

I click the Print button in Word (or any application) and I quickly get a popup in the taskbar telling me "The document was sent to the printer."

What a surprise--I wouldn't have expected that!

That popup has to be the most annoying Windows feature. It's unbelievable that it still remains even in Vista. Of course my document was just sent to the printer--I just printed it!

A useful message would be one that told me when it was finished printing.

And (in my opinion), they don't make it easy to figure out how to turn these messages off. But I eventually tracked it down (here is the Vista version):

1) Control Panel -> Printer
2) Right click and select Server Properties...
3) Go to Advanced tab and uncheck Show information notifications for network printers.
4) Click OK and print away.

Wednesday, June 06, 2007

Tech Ed, Schmeck Ed

A couple of my work buddies are at Microsoft Tech Ed this week as they have been every year for a while now. It's been a long time since I've been to a national conference. I just don't see the value in it--the signal to noise ratio always seems so low.

There's so much valuable information available online now. Don't waste your time at big conferences--if you boil down the content, most of it is really designed to get you hyped about the upcoming products the company wants you to buy (in this case, Microsoft). That tends to not be useful; it just keeps the fast train of technology speeding along. Slow down! You find out about those upcoming products once they really become relevant.

If you insist on partaking of the conference's content, do it online. Many conferences (especially Tech Ed) now offer videos, presentation slides, and blogs for non-attendees on the web. It's a lot easier to find the meat of a seminar by looking through the notes or fast-forwarding through the video than sitting trapped in a full day of sessions.

Wednesday, May 30, 2007

Google Gears

Relating to my previous post about a possible Google OS, I just did a quick web search and found that today Google announced Google Gears, a new open source API browser extension to enable offline storage and retrieval for web apps. That's one of the puzzle pieces I mentioned, so I think that increases the chances a Google OS is in the works.

How's that for timing?

Will we see a Google OS?

I’ve had this hunch for a while that Google will eventually perform an end run around Microsoft and suddenly release a personal computer operating system of their own to compete with Windows. Compared to Windows, it would be very simplified and small, and would be centered around web applications. I would welcome such a product.

It’s interesting to speculate how a Google OS would work. It would obviously rely on access to the web and would presumably use Google apps like gmail, Google Docs & Sheets, and Picasa. I speculate Google would use either a brand new written-from-the-ground-up operating system or a modified variant of Linux. It would boot very quickly right into a web browser. The web browser would be like the “desktop” on Windows machines. All Google PCs would come with network access built-in.

The big question is whether the device would provide an offline mode. Especially for portable models, it seems like users might want to access their documents and emails even when they’re not connected to the Internet. But eliminating local caching would greatly simplify things and would even eliminate the need for a hard drive (the minimal local storage needed could be served with flash memory).

Here’s the really interesting part: the operating system would be free. Google would provide the OS without charge because it will be supported by advertising. While you’re using your applications, non-obtrusive ads will be displayed that are relevant to what you’re doing. The hardware would be very inexpensive. Because the OS is lightweight and most of the processing occurs on Internet servers, a minimal amount of processing power and memory is required. The typical low-end personal computer being sold today would be more than enough power. It could give back a purpose to all those older computers that today are feeling sluggish under Windows.

Sunday, May 06, 2007

Windows XP as the last great OS from Microsoft

There's been plenty of negative sentiment about Windows Vista on the web, not to mention from people I come into contact with from day to day. I installed a beta version and found it unusable. I later installed the final version on my laptop soon after it was released. That lasted a few weeks, before I uninstalled it in frustration and went back to XP. I was strongly pressured into installing it at work and have been using it there for a couple of months now.

But I don't like it. I have tried to keep an open mind about Vista. But I am just not warming up to it.

There are plenty of compatibility issues. Vista supporters around me quickly remind me how it's still early and that those problems will be solved soon enough. OK, that's probably true, but I don't remember it ever being this bad with previous versions of the OS. I get the sense that a lot of vendors just don't believe in Vista, at least not yet. Or is it that Microsoft has forgotten how important the real user experience is in the end? When a user's device doesn't work, he doesn't care that it's really the device manufacturer's fault; to him, Vista is broken. And I basically agree.

But the bigger problem for me is that I just don't see Vista as giving me anything really useful. XP has been working wonderfully for me. What would I want to give that up? What compelling features does Vista provide that make me feel like I have to "upgrade"? I haven't found them yet.

And I'm left wondering if we'll ever see another operating system from Microsoft as good as XP.

Microsoft seems to be in decline. There are signs they are collapsing from the weight of their own bureaucracy. It's become increasingly difficult for them to release anything of great quality, let alone doing it on time. Many of their products no longer work together right out of the gate. And there's just so much bloat.

I predict the next great operating system will come from some other company. I think there's an opportunity here for someone to come out with a lightweight, superfast, rock-solid, Windows-compatible operating system that just does what we want. Just the basics. Let the developer community build add-ons. Sounds like a job for Google. Are they working on an operating system?

In the meantime, I find myself continuing to resist Vista. I do not intend to install it just because it's there. Why should I let Microsoft pressure me into "upgrading" when I have something now that works perfectly fine?