.NET Rocks!

Blasphemy, I know. You might be thinking that I meant to title this post, “.NET Sucks!”, right? Sorry to disappoint my Java loving co-workers. Of course, I’m not speaking about .NET, but the excellent podcast by the name of .NET Rocks! I have yet to find another developer focused podcast so informative and entertaining. The amazing thing about .NET Rocks! to me is that it spends quite a bit of time covering topics like Open Source software and agile software development that some would consider anti-Microsoft. It gets even better when Richard Campbell and Carl Franklin discuss topics like SOA (and what it’s really about), Enterprise Architecture, Version Control and CI, or being “Code Complete” with Steve McConnell. Each of those individual episodes I reference are highly recommended listens, especially the SOA and Enterprise Architecture ones.

Getting Less Done

“We found out we got a whole lot less done when we’re sitting next to each other the whole time.” -Jason Fried, 37 Signals

Easily Distracted T-ShirtThat quote comes from a short interview Jason Fried did with Crain’s Chicago Business. That point of view collides with those like me who promote co-located teams as a way to increase productivity. Co-located teams are often a core value of agile software development. But, want to know a little secret? I think there’s a lot of truth in what Jason says.

I think co-located too often translates to distractions galore. Software developers need to get into “the flow”. When they’re in the flow, developers are at their most productive. Everything starts to click and the results are often astonishing. You can’t get into the flow when you’re dealing with distractions and interruptions. Interruptions don’t have to be direct, like a team member asking you a spontaneous question, they can be the result of an open space environment where every conversation is overheard and tempts you to join in.

There are times when being co-located pays off in some big ways. For instance, when you have multiple developers working on solving a problem together or when someone overhears a conversation, jumps in and a seemingly difficult problem suddenly becomes easy to solve thanks to the contributions from someone not originally involved. However, I often wonder if these instances are the exceptions rather than the rules.

Maybe the balance is to be in the same vicinity but not co-located in an open space where distractions are so plentiful? Co-locating can be reserved for those times when it’s needed by always having available open meeting spaces for such occasions. Possibly utilizing IM and chat rooms for a less obtrusive form of collaborating while not co-located. When people feel that it’s important to meet together, then they easily can. Co-location in this setup becomes the exception rather than the rule. Is it possible to get the best of both worlds?

I Don’t Get Facebook

I’m not hip. I don’t get Facebook. I understand the concept but I don’t get the hype around it. OK, it’s a platform. But, maybe I’m missing something. The whole point of the Facebook platform seems to be about locking you into Facebook. Another well hyped web app is Twitter. While I don’t use Twitter (nor the numerous competitors), I think I get it. Twitter’s API makes more sense to me. Twitter isn’t locking you into a platform like Facebook is. Am I over simplifying things?

You’d think Amazon would try to build out a platform of sorts with their AWS offerings. Who knows, maybe they are. But, I think Amazon is taking more of the approach I see in services like Twitter — providing well focused services like the Flexible Payments Service (FPS) and Simple Queue Service (SQS) rather than an all encompassing platform that makes the seemingly limitless Internet and web rather limited.

So, what is it that I don’t get about Facebook that many others do?

Made to Stick: A Must Read

Have you ever had to sell people on an idea? Ever needed to get people to focus on a common goal? I know I do, even though the ideas and goals normally aren’t earth shattering. Made to Stick, as the cover says, explains “why some ideas survive and others die.”

The authors, Chip and Dan Heath, give six major factors that typically determine whether an idea will survive or not. The first, and most important factor, is keeping things simple. Duh. That was my first thought as I started reading the chapter. Then the examples started coming. Southwest’s core value of being “THE low fare airline.” It almost sounds too simple. Then an example of how this simple, yet core idea at Southwest translates to the day-to-day:

“Tracy from marketing comes into your office. She says her surveys indicate that the passengers might enjoy a light entree on the Houston to Las Vegas flight. All we offer is peanuts and she thinks a nice chicken Caesar salad would be popular. What do you say? . . .

You say, ‘Tracy, will adding that chicken caesar salad make us THE low-fare airline from Houston to Las Vegas? Because if it doesn’t help us become the unchallenged low-fare airline, we’re not serving any damn chicken salad.'”

The key with keeping ideas simple isn’t to dumb them down, rather it’s all about capturing the core idea. An example is when Bill Clinton ran for President in 1992. The former President’s campaign ran on the now famous mantra of “It’s the economy, stupid.” While Clinton was constantly tempted to get into endless policy debates, James Carville reminded him that winning the election hinged on sticking to the core idea of “It’s the economy, stupid.” Regardless of your politics, Clinton’s ’92 campaign was genius and to think it all revolved around four little words.

I believe that much frustration comes from people not being able to communicate their ideas in a way that people remember and latch onto. I know that I’m far too often left scratching my head wondering why a person or group of people didn’t buy into what I was telling them. Now I think I have a better understanding and intend to put to practice the principles taught in Made to Stick.

I’ll write about the other five factors that make ideas sticky in future posts. There’s too much good stuff to capture in one post.

P.S. Not only is Made to Stick a great book, but it comes with a great cover. Everyone who sees it immediately goes to touch the duct tape part of the cover. Very clever.

SOA, Agile, Lean, etc. are The Answer, but What was The Question Again?

