# Friday, January 06, 2012

If the Bard had written in C#:

public class Self 
{ 
	public bool ToSelf() 
	{ 
		return true; 
	} 
}
posted on Friday, January 06, 2012 8:59:19 AM (Mountain Standard Time, UTC-07:00)  #    Comments [0]
# Wednesday, December 28, 2011

A friend recently shared a Forbes article with me entitled Top Ten Reasons Why Large Companies Fail to Keep Their Best Talent which I found informative and useful in understanding my own recent thoughts on this topic. Rather than review each of those reasons here, I encourage you to read the original. Instead I would like to share with you the flip side of that coin based on my own recent experiences.

Attracting Top Talent
Before you can work on keeping your top talent, you have to find them and convince them to join your team. Here are five things you should be doing to attract top talent:

  1. Choose a competent and effective recruiter. This can make all the difference. Don’t just hire an agency and let them blast a job description to every Tom, Dick and Mary of the tech world. Know specifically who is representing your company. Make sure that she knows how to find and filter top talent for you. Ensure that she has the communication and people skills required to manage the phone and in-person interviews and coordinate with the hiring manager to make his job even easier rather than just dumping a pile of resumes on a desk and waiting to get paid.
  2. Do more than one phone screen. Give at least two top team members the chance to phone screen the candidate. Make sure they are prepared and understand what they should ask. Then have one or two managers or potential peers conduct a phone screen as well. Never rely on the resume alone to decide whether you will do a face to face interview.
  3. Have the candidate interview with more than just the hiring manager. Have potential peers and even potential subordinates interview the candidate as well. And when possible, have a peer or supervisor of the hiring manager conduct an interview. Meet with and collect the thoughts and opinions of every interviewer and carefully consider their input.
  4. Assure that every interviewer is positive and upbeat about your company but equally honest and transparent about the challenges and opportunities within the company which the candidate may be able to help resolve or improve. Don’t paint a dismal picture but don’t put a shine on a dull spot. Any intelligent candidate who gets different stories from interviewers will think twice before accepting an offer. Transparency and honesty from the bottom to the top of the company will be a refreshing and attractive quality. And don’t worry about scaring off a candidate who is afraid of a blemish. You don’t want to hire someone who wants to work for a perfect company with no opportunities to contribute to the solutions of the real problems that every company has.
  5. Follow up and answer a candidates questions after the interview process is complete and make a decision as quickly as possible. If you will have some delays before you can make a decision, keep the lines of communication open and keep the candidate up to date. This kind of follow through is often overlooked and companies often take for granted that the candidate will sit still and wait. They won’t. To keep a fish on a hook, as they say, you have to work the line. Let it go slack, and you’ll lose.

Keeping Top Talent
Once you have hired a key employee, make an opposites list from the Forbes article and work toward eliminating the reasons that top talent walks out the door. Of the ten, here are my top picks recast as things you should do to keep top talent on your team:

  1. Give your employees an opportunity to have a voice in key policy and process decisions. Listen to your people with an open mind, prepared to change your mind if you have overlooked something. Your top talent will often have better ideas than you may think.
  2. Take the time to provide regular feedback to your employees. Annual reviews are great, but follow up with periodic reviews of goals, professional development, projects and opportunities for improvement. And always find a way to share positive feedback. When you acknowledge achievements and performance, publicly and privately, you’ll get even more of the same.
  3. Make sure that your team members know that you care about their professional career development. The small amount of time you invest in helping your team map their future success will yield returns in happy, dedicated employees much greater even than the recent gains in the gold market.
  4. Steer a steady ship that can make tactical adjustments in course but is on a solid strategic heading. If you run into stormy waters, keep faith with your employees and stay on course. If you need to make strategic course changes, involve your top talent in that decision making. Getting on a boat headed for Hawaii and finding out that the captain has decided to go to Alaska instead without even talking to you can be more than demoralizing.
  5. Build teams of people who can work well together, who are talented and skilled and willing to pull their own weight and then some. Passionate people will help to bring out the best in team members who are having a bad day, but it is impossible to fix a team member who fundamentally lacks the requisite skills and desire to acquire them.
  6. Be open minded and tolerant of opposing points of view. If you do not invite honest discussion with your team at appropriate times, you will lose your top talent and end up with a team that affirms any decision you make, even those that will send you off a cliff that you did not have the foresight to recognize.
  7. You can teach management skills to a leader. But teaching leadership skills to a manager is not so easy. Look for leaders who can motivate and rally teams. You can hire a clerk or accountant to take care of the bean counting. But you may not recover from having a leaderless team and the resultant chaos and confusion and serial loss of top talent that will result. Do not be afraid to amputate and stop the bleeding. Keeping a failed manager long beyond the point of recognizing the problem to avoid the pain of change is an ominous sign to your top talent that you lack the leadership required to steer the ship successfully to port and they will abandon ship at the first reasonable moment.

