Saturday, April 30, 2005

Java vs. C# series, Intro

I am a Sun Certified Java Programmer. I've implemented Java based solutions since 1999. I've implemented solutions including Applets, Swing, JavaServer Pages, Servlets, Enterprise JavaBeans, JDBC, Java Messaging Service, web services, and related technologies.

For the past 12 months I've been implementing solutions using C# .NET. And not using C# .NET in a completely different context (like mobile, compact, or embedded), but implementing it to solve a lot of the same business problems I was solving with Java - mainly client/server business applications accessing relational databases. Additionaly, I've had no formal training in C#.

I am starting a series that compares my experiences using Java related technologies with my experiences using C# .NET. In most cases I'm going to isolate a feature and say which I liked better for reasons that may or may not be highly technical. This is because I find real solutions to business problems that may or may not inherently be highly technical in nature. In other words, I won't address which is faster: Java StringBuffer or C# StringBuilder because in the type of work I do there is a very poor diminishing return on that knowledge. In some cases I'm going to explore the beauty of when these two technologies interoperate with each other, getting close to the published blueprints of Sun's and Microsoft's utopian worlds but probably bucking a little notion of what they actually had in mind.

Another one of my all-time favorites

My favorite baby girl. Posted by Hello

Thursday, April 28, 2005

Jack Welch

I met Jack Welch today. Yes, the Jack Welch. I attended a book signing for his new book Winning at the Tattered Cover Book Store in lower downtown Denver. An excerpt from the Introduction to the book: "I have been asked literally thousands of questions. But most of them come down to this: What does it take to win?"

The book is meant to serve as a roadmap for every level of worker that's passionate about business and I'm excited to get started.

At the very least, by shaking his hand I seriously upgraded the position of my 6 degrees. And talk about an impressive man in person. He commanded the room. He fielded questions off the cuff ranging from (paraphrased):

Should a guy stick with a top 5 Fortune 100 company that is stuck in the Stone Age and struggling to change or should he jump to a company that's driving change?
A: 5 criteria, stay or leave:
1. Do you like the people you work with?
2. Do you learn from the people you work with?
3. Did you compromise to work there? Just to live in Colorado, stay close to Mom, your wife's job, etc?
4. Will the company's brand lead you to bigger opportunities with other companies later on?
5. Do you enjoy going to work every day?

China's and India's impact on America's global economic dominance of the past century:
A: He sees a glass that's half-full. Everywhere he speaks he hears stories of more and more people with great ideas starting to play in the game. The economic climate's much better now than it's been in the past 30 years.

The procedure for firing an employee:
A: Deferred to the boss' boss. This procedure's in place so that someone couldn't be fired because the boss didn't like their brown eyes...

We're finished with the 15 year R&D cycle. Now what?:
A: Where's your funding? There is more money out there right now than ideas. People are swimming in money right now looking for an idea to invest in.

How do you get funding?
A: You formulate a crystal clear vision. Not a PowerPoint presentation 3 inches thick. A couple slides with razor-sharp vision.

Bush's tax cuts and energy policy:
A: Nine months before Clinton got out GE's orders fell off the table with Mr. Welch at the helm. Clinton barely escaped an economy that was plummeting. High gasoline prices are the results of two strong and growing economies in the U.S. and China.

Compare GE's ethical obligations to their pensions with United Airlines' handling of their pension plan:
A: No one at United Airlines wanted to lose. But they lost. They didn't have a plan to control their costs and they lost. People are frightened of their jobs at United. GE has a tutoring program for school kids that 43,000 employees participate in.
By winning in business, GE affords their people the opportunity to go out in the world and do good because they're not worried about losing their jobs.

That's it. Hope to post more about the book soon. If you're ever presented with the opportunity to hear Jack Welch speak, DO IT.

Tuesday, April 26, 2005

One of my all-time favorites

Somewhere near Silverthorne, Colorado with my son. Posted by Hello

Sunday, April 24, 2005

C Flat

My first blog unexpectedly converged with cycling yesterday. That is, I experienced an unexpected flat tire (is there any other kind?) on my ride and the event unexpectedly became the foremost topic for my blogging debut.

Amazingly, I've never had to change a flat tire in the thousands of miles that I've surely ridden in my life. Not from my Viper days of endless summers riding-n-jumping anything that presented a glimpse of hope that I'd catch over a foot of air. Not from my StumpJumper days of driving an hour to some mountain pass to catch some singletrack where I was sure I wouldn't see another human. And not even from my days at CU-Boulder where my bike was the only vehicle I had but still disregarded it enough to leave it under a winter of snow.

No, not at any point during those times. And so I've never had the chance to abstract from the experience (and, after all, it was only a flat tire). But there are some correlations between dealing with a flat tire and say, dealing with a hardware failure or software defect.

Lesson #1: Don't panic.
Dealing with a flat tire obviously begins the moment you notice you have a flat. If that's on a downhill run when you're clocking over 27 mph, it's best to keep your head and calmly stop the bike. Dealing with a critical bug in an application is the same. It's best to stay calm in the face of panic that sometimes ensues from important customers communicating their disappointment. Sometimes important information is lost in panic at a critical time: your cadence magnet fell off somewhere in the past 50 yards, or, exactly who was doing exactly what on the system when this exact problem was first discovered?

Lesson #2: Clear your mind.
Take a deep breath. Gather your senses. Focus on the problem at hand.

Lesson #3: Be prepared.
The items I hauled on every ride and figured I'd never use were my saviors.
Things that saved me: saddle bag, extra bike tube stored in plastic bag, tire levers, and CO2 inflation system air chuck with CO2 canister.
Things that didn't have a chance to save me: cell phone left on the kitchen counter.

Luckily I had read about how to change a flat. Actually practicing it at some point before I took my bike out would have been better. I think that anyone who's ever had a vested interest in hardware disaster recovery understands that this is critical. And also in software, select the best tools for your bag and know them.

Lesson #4: Find beauty in the situation.
Stopping and taking in a 360 degree view of the horizon yielded a deep appreciation for a first Colorado spring day, gorgeous mountain views, and for how utterly alone and dependent on my own competence I was.

Lesson #5: Buy yourself time.
One canister of CO2 shot into a new tube is enough to get you back on your bike and back to home base. Take it. Don't make the situation potentially more disastrous by pushing it. Dealing with a critical software defect is oftentimes the same; get a patch out as soon as possible that addresses the issue. Then start work on a permanent fix that addresses the root cause and write comprehensive unit tests to ensure the problem never surfaces again.

Lesson #6: Debrief.
Time to reflect and communicate. If my son were a little older, I could have talked to him about these lessons I've learned that have been reinforced. I could show him how to change a flat tire. I need to take inventory of my saddle bag and replenish the supplies I used before my next ride.

In software this is sometimes mistaken as assigning blame... that's another blog. In some cases, we may have discovered a systemic problem with some implementation that we need to communicate to all developers. Or we may have touched on an organizational challenge like QA resources.

In any case, I believe this lesson is critical to doing your job better tomorrow than you did today. This time I changed the flat tire. To be sure, next time I'll change the flat tire in no time flat.