There have been a lot of good posts about SOA lately. Gestalt’s CTO, Jim Stogdill, points to both an article by Cynthia Rettig and Nicholas Carr’s follow up on Rettig’s article. The take away from these articles and posts seems to be that just as ERP software implementations have been plagued with mind numbing complexity, SOA is likely only adding another layer of complexity (or more!) on top of a fragile foundation.

Nick Malick, a Microsoft Enterprise Architect, also has some interesting thoughts on how we in the IT biz sell SOA to our customers. Nick has this to say regarding selling SOA to customers:

We do talk about SOA, just not with the business. It’s not that the business doesn’t understand SOA, or wouldn’t if we told them… it’s just that they are not incented to care. If I walk into a business meeting with the head of the Volume Licensing organization, I have to realize that his operational team books a little over $1B in revenue to Microsoft’s bottom line every month. Let’s say I take an hour of his time. During that hour, his organization has closed on $6M in revenue. If I ask for $200,000 for SOA, when SOA is basically good design done well, using modern tools, many of them free… I’ve wasted his time.

Well said Nick! While it’s easy to pile on SOA, I think all things “agile” and “lean” in the IT world need to be put under the same scrutiny. When a buzzword becomes the focus of the conversation with customers, be weary. Just as we in the IT biz often throw around SOA as the solution to just about any problem we come across, I’m finding that the terms “agile” and “lean” are treated in much the same way. I cringe when I hear about organizations that believe they’ve turned the titanic 180 degrees almost on a dime since they adopted agile/lean processes and best practices. It’s as if reality goes out the window and the buzzwords act as some sort of mind altering drug that makes things magically better.

How do we prevent the hysteria that inevitably arrives around new technologies and software development processes? I can think of some but they’re never as easy as saying a buzzword or two. For instance, we need to focus on the problems that we’re trying to solve, not the other way around. Who knows, maybe the problems require much more than SOA, agile, lean, etc. can solve. I think once we focus on the problem first and solutions second we then need to be more specific when we talk about these buzzword solutions. SOA, agile, lean, etc. likely mean one thing to me and quite another to you. By being more specific in what we’re really talking about we combat the one word answers that only build the buzz.

VirtualBox 1.4 is great (plus a fix for Vista guest networking)

I was sceptical that VirtualBox, an open source desktop virtualization software package, could be a viable alternative to VMWare and Parallels. I’m happy to report that my early experiences with it have been fantastic. The biggest issue I had was with my Microsoft Vista Home Premium guest OS (i.e. an OS running inside of VirtualBox) not having a driver out-of-the-box for the network adapter VirtualBox and most of the other virtualization solutions use. Oh the irony. Windows has the driver problems, not Linux this time around. Ha!

I documented my issue and solution to the network driver problem on the VirtualBox issue tracker site. In order to get the word out just a bit more through the search engines, I’m posting my problem and solution here.

My setup:

  • Fresh Kubuntu 7.04 install on a Gateway MT6840 notebook (Centrino Duo platform)
  • VirtualBox 1.4 install from the VirtualBox debian repository
  • VirtualBox “Guest Additions” installed
  • Network connection through my wireless card only on eth1
  • Guest OS on VirtualBox is Vista Home Premium (I know, I know…licensing issues…sigh)

Everything went fine until I tried to get networking on Vista working. I learned quickly that there are issues with Vista not supporting (out-of-the-box) the network card VirtualBox emulates (AMD PCnet Ethernet card.) The answer to this is to install the “Guest Additions”, go through the Windows “New Hardware Wizard” and point it to the CD drive, which should be an ISO image of drivers from the “Guest Addition” installer. However, when I followed this process Vista would go to install the driver and then freeze about 10 seconds into the install. The only thing I could do then was do a hard reset from the VirtualBox “File” menu. After trying numerous potential workarounds, I stumbled upon the solution:

  1. Go to VirtualBox and select the “Network” link under the “Details” tab for your Vista VM image
  2. In the Network Details tab select the appropriate network adapter (eth1 in my case) and then make sure you have these settings:
    1. Check “Enable Network Adapter”
    2. Select “Not attached” for the “Attached to” menu
    3. Check OFF the “Connected” checkbox
    4. Click OK to save the changes
  3. Start up Vista
  4. After you login, go to the VirtualBox “Devices” menu and select “Mount CD/DVD-ROM”->”CD/DVD-ROM Image”
  5. Select “VBoxAdditions.iso” and click “Select”
  6. From the “Start menu” right-click on “Computer” and select “Manage”
  7. Click on “Device Manager” to see all the devices
  8. Right click on your computer’s name in the “Device Manager” and select “Scan for hardware changes”
  9. You should be prompted to install a driver for your network controller
  10. When prompted, tell Windows to look for the driver on your CD driver under the “AMD_PCnet” directory on the drive
  11. Vista should successfully install the driver
  12. Shutdown Vista from the “Start Menu”
  13. Perform steps 1 & 2 (different sub-steps for 2 are below)
    1. Check “Enable Ethernet Adapter”
    2. Select “NAT” for the “Attached to” menu
    3. Check ON the “Connected” checkbox
    4. Click OK to save the changes
  14. Start up Vista and you should now have network connectivity

If you’ve had this problem with Vista as a guest OS using VirtualBox and these steps helped or didn’t help, please feel free to leave a comment.