If you’re making New Year’s resolutions with respect to your company, I urge you to review these lists, and the plethora of others available on the web from sources far more authoritative than me. Take positive action to attract and keep your top talent. And if you find yourself looking for a company that exhibits these desirable qualities, keep up your search. They are out there. And while no company is perfect, there are certainly some that far and away exceed others. So whatever you do, don’t give up hope of a better day.

posted on Wednesday, December 28, 2011 9:41:55 AM (Mountain Standard Time, UTC-07:00)  #    Comments [0]
# Tuesday, December 27, 2011

Listen more.

Talk less.

Think more.

React less.

Do more.

Sit less.

These are my resolutions for the New Year.

More or less.

posted on Tuesday, December 27, 2011 1:31:32 PM (Mountain Standard Time, UTC-07:00)  #    Comments [0]
# Saturday, December 24, 2011

On rare occasions I step away from my primary theme in this blog. Christmas is certainly one of those. Many people I work with and many readers of this blog are not Christian, but I have not yet met or worked with anyone who does not appreciate the Christmas season as a time to exchange gifts with loved ones or enjoy the company of friends and family around a cup of cheer. So to all my friends, coworkers and blog readers, I wish you a very Merry Christmas and hope that this season will find you giving and receiving gifts that count.

What are the gifts that count? To answer that, I want to share with you a selection from a devotional talk given by President Dieter F. Uchtdorf, Second Counselor in the First Presidency of the Church of Jesus Christ of Latter-day Saints (of which I am a member) at the 2011 First Presidency Christmas Devotional.

“Christmas and some of the cherished traditions of the season remind us that we, like the Wise Men of old, should seek the Christ and lay before Him the most precious of gifts: a broken heart and a contrite spirit. We should offer Him our love. We should give Him our willingness to take upon ourselves His name and walk in the path of discipleship. We should promise to remember Him always, to emulate His example, and to go about doing good.

We cannot offer Him the gift of perfection in all things because this is a gift beyond our capacity to give—at least for now. The Lord does not expect that we commit to move mountains. But He does require that we bring as gifts our best efforts to move ourselves, one foot in front of the other, walking in the ways He has prepared and taught.

And what are the Savior’s gifts to those who are willing to bring these gifts to Him?

This may be the most one-sided gift exchange in the history of the universe. The Savior’s gifts to us are breathtaking.

Let us begin with immortality. Because the Savior overcame death, all men and women—both the just and the unjust—will live forever.

Then, forgiveness—even though our sins and imperfections be as scarlet, they can become white as snow because of Him.

And finally, eternal life—the greatest gift of all. Because of the Atonement of Christ, not only are we guaranteed an infinite quantity of life, but He offers the possibility of an unimaginable quality of life as well.

Some of His divine gifts are reserved for that glorious future day when we return to His presence.

But He extends many gifts and His grace to us every day. He promises to be with us, to come to us when we need comfort, to lift us when we stumble, to carry us if needed, to mourn and rejoice with us. Every day He offers to take us by the hand and help transform ordinary life into extraordinary spiritual experiences.”

Whether you celebrate the Christ and His birth this season or not, I wish you all peace and joy and a happy and prosperous new year.

posted on Saturday, December 24, 2011 9:43:52 AM (Mountain Standard Time, UTC-07:00)  #    Comments [0]
# Monday, October 10, 2011

