30 November 2005

Virtual Monopolies

I just read an article about how great ideas are a myth and it reminded me of a thought I had the other day while standing in Starbucks. I was looking around the coffee shop thinking what a great execution it was. I mean they sell coffee for goodness sake. That's hardly a great idea. And yet, I was in awe at how amazingly well they have figured out how to supply me with a cup of joe.

Great ideas are cheap. I can go to coffee with my friends any day of the week and we'll spin off a few great ideas, guaranteed. But, we hardly ever act on them.

What's really great about Starbucks is what's really great about Dell and Apple and other companies that dominate in their niches... great execution.

When you walk into Starbucks you get a certain familiar feeling. Look around, the place is totally engineered. The colours are great, the smell is great, the packaging, the desk where you put in your creme, the cups, the gifts, the dress code, all done deliberatly. A Starbucks outlet is the result of someone taking the time to look at the details and make sure it all fits and leaving very little to chance. It's the result of a whole bunch of great ideas that have been executed flawlessly so that the entire package of great ideas is executed so that it is recognizable as a Starbucks.

How much attention are you paying to how you execute in your business. When you deliver your product or service does your customer know or care that it was you that did that? Was your widget remarkable enough that she said, "ah yes, the familiar feel of an Acme Widget, nothing like it", or is your customer saying, "I think I saw this cheaper last week... where was that?".

The reason Starbucks and Dell and Apple put so much attention into their products and services is because it gives them an edge. They have virtual monopolies. Sure, you can get an MP3 player from anyone but the only place you can get an iPod is Apple, and the only place you can purchase a cutting edge screaming machine completely online for a low prce and have it delivered to your door in a week is Dell, and of course the only place you can get a grande soy extra-hot gingerbread latte with room in a familiar friendly comfortable environment anywhere on the planet is Starbucks.

Forget your great idea. What's your monopoly?

29 November 2005

IronPython

I just viewed an intro video by Jim Hugunin about IronPython, Microsoft's rendition of Python on the .NET platform, and I am stunned.

I predict that this is going to have a huge impact in several ways.

First, Python is interesting in that it is quickly becoming the only language that can actually deliver on the "run anywhere" promise of Java (and the C language before it). Java does not run anywhere and neither did C, however, Python can run on pretty much any platform, right out of the box, PLUS (thanks to Jim), it can run inside Java (as Jython) and now by being integrated into .NET is can run anywhere .NET is. To me, that is very impressive. As a programmer it is now possible to take my favorite language with me no matter what project I am working on.

Second, the fact that IronPython is a .NET language means that it runs seamlessly inside Visual Studio. Whether or not you see that as a plus, I think it is definately a plus for those people who use Visual Studio and like it. It also makes them much more likely to give IronPython a try.

Third, .NET gives Python a fighting chance of being accepted in the most restrictive pro-proprietary corporate and government IT shops. A lot of apps that are being written with the .NET moniker are actually Visual Basic apps (ugh!). Now, IronPython as a real .NET language offers a really viable choice to developers, and let's face it, if it's OK to write in Visual Basic then it's got to be OK to write in Python. Right?

I know there are many other benefits, but those are the ones that are coming to mind right now, and frankly I have to go now because I need to play around with IronPython. Very cool.

24 November 2005

Good Job

ksblog has an entry about getting a "good job", which I loved.

My experience working within a large organization was that in order to really get things done, to innovate in new ways, it had to be a secret. As soon as people popped their creative heads above ground they would be squashed by the machine. (wow, that was kinda descriptive and yet vague at the same time!)

My point is, it has been my experience that often if you want to be innovative, just be innovative, and don't tell people that's what you're doing.

In my old job we used all sorts of creative methods to hide our innovations, like creating new phrases to describe what we were doing (only if asked), downplaying the good we were doing (kinda like the opposite of marketing), and co-operating by jumping through hoops whenever asked so as not to raise suspicions (hoops are inevitable).

As a result, we were able to do some really great stuff that if we had asked permission for, would have been rejected. We got our work done much faster and produced way more than was expected and our automations had positive spinoff benefits for the entire organization. Soon we were asked to take on other people's work in the same way.

It grew from the ground up so by the time the old school power keepers of the organization figured out what was going on, it was too late, the organization had already adopted our work and was loving it.

