Facebook made two interesting announcements this week in the area of making their platform more open. The first announcement was made by Mike Shroepfer in the developer blog post Next Steps in Openness where he writes

Enabling social information to flow through the Web is one of the core goals of Facebook. In the two months since Facebook Connect became generally available, over 4,000 sites and desktop applications have gone live with the service. Users can now log into sites across the Web using their Facebook account, bring their identity and friends with them, and share information and experiences using the same features as they would with applications on Facebook.

As we've launched and built Facebook Connect, we've been participants in OpenID efforts. One of our user experience experts, Julie Zhuo, presented at the UX Summit in October. Several of our engineers have been participating in meetups, and one of them ran as a community member for a board seat. We're happy to announce today that we are formalizing our support of the OpenID Foundation by officially joining the board.

At first glance it seems contradictory for Facebook to join the OpenID foundation given that many people view Facebook Connect to be a competitor to OpenID as a single sign-on solution albeit a centralized one. The confusion from pundits around this announcement from Facebook is summarized in the Ars Technica article Facebook's "next steps in openness" raises questions which openly questions why the company needs to join the OpenID foundation when Facebook Connect seems to be enjoying broader deployment across the Web.

The reason seems quite straightforward to me. Right now, Facebook has created a situation where web sites that want to enable their users log-in with credentials from third party sites need to implement two solutions; an OpenID consumer and Facebook Connect. This places a burden on web sites which now either have to chose to adopt one solution over the other or create a user experience problem by offering users both options. It's bad enough that there is now a market for companies who wrap both solutions in a single package like JanRain and Clickpass. I wouldn't be surprised if Facebook has been getting an earful from some of their larger Facebook Connect partners about being a competing offering to OpenID.

That said, I doubt that a generic solution like OpenID will ever beat the ease of use and value added functionality that Facebook has created with Facebook Connect. By supporting OpenID, Facebook gets to silence the sites who simply want single sign-on solution that is built on standards so they can implement one solution to get access to users of Facebook, Google, Yahoo!, Windows Live, MySpace, and AOL's services among others. However anyone who wants the richer integration that comes with integrating with the Facebook mini-feed and live feed will still need to adopt the proprietary Facebook Connect.

The second interesting announcement about Facebook opening up comes from Chris Putnam in the post titled Opening Up Facebook Status, Notes, Links, and Video to Facebook Platform which is excerpted below

We've seen increasing engagement with over 15 million users updating their status each day and sharing over 24 million links per month. We wanted to make sure this content and the ability to share this content was available through our standard APIs.

Specifically, your applications can now directly access all of a user's status, links, and notes via new methods and FQL calls. Your application will have access to any status, notes, or links from the active user or their friends that are currently visible to the active user. In addition, we're opening new APIs for you to post links, create notes, or upload videos for the current user, and we've made setting a user's status easier.

We're pretty excited to see what kinds of ideas you can come up with to help users create and share more content.

Like Facebook Connect, this is a further step away from the walled garden approach that characterized the Facebook platform of 2007. In 2007, the goal of Facebook's platform efforts was to tell websites to re-implement themselves as Facebook apps (e.g. iLike website vs. iLike Facebook app). With Facebook Connect and the changes to their APIs announced above, Facebook is now acknowledging that their users use other websites and integration with those sites doesn't require these sites to become sharecroppers on the digital farmland that is the Facebook canvas page.

Twitter has shown the value of having open APIs for link sharing and status updates which isn't lost on Facebook given their failed attempt to acquire Twitter. Sharing status updates is a powerful way for humans to connect in social contexts and given Facebook's goal to be the world's social operating system we can expect them to make more moves in this space. It's particularly interesting to see how people use status updates as a way to communicate and share experiences during news events such as President Obama's inauguration. Facebook saw this first hand with their integration of Facebook's status updates with the CNN website where Randi Zuckerburg wrote