Recently I came across an interesting list of top ten time wasters at work. I jotted them down but have lost the source, so I apologize for not providing the link. Here’s their list:

  1. Instant Messaging
  2. Over-Reliance on Email
  3. Meandering Meetings
  4. Short Gaps Between Meetings
  5. Reacting to Interruptions
  6. Ineffective Multi-Tasking
  7. Disorganized Workspace
  8. Personal Communication
  9. Web Surfing "Breaks"
  10. Cigarette/Coffee Breaks

It’s a decent list that one might find on many top ten sites, I’m sure. But it’s not terribly accurate. You see, the biggest time waster in the enterprise is the Meaningless, Meandering Meeting Machine. So here’s my revised list:

  1. Thinking about meetings.
  2. Planning meetings.
  3. Doodling in meetings.
  4. Talking about meetings.
  5. Scheduling and rescheduling meetings.
  6. Meetings.
  7. Follow-up meetings.
  8. Looking or asking for minutes from meetings.
  9. Assuming people will do what was agreed to in meetings.
  10. Making lists about meetings.

I have seen good, productive employees become consumed by the Meaningless Meetings Machine. It is an endless recursive function leading to enterprise stack overflow. Sometimes executives are lost for months in the Machine and when employees smart enough or lucky enough to stay away from the Machine are asked if they have seen Mr. Soandso, they say, No, and hurriedly move on lest they too be sucked into the Machine.

posted on Monday, October 10, 2011 8:18:33 AM (Mountain Daylight Time, UTC-06:00)  #    Comments [1]
# Sunday, October 09, 2011

In April of this year, an executive of another company told me in a telephone conversation, "Everybody lies. You just have to get used to it."

I was stunned by the statement and have given it a lot of thought since then. It reminded me of a scene from Babylon 5 that went something like this:

Garibaldi: Everybody lies.
Edgars: That's a very sad view of the universe, Mr. Garibaldi.
Garibaldi: Yeah, well, it's the only one I got. And it works for me.
Edgars: The truth will be revealed in a couple of days. How many people can say that?
Garibaldi: I don't know. But I think the last guy got thirty pieces of silver for the same job.

Dishonesty in this technological age has even produced its own vocabulary, specifically the verb "to blag." The third definition of "blag" in the Urban Dictionary:

To convince another person that all the stuff you just made up is in fact true and worthy. Example: "Caught in a tight spot, Harry blagged his way through the conversation and somehow got the job."

I do not wish to accept the dim view that everybody lies. And I certainly do not wish to get used to it, in any way shape or form. And yet there is growing evidence both anecdotally in my own professional career and globally that the enterprise often creates a dishonest culture. Author Brian Amble in Management Issues filed a piece in 2005 entitled Corporate Culture Encourages Lying. The author mentions "blagging" and makes these three very interesting points:

"The rot starts at the top, revealing a surprisingly ambivalent attitude amongst...bosses towards the honesty – or otherwise - of their staff."

"The vast majority of company directors and senior managers believe it is wrong for their employees to lie to them. But almost half are comfortable with those same employees telling untruths on their behalf to their customers – with female bosses even more tolerant of this sort of behavior than their male colleagues."

"[Microsoft] encourages decision-making [using a] technology-based process that creates permanent digital records and maintains the integrity of the information on which those decisions are based."

In my experience blagging is most especially prevalent in the world of software development where management clings to the notion, and consultants sell the latest process magic to reaffirm the assumption, that building software is like building a house, sufficiently predictable and repeatable so as to accurately establish a firm budget, timeline and resource commitment before ground is broken. Software artisans then find themselves in the very uncomfortable position of feeling pressured to lie to their patron bosses who clearly do not wish to know that building software is often as much an unpredictable art as it is in any way a predictable science.

Software craftsmen who boldly stand their ground and declare, "I don't know how long it will take to build that," are more often attacked and labeled malcontent and misfit, shunned by managers who insist that they can bend reality to their will while they ignore what their experts have told them. And lower management who know better are caught in the ultimate catch 22. They may believe their lead developers or software architects when they say, "we cannot deliver all these features on that date," but they cannot report that fact to their own managers or customers, so they choose to lie in order to protect and even advance their own career knowing that if the implementation team fails, they may avoid accountability by throwing the developers under the bus, asserting the implementation team is incompetent and ought to be replaced.