My advice is:

  • always keep your boss informed, without actually asking permission.

  • use creative names (i.e. we called our LAN a "File Sharing Device" for years because we weren't supposed to have a LAN. Fortunately, they didn't actually know what a LAN was.)

  • always jump through the hoops with pleasure (if you don't, you will be seen as a risk)

  • if you get attacked you can always use the bureaucracy against itself to slow down the people who are trying to stop you (i.e. "Let's schedule a series of focus group meetings to talk about how we might move resolve this.")

  • get buy-in from people you need by giving them lots of credit and sharing the love (i.e. "I would like to thank my boss, the IT department and the security folks for making this wonderful thing possible") even though they were in fact causing you the most friction.



And most of all, have fun. Life is too short to get the life sucked out of you by a big organization. Even innovation hostile environments can be fun places to work if you understand how they work.

Remember, they move slowly. You move fast.

22 November 2005

Subversion on Sourceforge

Sourceforge has annoucned that they are working to offer subversion services to developers as one of the many services they offer to open source project developers. This is great news. Subversion is significantly more efficienct and powerful than CVS so many of us have already adopted subversion but since Sourceforge hasn't had svn as a service offering our code has had to be housed separately from the rest of our project information.

This severely inhibits the seamless experience that Sourceforge had achieved in the past. I don't understand why it has taken so long to make the move except perhaps that as sometimes happens in the techie world people get so entrenched and committed to their existing toolset that it's hard to justify the switch.

Building and maintaining your software development arsenal is tough enough without having to go back and replace entire core systems. And changing a version control system has a whole set of challenges that say, changing your file server doesn't have. To switch from say a Windows based server to a GNU/Linux based file server is really not that big of a deal. Build the server, create the shared resource, create user accounts, copy the files over, grant access to the new share, change the system that you connect to... voila! Switching source code control systems has similar elements to those above plus you have to deal with the history... which is not backwards compatible. Yikes! So, you lose the history or you maintain two systems or you somehow kludge some of the releases of the old system into the new.

These are arguments for why users would might be reluctant to switch but are not reasons why Sourceforge might hesitate. It should be relatively straightforward to offer both CVS and Subversion at the same time. Other than massive numbers of projects switching over to Subversion I can't see an issue, especially since Subversion is quite efficient. Furthermore, given that a lot of developers will be slow to change old projects over right away because of the lost past data issue, mostly they would be dealing with new projects making use of the system which presumably will be less taxing than the existing CVS system.

Anyway, it's great to see this happening. I for one like the idea of devleoping open source projects in a mature, supported and modern environment with the full suite of tools available for team development.

21 November 2005

Getting what you want

I am a freedom freak. I thrive on freedom and flexibility. When choosing, I like to keep my options open where possible. And, like most people, I don't like being manipulated. Given that, what do you do if you want someone to do something? For many people the tools of manipulation are the tools of choice. Guilt, intimidation, bullying and talking-down-to are common tactics and the result is often resentment, resignation and loss of power.

There is a better way. In fact, there are many better ways. Here are just two.

1) Make a request
The single most effective way to get what you want from someone else, is to ask for it. There is no substitute for clear communication and making an honest request for something by clearly stating what you would like, without any fluff or justification or manipulation is your best bet to get what you want. The difference between a request an manipulation is that with a request the person you are making the request of feels free to choose whereas with manipulation there is this subtle or not so subtle feeling that comes with the words that let the user know that not giving you what you want is not okay. One way to tell if you are actually making a request is whether or not you are satisfied with either a "no" or a "yes" answer. If you ask someone to do something for you for which they say "no", and you are upset or have a feeling of resentment... that's manipulation. If you ask someone to do something and they say "no" and you can honestly say, "Okay, great. Thank you for considering it", that is a clean request.


2) Make it a better deal
Another effective way to get what you want is to make it a better deal. If you want another person to do something, think about it from their perspective. Put yourself in their shoes, so to speak, and imagine, "what's in it for them?" If you can tweak your requirements or add something or take something away so that the resulting offer is something that they can clearly benefit from you have a much better chance of getting what you want. So, for example, you tell people that you would like to switch the company policy manual from three ring binders to a wiki, and you explain how once on the wiki people will be able to contribute freely and concurrently and not only that, they can subscribe and be notified of any updates automatically... that creates a compelling feedback loop for them. It's easier for them to have software notifying them of the latest changes in policy than to have stuff filling up their inbox. It's a better deal.

There is no good reason that I can think of to try to force people to do what you want. People naturally resist being forced to do things. You can always find a way to offer what you want and allow people to choose freely from a number of options. And given a free choice, people will often want to help you.

Manipulation is a relic of the past. Collaboration, cooperation, shared vision will lead us to a more productive future. You stand a much better chance of getting what you want by speaking clearly and enrolling others rather than attempting to manipulate them.