Over 2 million status updates were posted through the CNN.com Live Facebook feed with 4,000 status updates per minute on average and a huge spike of 8,500 updates when President Obama began his speech. We're thrilled that you and so many others chose to actively participate as history was being made—by sharing the experience with the people that matter most to you.

Similar surges were seen on Twitter as evidenced by the chart below. The thing that is interesting to note is that while status updates increased during the most exciting part of the inauguration other forms of Web traffic declined at the same time.

Similar traffic drop on Last.FM seen on the right

Traffic Drop to Last.FM during Obama inauguration on right

Google saw a similar drop as well

Traffic Drop to Google during Obama Inauguration

Was it because everybody went to Twitter?

Traffic Spike on Twitter during Obama Inauguration

Charts taken from the post Understanding Web Operations Culture - the Graph & Data Obsession on the O'Reilly Rader blog.

UPDATE: I've been playing around with the APIs announced and it looks like there actually isn't an API to get your friends' status updates included in the announcement. The status.get method only returns the status updates posted by the currently user. The closest I could get was trying the query below via fql.query but it never returned results

SELECT uid, message FROM status WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=$userid)

So much for the claims that this is a Twitter killer.

Note Now Playing: Eminem, Dr. Dre & 50 Cent - Crack a Bottle Note


 

This morning I was reading Om Malik's post entitled Google & The Big Ideas where he writes

Earlier today, when I read about Google launching a mobile version of Tasks. I was amazed by the attention being focused on essentially a to-do list website. And while it wasn’t worth a story, I shared my feelings via I sent Twitter. My tweet read:

I think google has no big ideas. this morning they announced a to-do-list. FGS. [For God Sake] Remember the Milk MUCH better.

...
Matt’s comments and the responses both on this blog and FriendFeed resulted in some thoughts about what constitutes a big idea, where Google is right and where it is light. Instead of responding on
FriendFeed, I decided to share my thoughts with you, hoping that we can have a larger conversation about Google and the big ideas.

For me startups and products such as Skype, Flickr and YouTube represent big ideas. Why? Because they not only redefine our notions about certain technologies, but they also change our behavior and cause massive disruption. For instance, Skype redefined our relationship with our phone and in the process put disrupting the telecom industry. Flickr made a largely way web into a dynamic, thriving social community. Today even our friends at Wall Street Journal have comments, and the New York Times is hoping to use LinkedIn to foster a community. YouTube made us rethink television, by making it dead simple not only to consume video but also to broadcast video.

Similarly, Google’s Search changed how we consumed information. Instead of going to destinations, we now consume information by just finding it. What made this “big idea” even more disruptive — Google’s use of data analytics to offer highly focused advertising messages to marry search queries. (Of course, Google wasn’t the one to think of this big idea, but that’s a whole another story.)

The problem with "Big Ideas" is that sometimes people get obsessed with how game changing or disruptive their product is instead of focusing on making it the best at what it does.

I remember a few years ago when every other article out of the technology press was about how innovative every product Google created was. For a while, this created a scramble amongst various Web companies to show that they could be just as innovative as Google. Yahoo! tried to do this by buying innovation in the form of every hot startup they could get their hands on (Flickr, del.icio.us, Jumpcut, Webjay, Konfabulator, Upcoming, etc) which only led to spreading itself too thin as eloquently captured in Brad Garlinghouse's Peanut Butter Manifesto memo.

On the other hand, there are lots of products that have been unoriginal ideas now seen as game changing because of how these ideas have been executed. One example is the iPod + iTunes which started of as yet another MP3 player with a proprietary music player but has grown to be a cultural force and the number one retailer of music in the United States. When Facebook launched it plowed ground that had already been covered by MySpace, Orkut and Friendster yet today it is the number one social networking site in the world. In both cases, these have been very focused products that have been careful to grow their feature set in a limited way but have done an excellent job in providing a very user-centric experience. This isn't to say that there aren't any innovations in Facebook or in iTunes+iPod but instead that they are examples of products that have been game changing not by being a "big idea" but instead by being full of lots of good ideas.