Given the impossible circumstances in which software craftsmen find themselves, they often resort to lying to themselves and their bosses asserting that they can produce some piece of software, despite the general lack of specific requirements and understanding of the problem domain or the target users, within the time budget and resource constraints imposed by management. And then in order to avoid being exposed as just another blagger, the software artisan (or collectively the team) works impossible hours, makes imprudent quality compromises and desperately seeks for external circumstances which can be blamed for delays. Knowing that such responsibility diverting opportunities always arise, the software artisan begins to accept and even embrace the culture of lies produced by her circumstances until she does not even recognize the truth.

I know that this scenario is not universal. There are organizations who take great steps, incorporating technology and constant vigilance, to avoid the traps of dishonesty. These organizations are led by honest people who genuinely listen to their people and avoid the trap of boxing their software craftsmen into a set of assumptions that are untenable at best and downright foolish at worst. Dr. Rhonne Sanderson said it best in an article by Marcia A. Reed-Woodard entitled Don't lie to me: dishonesty can ruin professional and personal relationships:

"Although lying provides an easy out in the short-term, it comes with serious repercussions," says Dr Rhonne Sanderson, a Dallas--Fort Worth area licensed psychotherapist. He maintains that the fallout from lying can hurt others, ruin relationships, as well as rob the liar of integrity, credibility, confidence, and self-esteem. "Lying only exacerbates the real problem."

If we let honesty govern our dealings with our fellow man, we will all be the better for it. We do not need to sacrifice civility for honesty, nor should we mistake an honest disagreement for disrespect or insubordination, for when we do, we encourage others to be dishonest through their silence.

We can boldly speak the truth and expect others to do so. We can hold ourselves and others to account. We need not settle for the notion that everybody lies. And we certainly do not need to get used to it. We can and ought to do and be better.

posted on Sunday, October 09, 2011 2:05:58 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [0]
# Thursday, October 06, 2011

apple

Four pictures, four thousand words. Steve Jobs. 1955-2011. RIP!

posted on Thursday, October 06, 2011 9:28:29 AM (Mountain Daylight Time, UTC-06:00)  #    Comments [0]
# Sunday, September 25, 2011

I remember listening to this wise counsel three years ago from Elder Joseph B. Wirthlin Of the Quorum of the Twelve Apostles. Today my mother reminded me of it and I enjoyed reading it again. If you have ever faced tough times or felt like you were on the losing end of a game, in sport, in work, in life, I hope this article will pick you up.

I would like to highlight one of the points Elder Wirthlin makes, perhaps my favorite:

Learn to laugh – When things go wrong, we can choose to be angry or sad or depressed, but if we choose to laugh, we can get through the present difficulty and more easily find a solution.

“The next time you’re tempted to groan, you might try to laugh instead. It will extend your life and make the lives of all those around you more enjoyable.”

When the stresses of work or a commute or a family crisis threaten to bring you down, laugh. It truly is the best medicine!

posted on Sunday, September 25, 2011 6:50:16 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [0]
# Tuesday, September 20, 2011

I spend perhaps six hours a day, five days a week, fifty weeks a year hitting the keys. At my slow average typing speed of 30 words per minute (I can type faster but I’m not constantly hitting the keys, so I’m guessing here) and assuming I spend thirty years of my life doing this, my total keystrokes (assuming an average of 6 keystrokes per word) will be:

60 minutes * 6 hours * 5 days * 50 weeks * 30 years * 30 words * 6 keystrokes = 16,200,000 keystrokes

Percentage of my work output firing off an ill conceived email providing advice to someone who does not care or want the advice and will certainly not waste time reading the missive: 0.01%

Today I wasted 0.01% of my available productivity.

I’ve already consumed nearly 50% of my available keystrokes, so I’m posting this to remind myself to conserve my energy and use what remains of my personal utility more wisely.

Important note to self. Do not waste time writing perfectly good advice and sending it to someone who could not care less about your opinion. Instead, read a good book. Write a new blog post. Refactor some old code. Or just watch the leaves in the trees dance in the wind. This would be a more valuable use of that time. Time that cannot ever be recaptured.

posted on Tuesday, September 20, 2011 10:18:58 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [1]
# Saturday, January 10, 2009