Being original or innovative is nice but even better is building a product that your customers love. Never forget that.

Note Now Playing: Justin Timberlake - What Goes Around.../...Comes Around Interlude Note


 

From the Live Search team blog post entitled Live Search autosuggestions come to Firefox we learn

We're happy to report that we've officially integrated Live Search into Firefox by popular demand.
...
The Live Search add-on for Firefox is available to install at
https://addons.mozilla.org/en-US/firefox/addon/10434. It's based on the Open Search standard and uses the JSON interface supported by Firefox to retrieve autosuggestions.

Image of Live Search autosuggestions in Firefox

I'm glad to see this finally get out there since I was one of the popular demanders at work. If you're a Firefox user who's also a fan of Live Search then this is a must have extension. It's definitely improved my browsing experience when I've had to use Firefox.

By the way, it's an interesting insight into the different user bases to compare the suggested searches from Google with those from Live Search for a particular phrase.

Note Now Playing: Kelly Clarkson - My Life Would Suck Without You Note


 

Categories: MSN

From the blog post on the Office Live team blog entitled Looking ahead and bringing you even more we learn

Today, I wanted to share with you some exciting news about Office Live: To simplify and improve the customer experience around our Live services, we’ve made the decision to converge Windows Live and Office Live into an integrated set of services at one single destination. We think that just makes a ton of sense and goes a long way toward giving you a simpler, richer, better service that allows you to do more with one account.

Every day, more and more people are signing up for Office Live Workspace and Office Live Small Business (4 million of you so far!), as well as Windows Live (460 million to date!).

Secondly there’s the MSDN forum post entitled Working Together: Live Mesh and Windows Live by the Live Mesh team which informs us that

For some time now, many of you have expressed interest in seeing some sort of combination of Live Mesh and other Microsoft services. In order to further explore these ideas we would like to ask you to share with us the scenario(s) that you have in mind. 

What combination(s) are you interested in, and why? Whatever your interests, whatever problem you’re trying to solve or scenario you want to enable, we’d like to hear the details – and the more specific you can be, the better.

We know you have ideas – this is the place to share them!

Thank you,

The Live Mesh Team

I love it when things come together this way. There's been a lot of choice in Web-based storage solutions offered by Microsoft and some would argue that it's been too much choice. It will be good to how the cross pollination of ideas ends up working out between these various products over the coming months and years.

If you are interested in developer or end user scenarios around Web-based storage I recommend chiming in on the MSDN forum post linked above. It's your chance to give your feedback to Microsoft and help influence the direction of the most innovative technology product of the past year

Note Now Playing: Amy Winehouse - You Know I'm No Good Note


 

Categories: Windows Live

Sarah Perez over on ReadWriteWeb has a blog post entitled In Cloud We Trust? where she states

Cloud computing may have been one of the biggest "buzzwords" (buzz phrases?) of this past year. From webmail to storage sites to web-based applications, everything online was sold under a new moniker in 2008: they're all "cloud" services now. Yet even though millions of internet users make use of these online services in some way, it seems that we haven't been completely sold on the cloud being any more safe or stable than data stored on our own computers.
...
Surprisingly, even on a site that tends to attract a lot of technology's earliest adopters, the responses were mixed. When asked the question: "Do you trust the cloud?," the majority of responses either came back as a flat-out "no" or as a longer explanation as to why their response was a "maybe" or a "sometimes." In other words, some people trust the cloud here, but not there, or for this, but not that.

The question this article asks is pointless on several levels.  First of all, it doesn't really matter if people trust the cloud or not. What matters is whether they use it or not. The average person doesn't trust computers, automobile mechanics or lawyers yet they use them anyway. Given the massive adoption of the Web from search engines and e-commerce sites to Web-based email and social networking services, it is clear that the average computer person trusts the cloud enough to part with their personal information and their money. Being scared and untrusting of the cloud is like being scared and untrusting of computers, it is a characteristic that belongs to an older generation while the younger generation couldn't imagine life any other way. It's like Douglas Adams wrote in his famous essay How to Stop Worrying and Learn to Love the Internet back in 1999.

Secondly, people are often notoriously bad at assessing risk and often fail to consider that it is more likely that data loss will occur when their personal hardware fails given that the average computer user doesn't have a data backup strategy than it is likely to occur if their information is stored on some Web company's servers. For example, I still have emails from the last decade available to me in my Hotmail and Yahoo! Mail accounts. On the other hand, my personal archive of mail from the early 2000s which had survived being moved across three different desktop PCs was finally lost when the hard drive failed on my home computer a few months ago. I used to have a personal backup strategy for my home desktop but gave up after encountering the kinds of frustrations Mark Pilgrim eloquently rants about in his post Juggling Oranges. These days, I just put all the files and photos I'm sure I'd miss on SkyDrive and treat any file not worth uploading the cloud as being transient anyway. It is actually somewhat liberating since I no longer feel like I'm owned by all my digital stuff I have to catalog, manage and archive.

On a final note, the point isn't that there aren't valid concerns raised whenever this question is brought up. However progress will march on despite our  Luddite concerns because the genie is already out of the bottle. For most people the benefits of anywhere access to their data from virtually any device and being able to share their content with people on the Web far outweighs the costs of not being in complete control of the data. In much the same way, horseless carriages (aka automobiles) may cause a lot more problems than horse drawn carriages from the quarter ton of carbon monoxide poured into the air per year by an average car to the tens of thousands of people killed each year in car crashes, yet the benefits of automobiles powered by internal combustion engines is so significant that humanity has decided to live with the problems that come along with them.

The cloud Web is already here and it is here to stay. It's about time we stopped questioning it and got used to the idea.

Note Now Playing: Amy Winehouse - Love Is A Losing Game Note


 

Categories: Cloud Computing

I've been hearing the term deflation being bandied about by TV news pundits with Japan being used as the popular example of this phenomenon for the past few months. The claim is that if the trend of price drops in the U.S. continues then we will be headed for deflation. When I first saw these stories I wondered what exactly is wrong with falling prices? Well…

Everywhere you look assets are worth less than they were a year ago. Gas prices are lower, house prices are lower, and stock portfolios are lower. At first I considered this a net positive. According to Zillow my house is now worth 10% less than what we paid for it almost two years ago and my 401(k) lost about 35% during the 2008 calendar year. However I treated this as a "correction" since these were in effect paper losses since I bought my house to live in not to flip it and I'm not planning to spend out of my 401(k) until retirement. On the other hand lower gas prices and cheaper consumer goods at Christmas time had a real and positive effect on my bottom line.

In addition, despite the media's claim that people were hoarding we planned to ignore the hype and help the local economy by continuing our plans to have our bathroom remodeled and get a new car later in the year (my wife has her eye on the Ford Flex).

As each week passes I've been less sure of our plans to "help the local economy" and last week's announcement by my employer to eliminate 5,000 jobs within the next 18 months began to make the plans seem downright irresponsible. At this point we've decided to hold off on the purchases and are debating the safest way to hold on the money and still retain value. My behavior sounded familiar and I looked up Wikipedia for information about deflation in Japan it was interesting to see the parallels