Every few months I give up on stacking everything on my desk and begin the arduous task of cleaning it up. In my most recent battle with desktop clutter, I came to realize that I am a book addict. Set aside the numerous entertaining novels I've bought and read over the last few months because they don't make it to my work desk. If they did, I'd never get any work done.

Here's a list of just the books currently floating in the stacks on my desk. No, I am not making this up. And no, I'm not going to give you a link to each one of them. You can always hit www.amazon.com or your favorite alternative and look them up. Many of these come from my local Borders store and others from Amazon. My Amazon Prime account has more than paid for itself.

I must also confess that some of these were not purchased recently but have somehow made their way back off my shelf and onto my desk in recent months. The order is of no particular import except to note that it is essentially a LIFO list which may provide a quasi reverse chronological order to my wandering interests and/or problems/challenges.

  • Agile Principles, Patterns and Practices in C# by Martin and Martin
  • The Data Model Resource Book Volume 1 by Silverston
  • The Data Model Resource Book Volume 2 by Silverston
  • The Data Model Resource Book Volume 3 by Silverston and Agnew
  • Pro ASP.NET 2.0 in C# 2005 by MacDonald and Szpuszla
  • SQL Server Analysis Services 2005 with MDX by Harrinath and Quinn
  • Windows Workflow Foundation by Scribner
  • Programming WCF Services by Lowy
  • Pro C# 2008 and the .NET 3.5 Platform by Troelsen
  • jQuery in Action by Bibeault and Katz
  • Building a Data Warehouse by Rainardi
  • Programming Collective Intelligence by Segaran
  • Workflow in the 2007 Microsoft Office System by Mann
  • Pro SharePoint 2007 Development Techniques by Bruggeman and Bruggeman
  • Regular Expressions by Friedl
  • Regular Expression Recipes for Windows Developers by Good
  • Microsoft SharePoint Buidling Office 2007 Solutions in C# 2005 by Hillier
  • C# Cookbook by Teilhet and Hilyard
  • Refactoring Databases Evolutionary Database Design by Ambler and Sadalage
  • SharePoint Server 2007 Best Practices by Curry and English

Update: Wandering through the house, I found several more at various favorite reading spots. They've now taken their proper place on my desk piles. Here they are:

  • Pro Silverlight 2 in C# 2008 by MacDonald
  • Thinking in C++ Second Edition Volume 1 by Eckel
  • Chris Crawford on Interactive Storytelling by Crawford
  • A Programmer's Introduction to C# Second Edition by Gunnerson
  • Visual C# 2005: The Base Class Library by Balena (I won this one)

Yes, this is a sad but not unhealthy addiction. The only detriment here is to my pocketbook and the fact that I'm running out of shelf space. Do you any of you have similar addictions?

posted on Saturday, January 10, 2009 12:12:24 PM (Mountain Standard Time, UTC-07:00)  #    Comments [1]
# Monday, August 11, 2008

Props, kudos, and thanks a million to my good friend Aaron Zupancic, one of Microsoft's most valuable MVPs. Last week I pinged him to ask his opinion about a site I'd found adversting an VS 2008 Pro MSDN Pro 2 year sub for $999. It was a decent price but the site seemed a bit sketchy. He seemed to agree with my assessment and then asked if I'd like one of the complimentary VSTS 2008 MSDN Premium subscriptions that Microsoft had sent him with his MVP package. Wow!

That's over $10,000 worth of tools!

Thanks ten thousand times over, Aaron! You're awesome!

In exchange, I promise to faithfully attend the Utah user group meetings!

And before you inundate Aaron with begging, let me dispell the rumor that he has an unlimited supply. Aaron gave the other complinetary sub to another friend and user group supporter. And please don't nag him for picking me over you. Blame me, blind luck, and accidentally perfect timing!

posted on Monday, August 11, 2008 10:57:14 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [0]
# Tuesday, May 27, 2008

One of my very best friends, Phil Burns, whom I love like a brother, called me Friday afternoon. But it wasn't him.

It was his phone but I did not recognize the voice on the phone. The voice belonged to a woman whom I assume was a hospital emergency room employee. She informed me that Phil's wife Adria was boarding an ambulance with their 22 month old daughter Serenity to be transported from the American Fork Hospital to the Primary Childrens Hospital in Salt Lake City. I asked what was wrong and she told me that Serenity was very sick and may have leukemia.