Systemic reasons for deflation in Japan can be said to include:

  • Fallen asset prices. There was a rather large price bubble in both equities and real estate in Japan in the 1980s (peaking in late 1989). When assets decrease in value, the money supply shrinks, which is deflationary.
  • Insolvent companies: Banks lent to companies and individuals that invested in real estate. When real estate values dropped, these loans could not be paid. The banks could try to collect on the collateral (land), but this wouldn't pay off the loan. Banks have delayed that decision, hoping asset prices would improve. These delays were allowed by national banking regulators. Some banks make even more loans to these companies that are used to service the debt they already have. This continuing process is known as maintaining an "unrealized loss", and until the assets are completely revalued and/or sold off (and the loss realized), it will continue to be a deflationary force in the economy. Improving bankruptcy law, land transfer law, and tax law have been suggested (by The Economist) as methods to speed this process and thus end the deflation.
  • Insolvent banks: Banks with a larger percentage of their loans which are "non-performing", that is to say, they are not receiving payments on them, but have not yet written them off, cannot lend more money; they must increase their cash reserves to cover the bad loans.
  • Fear of insolvent banks: Japanese people are afraid that banks will collapse so they prefer to buy gold or (United States or Japanese) Treasury bonds instead of saving their money in a bank account. This likewise means the money is not available for lending and therefore economic growth. This means that the savings rate depresses consumption, but does not appear in the economy in an efficient form to spur new investment. People also save by owning real estate, further slowing growth, since it inflates land prices.
  • Imported deflation: Japan imports Chinese and other countries' inexpensive consumable goods, raw materials (due to lower wages and fast growth in those countries). Thus, prices of imported products are decreasing. Domestic producers must match these prices in order to remain competitive. This decreases prices for many things in the economy, and thus is deflationary.

The crazy thing is that this sounds like a description of the United States of America today. That's when I understood that the threat of a deflationary spiral is very real. If people like me start hoarding cash then businesses get less customers which causes them to lower prices in return. With lower prices, they make less money and thus need to cut costs so they have layoffs. Now the local situation is worse giving people even more conviction in holding on to their cash and so on. The bit about imported goods kicking the butts of locally produced items in the marketplace is also especially apt given the recent drama about the automobile bailout

Anyway, it looks like we are at the start of a deflationary spiral. The interesting question is whether there is anything anyone can do to stop it before it fully gets underway.


 

Categories: Current Affairs | Personal

A few months ago, Tim O'Reilly wrote an excellent post entitled Web 2.0 and Cloud Computing where provides some definitions of two key cloud computing paradigms, Utility Computing and Platform as a Service. His descriptions of these models can be paraphrased as

  1. Utility Computing: In this approach, a vendor provides access to virtual server instances where each instance runs a traditional server operating system such as Linux or Windows Server. Computation and storage resources are metered and the customer can "scale infinitely" by simply creating new server instances. The most popular example of this approach is Amazon EC2.
  2. Platform as a Service: In this approach, a vendor abstracts away the notion of accessing traditional LAMP or WISC stacks from their customers and instead provides an environment for running programs written using a particular platform. In addition, data storage is provided via a custom storage layer and API instead of traditional relational database access. The most popular example of this approach is Google App Engine.

The more I interact with platform as a service offerings, the more I realize that although they are more easily approachable for getting started there is a cost because you often can't reuse your existing skills and technologies when utilizing such services. A great example of this is Don Park's post about developing on Google's App Engine entitled So GAE where he writes

What I found frustrating while coding for GAE are the usual constraints of sandboxing but, for languages with rich third-party library support like Python, it gets really bad because many of those libraries have to be rewritten or replaced to varying degrees. For example, I couldn’t use existing crop of Twitter client libraries so I had to code the necessary calls myself. Each such incident is no big deal but the difference between hastily handcrafted code and libraries polished over time piles up.

I expect that the inability of developers to simply use the existing libraries and tools that they are familiar with on services like Google App Engine is going to be an adoption blocker. However I expect that the lack of of a "SQL database in the cloud" will actually be an even bigger red flag than the fact that some APIs or libraries from your favorite programming language are missing.

A friend of mine who runs his own software company recently mentioned that one of the biggest problems he has delivering server-based software to his customers is that eventually the database requires tuning (e.g. creating indexes) and there is no expertise on-site at the customer to perform these tasks.  He wanted to explore whether a cloud based offering like the Azure Services Platform could help. My response was that it would if he was willing to rewrite his application to use a table based storage system instead of a relational database. In addition, aside from using a new set of APIs for interacting with the service he'd also have to give up relational database features like foreign keys, joins, triggers and stored procedures. He thought I was crazy to even suggest that as an option.  

This reminds me of an earlier post from Dave Winer entitled Microsoft's cloud strategy? 