I was stunned. I told her to let Phil know I'd be in touch very soon or to call me when he was able with more news. I cut short a business lunch and walked back to the office from the food court and let my boss know that I'd be gone the rest of the afternoon. On the way home, Phil called me and was very upset. He told me some of the story that you can find on his blog.

Between sobs of grief and fear, Phil begain to tell me the story. His tiny little angel named Serenity, not yet two years old, was on her way to the best childrens hospital in the intermountain west. A helicopter was on standby in case her breathing became more shallow. Phil was on his way home to pick up some things for a hospital stay that he was told would be at least three or more days. I told him I'd meet him there.

Serenity is the very definition of purity and beauty. Here large brown eyes, which you can see here on a site that a friend has put together, can melt your heart and make you want to do anything you can to alleviate her suffering.

The good news is that her prognosis is very hopeful but she will have to go through a lot to get there. She will get through it with a mountain of love and sea of patience from her parents and family and friends. But it will take one more thing: a Greengotts vault full of gold. The Burns family has no health insurance. And the hospital calls leukemia babies "Million Dollar Babies." The Burns family will need every bit of assistance we can give them. You and I can help. A donation account has been setup. Please open your wallet as far as this bright little angel can open your heart. If you have the courage to look into her eyes and wonder what the rest of her life holds in store, opening your wallet to help with the bills will be something you cannot avoid.

posted on Tuesday, May 27, 2008 9:03:59 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [1]
# Sunday, August 20, 2006

I've recently taken a position with a company as Principal Technologist which means I'll be doing more writing and more meetings than I have in the last few years. It also means I'll be writing less code during the work day. The great part about that is that I'll be able to focus more of my own time on writing code that I want to write.

So what is it that I'm writing? Well, I can't tell you that right now, but I'll tell you the name of the project, the name of this code: The Forseti Project.

No, I don't own the domain name. It's specifically designed to take advantage of some of the things I've learned in the last couple of years and to explore things I've not had time to work on because of a very hectic coding schedule. Now that the coding schedule seems to be lightening up, I'll be exploring some things I've wanted to delve into.

And that's all I have to say about it for the moment. As I move along, I'm sure I'll be sharing some of the things that I learn and discover as I work on this exciting new project.

I'll keep you posted.

posted on Sunday, August 20, 2006 10:06:25 AM (Mountain Daylight Time, UTC-06:00)  #    Comments [0]
# Saturday, July 01, 2006

Last Thursday I attended my first Geek Dinner. Great food. Good conversation. And then we went to the Wynnsong and watched Superman Returns in our own reserved theater thanks to their great management. And many thanks to Phil Burns and DevUtah for hosting it.

Dinner was at Tucanos in Provo. Great food. Fun atmosphere.

The movie was vintage Superman. I expected more but my kids will love it.

And if you live in Utah, come join us for the next Geek dinner. If you don't, then start your own. Way fun!

posted on Saturday, July 01, 2006 3:09:45 PM (Mountain Daylight Time, UTC-06:00)  #    Comments [0]
# Sunday, June 12, 2005

I am a .NET developer and architect with more years in the software industry than I care to admit, the last seven of which have been spent architecting and implementing web and rich client applications for the enterprise. For the last four years I have worked nearly exclusively in C#.

I jumped into C# in 2001 when I read Borland's lawsuit against Microsoft over the fact that Bill had lured many key people away from Borland (all's fair in love and war, no condemnation here) to work on what was the precursor to .NET and C#. That's where I first learned of Anders Hejlsberg. I was already a Delphi enthusiast and reading about Anders journey north got me very interested in what he had produced.

At the time, I was considering moving away from Delphi and into the J2EE world. I consulted with a friend who was already a very successful consultant in that space. He read the winds blowing in from the northwest and suggested I would be better off, in terms of job opportunities in the future, if I went with C# and .NET. I haven't looked back since. I do look over the fence at J2EE from time to time to see what's happening but I don't think you could get me to switch from Diet Coke to coffee.

posted on Sunday, June 12, 2005 9:31:25 AM (Mountain Daylight Time, UTC-06:00)  #    Comments [0]