No one seems to hit the sweet spot, the no-brainer cloud platform that could take our software as-is, and just run it -- and run by a company that stands a chance of surviving the coming recession (which everyone really thinks may be a depression).

Of all the offerings Amazon comes the closest.

As it stands today  platform as a service offerings currently do not satisfy the needs of people who have existing apps that want to "port them to the cloud". Instead this looks like it will remain the domain of utility computing services which just give you a VM and the ability to run any software you damn well please on the your operating system of choice.

However for brand new product development the restrictions of platform as a service offerings seem attractive given the ability to "scale infinitely" without having to get your hands dirty. Developers on platform as a service offerings don't have to worry about database management and the ensuing complexitiies like sharding, replication and database tuning.

What are your thoughts on the strengths and weaknesses of both classes of offerings?

Note Now Playing: The Pussycat Dolls - I Hate This Part Note


 

Categories: Cloud Computing

I've been a FeedBurner customer for a couple of years and was initially happy for the company when it was acquired by Google. This soon turned to frustration when I realized that Google had become the company where startups go to die. Since being acquired by Google almost two years ago, the service hasn't added new features or fixed glaring bugs. If anything, the service has only lost features since it was acquired.

I discovered the most significant feature loss this weekend when I was prompted to migrate my FeedBurner account to using a Google login. I thought this would just be a simple change in login credentials but I got a different version of the service as well. The version of the service for Google accounts does have a new feature, the chart of subscribers is now a chart of subscribers AND "reach". On the other hand, the website analytics features seemed to be completely missing. So I searched on the Internet and found the following FAQ on the FeedBurner to Google Accounts migration

Are there any features that are not available at feedburner.google.com?

There are two features that we are retiring from all versions of feedburner: Site Stats (visitors) and FeedBurner Networks.

We have decided to retire FeedBurner website visitor tracking, as we feel Google already has a comparable publisher site analytics tool in Google Analytics. If you do not currently use Google Analytics, we recommend signing up for an account. We want to stress that all feed analytics will remain the same or be improved, and they are not going away.

FeedBurner Networks, which were heavily integrated with FeedBurner Ad Network, are no longer being supported. As with many software features, the usage wasn't at the level we'd hoped, and therefore we are making the decision not to develop it further, but to focus our attention on other feed services that are being used with more frequency. We will continue to look out for more opportunities for publishers to group inventory as part of the AdSense platform.

I guess I should have seen this coming. I know enough about competing projects and acquisitions to realize that there was no way Google would continue to invest in two competing website analytics products. It is unfortunate because there were some nice features in FeedBurner's Site Stats such as tracking of clicked links and the ability to have requests from a particular machine be ignored which are missing in Google Analytics. I also miss the simplicity of FeedBurner's product. Google Analytic is a more complex product with lots of bells and whistles, yet it takes two or three times as many clicks to answer straightforward questions like what referrer pages are sending people to our site. 

The bigger concern for me is that both Google Analytics and FeedBurner (aka AdSense for Feeds) are really geared around providing a service for people who use Google's ad system. I keep wondering how much longer Google will be willing to let me mooch off of them by offloading my RSS feed bandwidth costs to them while not serving Google ads in my feed.  At this rate, I wouldn't be surprised if Google turns FeedBurner into a Freemium business model product where users like me are encouraged to run ads if we want any new features and better service.

Too bad there isn't any competition in this space.

Note Now Playing: Lords of the Underground - Chief Rocka Note


 

Categories: Rants

A few days ago someone asked how long I've been at Microsoft and I was surprised to hear myself say about 7 years. I hadn't consciously thought about it for a while but my 7th anniversary at the company is coming up in a few weeks. I spent a few days afterwards wondering if I have a seven year itch and thinking about what I want to do next in my career. 

I realized that I couldn't be happier right now. I get to build the core platform that powers the social software experience for half a billion users with a great product team (dev, test, ops) and very supportive management all the way up the chain. This hasn't always been the case. 

I went through my seven year itch period about two years ago. I had always planned for my career at Microsoft to be short since I've never considered myself to be a big company person. Around that time, I looked around at a couple of places both within and outside Microsoft. I had some surprisingly good hiring experiences and some that were surprisingly bad (as bad as this thread makes the Google hiring process seem, trust me it is worse than that) then came away with a surprising conclusion. The best place to build the kind of software I wanted to build was at Microsoft. I started working in online services at Microsoft because I believed Social Software is the Platform of the Future and wanted to build social experiences that influence how millions of people connect with each other. What I realized after my quick look around at other opportunities is that no one has more potential in this space than Microsoft. Today when I read articles about our recent release, it validates my belief that Microsoft will be the company to watch when it comes to bringing "social" to software in a big way. 

~

In my almost seven years in the software industry, I've had a number of friends go through the sense of needing change or career dissatisfaction which leads to the seven year itch. Both at Microsoft and elsewhere. Some of them have ended up dealing with this poorly and eventual became disgruntled and unhappy with their jobs which turns into a vicious cycle.  On the other hand, I know a bunch of people that went from being unhappy or disgruntled about their jobs to becoming happy and productive employees who are more satisfied with their career choices. For the latter class of people, here are the three most successful, proactive steps I've seen them make

  1. Change your perspective: Sometimes employees fall into situations where the reality for working on product X or team Y at company Z is different from their expectations. It could be a difference in development philosophy (e.g. the employee likes Agile practices like SCRUM and the product team does not practice them), technology choice (e.g. wanting to use the latest technologies whereas the product team has a legacy product in C++ with millions of customers) or one of many other differences in expectations versus reality.

    The realization that leads to satisfaction in this case is that it isn't necessarily the case that what the organization is doing is wrong (e.g. rewriting an app from scratch just to use the latest technologies is never a good idea), it's just that what the employee would prefer isn't a realistic option for the organization or is just a matter of personal preference (e.g. the goal of the organization is to deliver a product on time and under budget not to use a specific development practice). Of course, these are contrived examples but the key point should be clear. If you're unhappy because your organization doesn't meet your expectations it could be that your expectations are what needs adjusting.

  2. Change your organization: As the Mahatma Gandhi quote goes, Be the change you wish to see in the world. Every organization can be changed from within. After all, a lot of the most successful projects at Microsoft and around the software industry came about because a passionate person had a dream and did the leg work to convince enough people to share that dream. Where people often stumble is in underestimating the amount of leg work it takes to convince people to share their dream (and sometimes this leg work may mean writing a lot of code or doing a lot of research). .

    For example, when you go from reading Harvard Business School articles like Microsoft vs. Open Source: Who Will Win? in 2005 to seeing an Open Source at Microsoft portal in 2008, you have to wonder what happens behind the scenes to cause that sort of change. It took the prodding of a number of passionate Open Source ambassadors at Microsoft as well as other influences to get this to happen.

  3. Change your job: In some cases, there are irreconcilable differences between an employee and the organization they work for. The employee may have lost faith in the planned direction of the product, the product's management team or the entire company as a whole. In such cases the best thing to do is to part ways amicably before things go south.

    Being on an H-1B visa I'd heard all sorts of horror stories about being the equivalent of an indentured servant when working for an American software company but this has proven to be far from the truth. There is an H-1B transfer process that allows you to switch employers without having to re-apply for a visa or even inform your current employer. If you work at a big company and are paper-work averse, you can stick to switching teams within the company. This is especially true for Microsoft where there are hundreds of very different products (operating systems, databases, Web search engines, video game console hardware, social networking software, IT, web design, billing software, etc) with very different cultures to choose from.

These are the steps that I've seen work for friends and coworkers who've been unhappy in their jobs who've successfully been able to change their circumstances. The people who don't figure out how to execute one of the steps above eventually become embittered and are never a joy to be around.

Note Now Playing: Estelle (feat. Kanye West) - American Boy Note