Ship Software OnTime!

The blog that helps you build great software

Archive for the 'Business' Category


iPhone Desktop: Unleash the Leopard in Your Pocket. $299.

Posted by Hamid Shojaee on April 3, 2008

Disruptive technologies are those technologies that brew up independently under the radar until all of a sudden they take over well established mainstream industries.

And, here’s my take on the biggest disruptive technology currently sitting under our noses, err…in our pockets: The Apple iPhone, and it’s potential to replace the traditional desktop / laptop computer. Imagine this:

What is the iPhone Desktop?

iPhone Desktop Specs The iPhone Desktop is essentially a dock / workstation for the iPhone. Pop your iPhone into the side-loading slot, and your iPhone goes into Desktop mode. The workstation becomes YOUR computer, whether you are using one at home, the office, or casually borrowing one at Starbucks, the library, or the airport.

Wherever you are, it’s YOUR computer.

At home and at the office, you can take advantage of USB storage, syncing only the essentials to your physical iPhone unit. For improved security, you may wish to keep some files on your .Mac account’s virtual storage and only walk around with music, pictures and videos in your pocket.

Incoming Call? No Problem!

So what happens when you are docked and receive a call? Just like the iPhone, the call takes over your screen and gives you the option to answer the call. However, advances will be made, and you will be able to optionally accept eligible calls (i.e. calls placed from other iPhones, iChat, or something similar) with video enabled. iPhone Desktop’s built-in iSight camera and microphone will be used to facilitate the phone call, in lieu of a USB or Bluetook headset.

Just in case it’s not perfectly clear, let me state this in the simplest terms possible:

The iPhone is not a phone, it’s a PC (or, it’s a Mac, if you prefer).

This is precisely what makes the iPhone a disruptive technology. It’s got OS X under the hood, and there’s no reason to believe Apple has fully exploited this tremendous advantage it has over other phones and portable devices.

Unlike its Windows Mobile counterparts, Apple builds the software AND the hardware, which means it is orders of magnitude more nimble when it comes to integrating the two into a solid device that can deliver unbeatable user-experience. When Apple wants to add a feature, whether to the hardware or software — they can just do it. They don’t have to wait for the next release of the software, or for hardware partners to come on board. They can just do it.

iPhone Desktop Pricing

The “Complete PC” part is what I want to emphasize, but let’s not leave out the fact that it includes a phone and an iPod media center, too. It lives in your pocket, and when it makes sense, it takes on the form of a desktop PC. Just add a bluetooth keyboard and mouse, and you’re still under $850 for a beautifully sleak, ultra portable computing experience.

But the real beauty of this (for Apple) is that the PC industry will continue to ignore the iPhone…until it’s too late. And, as an added bonus (for Apple), cell phone competitors will continue to treat the iPhone as just another phone…until it’s too late.

Apple’s 30+ years of hardware and software integration puts them eons ahead of their competitors in both industries. For years, Apple was derided for not opening up its platform to cloning. To many, their strategy was considered closed, limiting, and seemed short-sighted. Yet, now their persistence and accumulated hardware / software experience is obviously their greatest advantage.

The iPhone combined with the iPhone Desktop Dock represents a truly “Personal” Computer with capabilities sufficient for more than half of PC users today. Complete with web-browsing, email, casual games, YouTube and iTunes! The average PC user doesn’t need much else — remember “web-browsing” today means Google Apps and CRM, too.

With iPhone Desktop’s ability to connect external USB-based hard-drives, storage expandability is a non-issue, and, at just $698 for a complete system, it’s one of the world’s least expensive, most portable, well-equipped PCs.

Nothing else would even come close, actually.

Before you dismiss this by saying, the iPhone isn’t powerful enough to substitute for a PC, consider Apple’s tremendous leaps toward miniaturization: the iPod Nano and the MacBook Air. Do you honestly doubt they will be incapable of shrinking a Mac down to the size of an iPhone?

So What Does All of this Mean?

  1. Taking into account the doubling of CPU processing power approximately every 18 months, and the doubling of affordable flash storage approximately every 10 months, an iPhone 3 years from now will be about as fast as a MacBook Air, and it will come with nearly 200 Gigabytes of storage.
  2. If you’re a player in the computer industry (say, you make bug tracking software like my company Axosoft), you’d better take notice! Even if I’m wrong about all of the above, and I don’t believe I am, change is coming. Today’s Desktop PCs’ and laptops’ days are numbered. People (your customers) will want their computers and the Internet with them all of the time, and even lugging around a 3lb MacBook Air will be considered cumbersome.
  3. Microsoft’s Silverlight engineers had better pay close attention to Mac OS compatibility, especially on the iPhone. A number of ISVs and IT departments will rely on Silverlight to help keep their software relevant.
  4. In addition to the iPhone Desktop (or whatever they end up calling it), Apple will produce a more portable docking station alla today’s laptops. So, you can you choose to carry your docking station with you. It’ll be a 1- to 2-lb slim device, perhaps a clamshell design, that you can also slide your iPhone into. You’ll want to take with you when you write that Great American Novel, beach side or at the park.
  5. Within 3 years the debate will begin: should iPhone sales be counted as Mac computer sales? Within 5 years they will, and Apple will be number 1 in computer sales with nearly a 50% market share. As a corollary to that statement, Mac OS X (or Mac OS 11?) will be the number 1 operating system, in terms of new units sold.
  6. Apple will create a more robust .Mac service, allowing group accounts (whether personal or business) to take advantage of iPhone collaboration features and group syncing. Also, expect to be able to operate any full Mac computer you have at home or the office with “Back to My Mac” and grab any files you need using your iPhone or iPhone Desktop. Other remote desktop options will give you access to the Windows and Linux worlds, as well. At $99 per year per iPhone, .Mac will generate significant revenues for Apple.
  7. The next generation of iPhones will usher in the era of video conference calls. Voice calls will not go away, and will likely remain the most popular form of phone conversation. A “Conference Call” etiquette will emerge, including the expectation of conference calls occurring mostly by appointment and impromptu calls defaulting to voice. What teenagers will do with this feature…let’s not go there, but parents beware.
  8. Unless Apple plays its cards totally above board and learns how to build close relationships with partners, it will build a close relationship with the Department of Justice’s antitrust group within 10 years. If this happens, the distraction could be a prelude to the next disruptive technology, which will eventually replace the iPhone.
  9. iPhone security will become a notable segment of the IT security industry. More work will be done toward remotely disabling lost or stolen iPhones, GPS tracking will be added, and the current iPhone slider will be replaced with a fingerprint scanner. In 5 years, leaving your iPhone in a Taxi Cab will suck even more than it does today, because the device will be a more integral part of your life — but you’ll be able to recover from the loss easier and with less fear of data and/or identity theft.
  10. The hospitality industry will recognize customers’ demands, and provide docking stations in restaurants, coffee shops, hotels, and wherever else it makes sense.
  11. Laptops and Desktop PCs won’t go away for a long time, but their market share will shrink dramatically. Games, 3-D rendering, faster compilers, and beefier servers will continue to push the hardware limits and processing power of CPUs and video cards. Niche markets.
  12. John C. Dvorak will be proved wrong yet again.

For More on the iPhone Desktop…

Angelo Coppola (Axosoft’s Marketing Director) spent a day participating in this thought experiment with me, and he published a behind the scenes article in his blog at Axosoft’s community site. The article (along with the image of the iPhone Desktop’s many Photoshop layers scattered all over the place) is worth a look.

Posted in Business | 12 Comments »

Seagate Suddenly Realizes it’s in Storage Business

Posted by Hamid Shojaee on March 24, 2008

A few months ago, I made fun of Seagate for not knowing the business they are in. Today, it looks like Seagate has woken up and realized they are about to lose their shirts to the SSD (Solid State Drive) manufacturers. Surprise! They apparently had forgotten that they are in the storage business, not the hard drive business. While Seagate makes perhaps the best hard drives in the world, nobody gives a damn about hard drives. People care about storage.

Seagate’s response to the emerging SSD market is in the form of lawsuits. It’s a desperate attempt to try and stop the SSD manufacturers. It’s pathetic actually. Seagate’s CEO goes as far as to actually dismiss SSDs as a realistic alternative to disk-based HDs. If he truly believed that, he wouldn’t be throwing around law suit threats. But even funnier is that instead of responding to the threat by quickly reorganizing the company and becoming competitive in the SSD market, his response is to slam the other technology. Yeh, that’ll work! That’s why we all ride horse and buggies to work.

Bye bye Seagate! It was nice knowing you while it lasted. You have about 5 years of life left before you become a niche player.

Posted in Business | No Comments »

The Scorecard: Apple, Dell, Google and Microsoft

Posted by Hamid Shojaee on January 21, 2008

Last week I attended MacWorld for the very first time. I was the only attendee running Windows Vista on a Dell notebook. I had to avoid Jobs just so I didn’t get kicked out of the event. If he’s quick to tell a fan how rude they are for requesting a picture, imagine what he would have told me if he would have seen me with a Dell!

The Jobs Keynote was absolutely awesome. One of my favorite announcements was the major upgrade to Apple TV with HD Movie rentals. To me, this completely eliminates the need for either HD-DVD or Blu-Ray. The MacBook Air was also a phenomenal product. Unbelievably thin!

But the MacWorld event was far from perfect. In fact, when compared to Microsoft events it was the worst event I had ever attended. I have been to quite a few Microsoft events including PDC, TechNet, Mix, WWPC and several internal events and I had never seen anything as poorly organized as the MacWorld event. Everything from the MacWorld web site, to event guides, schedules, registration, food and staff was the worst I had ever seen. Considering how insanely great Apple products are, I was expecting an Apple-like quality to the event, which did not exist. The event was so amateur in flow and feel that a typical Microsoft event attendee would have guessed this was the first event of its kind. Even then, it would have been inexcusable.

That triggered me to think about a scorecard for four of the main tech companies in our industry: Apple, Microsoft, Dell and Google. Each of these companies is exceptional at something, but none of them are great at all. Without any scientific data to back my claims, here is how I would personally rate the best company in each category:

Apple, Dell, Google and Microsoft

Operating Systems – Apple’s Tiger and Leopard both outshine Vista for a number of reasons: performance, overall system responsiveness, included user apps, system stability and better search. As an operating system, Apple’s OS X is clearly better than Vista.

Notebooks – If Apple’s notebook designs, magnetic power cords, slot load DVDs, weight or ultra small size had not won you over, the fact that each of Apple’s notebooks outperform the others in their class should get you to notice. The MacBook Pro was named the fastest Windows notebook reviewed by PC Magazine! There’s no question Apple makes the best Notebooks.

Desktops – Although Apple’s desktop offerings are somewhat limited with the iMac, Mac Mini and Mac Pro, there aren’t comparable systems that come close in packaging, size and performance in any of the categories. Dell’s XPS All-in-one is a blatant copy of the iMac. It’s too little too late.

Servers – Dell’s server line still outshines Apple in filling the variety of needs as well as beating Apple on price and the badly needed services for high-availability.

Hardware Variety – Dell is the hands down winner in providing the largest variety of hardware. Ironically, this could be a double-edged sword for them making it much more difficult to improve a product line that contains hundreds of products vs. just dozens.

Hardware Configurability – Again, Dell comes out ahead of Apple on configurability, but once again, this is a double edged sword. While it’s great that Dell offers 10 different video cards, the lack of focus ensures a hit or miss when it comes to drivers.

Product Aesthetics – I don’t need to comment on this one. Most companies couldn’t spell Aesthetics until Jobs came back to Apple.

Web Applications – Google is the clear winner when it comes to web applications for a variety of reasons: super fast pages, no clutter, ads that you don’t mind, always available and free. Microsoft’s MSN and other web offerings have always fallen short on all of those criteria.

Developer Tools – There’s no question that Microsoft takes the cake on this one. The Visual Studio product line has been a slam dunk winner with developers, thanks in large part to Scott Guthrie. Scott is one of the only remaining executives at Microsoft who gets it, but the rest of the world is catching up fast and Scott is fighting an uphill battle with the rest of gang at Microsoft.

Developer/Partner Programs – Microsoft again clearly has the better developer and partner programs with Empower ISV, Certified and Gold partnerships. They also have a longer history of being relatively nice to partners when compared with Apple (or even Oracle). Even Steve Jobs admitted that Microsoft has always been better at partnering that Apple. The shaky iTunes partnerships are a great example of Apple failing to keep even large partners happy.

Conferences & Events – If you’ve ever been to a Microsoft event, you know that registration is fast, organization of class schedules and web site management of individual schedules rocks and the abundance of food, drinks and snacks are nearly overboard. By contrast, I have nothing good to say about the MacWorld logistics and with the exception of the MacWorld keynote, the rest of the contents are on par.

Innovation – Apple is the most innovative large company in existence today. They are the only company that doesn’t shy away from building everything that goes into their products, both hardware and software. Google and Microsoft have stuck with software while Dell has stuck with hardware and even with the focus, none of them have done a great job.

Customer Service – This was a tough one. Microsoft and Google are clear losers in this regard. For me, the race was between Apple and Dell. On the consumer side, Apple wins hands down because Dell has outsourced its support to an incompetent company. On the business side, if you have the right account, Dell win beats Apple, but since Dell only wins IF you happen to be a valued customer, I had to give it to Apple.

Customer Comes First – Microsoft is the only company that puts customers first at all cost. They clearly listen to their customers and they react fast. None of the other companies come even close. Google and Apple are too closed from the outside to put customers first and in Apple’s case, they have clearly shown they don’t mind slapping a few customers here and there. Dell does a decent job as witnessed from the variety of computer lines they offer.

Return Policy – Dell takes the prize on return policies. No hassle, 30 day returns. In contrast, if you take a brand new computer back to an Apple store that you bought earlier that day, they’ll want to charge you a 10% restocking fee. Not cool.

Warranty Policy – Again, Dell’s warranty is significantly better and they actually send you replacement parts to fix your computer. Apple expects customers to send back their machines. Please!

Corporate Transparency – Microsoft is by far the most transparent of the companies with the most employee bloggers and for the most part, they are free to say what they want. Microsoft even has dedicated staff that participate in user forums, help user groups and other communities around their products. None of the others come even remotely close.

Employee Accessibility – Again, Microsoft’s employees are the most accessible. They are the most likely to return an email, escalate an issue or even take your phone call.

Passion – The measure for a company’s passion has to come from the users of their products. Clearly Apple has the most passionate users who often would be willing to part with a limb than with their Apple products.

Environment – This was a tough call. With Google actively promoting green technologies, using solar power for 30% of their electrical needs and subsidizing the purchase of hybrid cars for their employees, I could have easily called it a tie with Apple. However, I decided Apple has a much more difficult job of being environmentally friendly and they have taken a very proactive approach to the issue with their products, designs, packaging and even an environmental activist on their board (Al Gore).

Overall – If I could just own 1 product from any of the above companies, my decision would only be amongst Apple products. Nobody else would even get a consideration. It’s an easy choice to pick Apple as the overall winner amongst tech companies who are doing [most] things right.

So if you’re wondering why I still walk around with a Dell notebook, the answer is I was waiting for MacWorld to make sure I purchase the right product. My MacBook Pro is on its way.

Posted in Business | 13 Comments »

Marketing is the Product’s Job

Posted by Hamid Shojaee on January 14, 2008

Fiji water travels more than 5,000 miles to get to your handsThere is a view in the business world that “a great salesperson can sell ice to an Eskimo.” I used to think this was absurd, until I found myself sipping water from a bottle of Fiji. With a little research, I realized that this $15 billion industry known as “bottled water” didn’t even exist 20 years ago. 20 years ago, everyone was content with water that flowed from their faucets and drinking fountains, but all of the sudden we have a preference for water that travels more than 5,000 miles to reach our hands and we’re willing to pay hundreds of times more than a glass of water from a reverse osmosis filtered faucet (equally good in quality).

Wow! I’m an Eskimo buying ice.

The business wisdom that “a great salesperson can sell ice to an Eskimo” speaks the truth. Here is a product that requires zero R & D. Any one of us could make equally good bottled water in our own homes as the multi-billion dollar counterparts and yet a company out in Fiji or France or half-way across the country is successfully selling this product to us. How can that be?

An even worse example of this type of successful salesmanship is of the millions and millions of people (myself included) who have bought PCs that were preloaded with Microsoft Windows when they already had a license of Windows they intended to use. In fact, most software developers I know wipe out the operating system that ships with their machine and install their own licensed copy. I have personally paid for at least 15 or 20 copies of Windows XP Home Editions that were pre-installed on Dell machines, even though I have never ever used Windows XP Home Edition on any machine.

This is like selling ice to Eskimos for the purpose of throwing it in the ocean. Except, I guess, that I had a choice when I paid for that bottle of Fiji water, and I didn’t have the choice of buying a computer with no OS from Dell.

Of course, these extreme examples of gaming the consumer are rare, hard to plan for and eventually, they die out. With environmental issues becoming more important to Americans every day, buying water from half-way around the world is becoming less and less appealing. Eventually, it will end.

And while Microsoft is working hard to create the image of “innovator” and a “fair competitor,” more than 20 years of forceful salesmanship has finally caught up with them. The technology veterans of our industry are more skeptical and negative towards Microsoft’s efforts now than they have ever been. It will take a while before the tech industry forgives Microsoft.

Companies That Earn Respect

Over and over I’m finding that the companies I respect the most and and get excited about are those that build products that market themselves. Just about everyone who has played the Nintendo Wii in the past year has become a spokesperson for the company. Google’s marketing budget in its first 5 years was virtually non-existent. YouTube became a household name before it even knew how to spell marketing. Before anybody had ever seen a Toyota Prius ad, there was a waiting list to buy the car.  For 7 years in a row, owners were marketing the car as if they were getting a kickback from Toyota.

So, is it possible to sell ice to Eskimos? As absurd as that sounds, yes it’s possible. But given the choice, why would you choose to swim upstream and work really hard at “selling”? Yes, it’s even possible that with the right strategy, timing and square packaging, you might even be able to do extremely well with a product that needs a lot of marketing. But you might find that putting that energy and effort into building a product that can sell itself will be a better investment and create more loyal customers.

Create a company and a product that earns people’s respect and you will find your marketing is already at least half done.

Posted in Business | 1 Comment »

Lessons from Microsoft: Innovation and Competition

Posted by Hamid Shojaee on January 7, 2008

Innovate to Create Better SoftwareWhile I was at Microsoft, they had programs like “Sun Down” and “Beat Oracle” that took direct aim at competitors Sun Microsystems and Oracle. They provided the sales teams with talking points and when it came to larger deals, everyone was available from devs to PMs or even Steve Ballmer, if it meant killing the competition — even at a loss.

Microsoft plays to win. Yes, to a fault.

Killing the Competition

I’ve been paying attention to the software business for the last twenty years or so, and in that time I’ve watched Microsoft nearly wipe out WordPerfect, Lotus, Stac, Apple, Novell, Netscape, AOL and Sun just to name a few. They’ve had their market success, not by innovation, but rather with the strongest showing of competitiveness, and a willingness to do whatever it takes to win.

So, if winning meant OEM deals that bound hardware vendors to not install other OSes on any machines they sold, so be it. If winning meant making deals with ISPs that disallowed the distribution of Netscape, while including IE as an “inseparable” component of the OS, so be it. If winning meant copying every innovative aspect of Java (like virtual machine, byte code, garbage collection, etc. almost to the letter) with the introduction of C#, so be it. Who can argue the success Microsoft has realized by placing competitors into the middle of their crosshairs and firing.

They do an incredible job when they focus on beating a competitor. It has been a main driving force of the company since its earliest days.

When your main driving force is beating the competition, what do you do when you’ve actually beat them? That’s what happened to Microsoft by the late 90s. They had beaten virtually all of their competitors. They had beaten Apple so bad that they were willing to give them $150 million cash to help breathe back some life. Netscape was all but destroyed.

By 2000, Microsoft’s market share of Operating Systems and web browsers were both in the high 90% range. In 2001, Microsoft put out Windows XP, it’s best version of Windows to date and Internet Explorer V6, the best browser at the time.

Then, Microsoft seems to have had no idea what to do next. There were no more serious competitors to pummel in these areas, so it shifted its focus on to Java and Oracle (which happened to be during my time at the company). In 2001, everywhere you went (inside of Microsoft), you’d hear Sun, Oracle, AOL and LAMP (the collection of Linux, Apache, MySQL and PHP). By this time Google was well on its way, but no attention was being given to Internet search. Microsoft believed that AOL’s strategy of locking in Internet Users and shoving content down their throat (as AOL had done with its acquisition of Time Warner) was a good strategy that needed to be copied and a competitive threat that needed to be beaten. So the focus was on AOL rather than Google or Yahoo.

Ballmer is famous for looking for billion-dollar market opportunities and in 2001, Google wasn’t a billion-dollar competitor. In order for a market to be worth a billion dollars, it has to already have some major competing players. That’s where Ballmer is short-sighted. If the year was 1979 again, Ballmer wouldn’t bother with the OS business, because it would have been to be worth only a few million.

Vista and IE 7

After the release of Windows XP, it took Microsoft another 5 years in a scrambled effort to put out another version of its Windows operating system. 5 years of work on a world-class OS wouldn’t be so bad if Microsoft had nailed it with Vista, but it was obvious that Vista missed the mark in a big way. First, some major compelling features were dropped in the final year to get Vista out the door. Second, it was plagued with all kinds of bugs from device drivers to missing features. Third, there were definite signs of “borrowing” from Apple’s now resurging OS X.

Internet Explorer had a similar 5-year absence. It wasn’t until Firefox started to make headlines capturing 10% of the browser market that Microsoft started to take note. Again, it was a quick push to fight off the competition. So after 5 years of intensive development on IE 7, Microsoft gave us tabbed browsing. As Microsoft had predicted, the “WOWs” started coming in 2007. Except, it wasn’t what Microsoft had hoped. Instead of “Wow, I can’t believe how awesome Vista [or IE 7] is,” it was “Wow, I can’t believe how lame Microsoft has been all these years and I’m just starting to realize it now!”

Microsoft’s focus on competition has made them one of the most successful and profitable companies in the world. It’s hard to argue with that. There is no other company in our industry that comes even close to adding $16 billion in profits with the passing of each year. In 2008, Microsoft will make another $16 billion or more in profits — more than Apple, Google, Sun and Oracle combined. But 2008 will also mark a turning point for Microsoft. It will feel the heat from the innovation machines at Apple and Google more than ever before.

Years of being competitive-driven, rather than innovation-driven have caught up with Microsoft.  A negative, anti-Microsoft sentiment was planted in the tech world about 10 years ago and it’s coming into maturity.  The tech elite have a beef with Microsoft and rightfully so. It’s not always about profits.

Focus on Competition and You’ll Kill Innovation

The lesson here is not to ignore your competition. On the contrary. Microsoft has shown us that at the very least, it’s important to know your competition. You can’t ignore competition. But like everything else in life, there needs to be balance. Microsoft has been historically overly focused on competitors and therefore, it has been plagued with an image that lacks innovation. It’s not just an image, it’s true. That’s why no matter how much they spend on PR, it’s a lost cause.

Their lack of innovation has been proven with 5 years of nothingness from the OS and IE teams during a time when there was virtually no competition. When the competition started to innovate, Microsoft’s OS and IE teams woke up, not with innovative new features of their own, but simply playing catch up and copying the innovation that was coming from competitors.

Now Microsoft is paying the price. OS X is making huge gains in market share and Firefox’s momentum continues. 2008 will be the year of Apple. Before the year is over, Apple will have double-digit market share and the sea of switchers from a Windows-only PC to a Macintosh will seem unstoppable.

Microsoft, Apple and Google are clearly the giants of our industry. Most of our projects pale in size comparisons, but there are clear lessons to be learned by watching the giants dance. If you find your project’s requirements read awfully close to the feature set of a competing product, your project is lacking innovation - it’s a Microsoft-like project. If you spend more of your day worrying about what your competitors are doing vs. thinking of new ways to solve your customer’s problems, you’re spending too much time on the wrong stuff.

Companies that release mega-hit products generally share one thing in common: a different approach. Put another way, they share the drive to innovate. They focus little on having another checkbox next to a feature to make their product look as good or better than a competitor. They let the marketing department worry about the checkboxes. Instead, they spend their time building a solution in a way that has never been built before. That, in itself is the best possible way to market the product. Innovation creates dedicated, loyal and sometimes evangelical customers who go out there and sell your product.

Don’t worry about your competitors. Innovate.

Posted in Business, Development | 17 Comments »

Rules for Being a Green Software Engineer

Posted by Hamid Shojaee on December 24, 2007

Yes, Develpers CAN be More Green - it’s our ResponsibilityRecently, I got a link to The Story of Stuff by Annie Leonard. This is an amazingly well done 20-minute video about how stuff is made, sold and disposed. She does a phenomenal job of putting the Story of Stuff together and selling the viewer on the importance of being Green. If you only have 20 minutes, I’d rather you watch her video than read this article, so go do that if you haven’t already.

Then I got to thinking, as software engineers, what’s our responsibility for being green? I did a couple of searches and ended up with nothing. The general view appears to be that software developers are automatically green. After all, how could software not be green? It’s just a bunch of bits, right? Software hardly has an environmental impact, or so is the consensus.  Can software be any more green than it already is?

As I thought more about the subject, I realized that in fact there is a huge variance in software greenliness (new word?).  The notion of green has always existed in software development under a different name: “Simple!”  Yes, simple, is the word we have used to describe the most green software in our industry and some of the most successful software products of all time have been the greenest solutions. I’ll get to some examples in a minute.

But software developers don’t think in terms of developing green software.  On the contrary.  Because we assume all of our solutions are by default green, we end up doing things that have a huge negative environmental impact without realizing it.  As software engineers we rely heavily on a few fundamentals to help us determine the best possible solution:

  • Moore’s Law - By far, the most influential theory on software development for more than 4 decades has been Moore’s Law. Not truly a law of nature or science in the traditional sense, Moore’s Law was simply an observation based on the historical trend of integrated circuits approximately doubling their number of transistors every couple of years. Faster, cheaper and smaller computers being just around the corner has been the most perfect argument for writing slower, bloated and more expensive software for millions of developers over the years. I confess, I have been one of them.
  • Cost of Development - As software engineers we are taught to do cost analysis in the following way:

- Algorithm X takes 1 month to develop and takes 1 minute to finish its calculations
- Algorithm Y takes 2 months to develop and takes 30 seconds to finish its calculations
- The resulting algorithm will be run thousands of times every day, enough to keep at least one or two servers extremely busy.
- Which algorithm should we choose?

We would do a quick cost analysis and conclude that 1 man-month of a developer’s time (in the US) costs at least 2 or 3 times more than an additional server. It would be hard to argue for choosing Algorithm Y when the up-front hard costs are 2 to 3 times as much as Algorithm X.  So the slower, less green, Algorithm X wins.

  • Laziness - As software engineers, we hate solving the same problem over and over again, so we build libraries of code and reuse other libraries as much as possible. This is generally great and very green! But, increasingly, we rely on 3rd party components that are thousands of times larger than the portions we actually want to use. As a result, we ship a product that requires ten times or a hundred times more disk space and memory than if the product was developed completely in-house. Of course, developing completely in-house could mean you’ll never finish the product and is not practical, but like everything else in life, there’s probably a good balance that can be maintained that makes sense for the project.

We are taught these things in school and at work. Being efficient from an economical standpoint, not a coding one, is the most important rule. Laziness and not reinventing the wheel at all costs is a trademark of a software engineer’s mentality and we can always rely on Moore’s Law to automatically solve our coding problems within a couple of years. By following the traditional wisdom, software engineers can save a little on development time, but very directly we are forcing the rapid adoption of newer, faster PCs with more memory and disk space.

We, as software engineers, are the number one marketers of hardware. We help PC manufacturers sell hundreds of millions of PCs every year just so users can run our software at a reasonable speed. That’s why when the ship-date of a product like Windows slips, stock analysts lower the estimated sales of Dell and HP. But it’s not just Windows that helps sell hardware - Windows just happens to have the most impact because it’s the world’s most popular software application. The new Windows Vista Flip 3D feature that allows you to switch between apps will probably be responsible for the sale of millions of new machines because of how painfully slow it runs on older systems.  This new feature of Vista is by far the most Visible - it’s even in the Vista commercials - so it will be the first thing that any new Vista user will want to try.  When they realize it doesn’t run on their machine, it’s time for an upgrade.

So as software creators, we are largely responsible for the adoption of new hardware. The smallest things that we do can make a big difference. We can’t simply wash our hands free of the environmental responsibility and put the blame on the hardware guys. Sure they want to sell more hardware, but we’re essentially their free sales force.

Rules for Writing Greener Code

I propose a set of software development guidelines for developing greener solutions:

  1. Choose Faster Code over Future Hardware. Yes, if you wait 2 years and run your code on a future device, it will run twice as fast as it runs today, but that’s exactly the wrong attitude. To be a green developer, don’t use the fastest machine you can find as your acceptable performance benchmarking system. Instead, use a machine from 2 or 4 years ago with less memory, slower CPU and smaller hard drive. If it can run on that machine with acceptable performance, your contribution to the rapid replacement of hardware is significantly less.
  2. Include Environmental Costs in Your Cost Analysis. You might find that writing slower code and buying more servers costs a lot less than the cost of another month of development, but don’t forget the hidden costs of more servers. These days the data center electricity alone that a server uses in a given year can cost as much or more than the server itself, not to mention rack costs, cooling costs, bandwidth costs, software costs and the environmental impact of all the materials and manufacturing processes that goes into creating the server itself.
  3. Be Memory Conscious. With most developer machines having 2 or 4GB of memory these days, developers often forget that there are hundreds of millions of PCs out there with just 256MB of memory (or less!). Even 256MB is an unbelievable amount of RAM. I couldn’t imagine having that much memory on a computer at the start of this decade and now I have 2GB! It’s because developers use memory as if it was free. The argument is that memory doesn’t cost anything. You can pickup 1GB sticks for under $100! The problem is for a large number of machines that are not capable of having 1GB of memory, you need to replace the entire machine and guess what happens to the old machine?
  4. Build in-house When Possible. Using 3rd party components and external controls can be a great way to save time in the development of an application, but make sure you’re not using 100MB worth of components for 1MB of gain. If the ratio of things you use in your 3rd party controls to things you don’t use is 1:100, that’s bad. It’s not just bad for the environment; it’s even bad for your end-user experience.
  5. Go Back and Solve it Again. Every developer knows at least a dozen areas of their software that they could have coded more efficiently. Often the performance of re-solving critical areas can gain an order of magnitude in performance improvements. But we never go back to do it again because we’re busy adding the next new feature. Going back and solving problems we have already solved might seem like a waste of time, but it’s often very satisfying to cut down hundreds of lines of code to just a few lines and make it much much faster.

How Coding Green Translates to Shipping Great Software

So you might be asking yourself how do these rules relate to Shipping Great Software OnTime? To answer that question, let’s take a look at some of the characteristics of green software:

  • Simple - The more Green a software application is, the simpler it is. So if two products can solve the same problem equally well, the greener solution will generally win. Examples include Google Search beating Alta Vista. Gmail beating Hotmail and Yahoo Mail. Flickr beating virtually all other photo sites at the time. The trend is clear.
  • Fast - Greener software is going to execute faster and as a result enjoy faster adoption. Again, given the choice of two products that solve the same problem equally well, the one that executes faster will win. A great example here is the rapid and surprising adoption of FireFox. Although it still has not beat IE (a product that ships with the OS, giving it a significant marketing advantage), the adoption of FireFox has been a phenomenal and surprising success. Between IE and FireFox, clearly, FireFox is the greener tool which runs faster and consumes significantly less resources. When you ask a FF user why he or she switched, the number one reason is that FF is much faster.
  • Lower Resource Usage - Greener software takes less system resources to execute. Again, given the choice of two products that solve the same problem equally well, the one that requires less resources will be preferable. Although FireFox can be used as an example again, I’m going to use the example of Apple’s OS X. As far as operating systems go, OS X is definitely greener than Windows. The latest version of Apple’s OS X Leopard runs well even on a PowerPC G4. That’s a chip that’s about 4 generations behind today’s latest CPUs. That would be the equivalent of getting Windows Vista to run on a Pentium 3. When you ask recent “switchers” from the Windows platform to OS X why they switched, a recurring theme is that OS X is faster, more reliable, it’s not as choppy and things just work. Lower resource usage is a significant advantage of OS X in this case and you sure don’t see a lot of people switching the other way to ask why they switched.

I suspect that some of you might want to ask me “then why didn’t DOS beat Windows? DOS is clearly the greener OS.” The answer is that the solution has to solve the problem “equally well.” DOS, although greener than Windows, was also single-threaded and provided an awful text-based interface. It was not intuitive to the average user and was limiting in hundreds of other ways. So DOS did not provide an equally good solution to the OS problem.

Writing greener software could be a significant competitive advantage, and as a byproduct, it could be better for the environment. It seems to me like a big win all-around.

Posted in Business, Development, Team | 5 Comments »

What’s the Developer’s Incentive to Ship?

Posted by Hamid Shojaee on December 17, 2007

Developers Must have an Incentive to Ship in order to Ship Software On TimeThe company always has a substantial incentive to ship. Usually, it’s financial. If you don’t ship the software, you can’t sell it. If it’s an internally used tool or a line of business application, then the company’s incentive to ship is to increase user productivity (again a financial incentive). To the company, shipping the software affects the bottom line and the incentive to ship is clear.

But what’s the incentive to ship for the software developers? Those are the guys that control the real ship date.  In nearly every company I have ever seen, there is virtually no incentive to ship for the developers. In fact, in most companies, developers have an incentive not to ship! Sure, you can argue all you want that if they don’t ship, they risk the chance of losing their jobs as the company might suffer layoffs. Theoretically, improving your company’s financial well-being so you can keep your job should be a big incentive.

But Windows Vista didn’t ship for 5 years, 3 years later than the original plan. How many developers lost their jobs? Zilch. Plenty of companies are financially secure enough to withstand slipping ship dates without resorting to layoffs. Whether the software is for internal use or if it’s the core product that the company sells, developers don’t feel much pain from slipping ship dates. As the ship date continues to slip more and more, the sense of urgency, importance and chaos continually increases, adding some spice to an otherwise boring job. So there could even be hidden incentive not to ship. That’s a flawed system.

If a developer does the identical work the day after the software ships as the day before the software ships, from the developer’s perspective, shipping software is a non-event. After all, what’s the big deal about shipping software if I’m going to continue to do the same thing I was doing yesterday? Some individual team members are independently goal driven to ship. Hopefully, that’s the makeup of your team. But if I had to guess, judging from the norm of slipping ship dates for software projects everywhere, I suspect the vast majority of teams are made up of developers who are not overly anxious to ship software. What can you do?

Building an Environment that Encourages Shipping

Google is famous for the “20% time” it gives its engineers to work on projects they like. The way this works is that engineers are allowed to spend 20% of their time on whatever project they want, not necessarily the one that the company is banking on. Ask any engineer what they think of Google’s 20% time and they’ll say something that resembles “awwweeeesome!” But ask a manager or an executive of any company about Google’s 20% time and they are filled with fear. Fear that something like that would cut their productivity by 20% - how could they possibly afford that? The typical executive might even think Google is leaving productivity room on the table and at some point they could eliminate the 20% time and improve productivity by 25% (going from 80% to 100% is a 25% increase for those of you keeping track).

That’s a short-sighted view. Here’s why:

Most engineers at Google “save up” their 20%-time until the appropriate time in their main projects when they can work on their fun projects. Take a wild guess as to when the appropriate time to work on their 20% fun project is. You guessed it. It’s immediately after their main project ships!

Now imagine you are an engineer who [thinks s/he] has a brilliant idea. Over the past 8 months, you have saved up 30 days of 20%-time to work on your brilliant idea, but the only way you can start working on it is if you ship your main product!

How driven are you going to be to ship your project as soon as possible when you know your fun project won’t start until your main project ships? Are you going to allow scope creep? Are you going to work on that cool new feature you thought of that nobody cares about or are you going to hammer out the features from your todo list? Now you understand why Google’s release cycles and continuous application improvements have been relentless and have far outpaced the industry average.  They have a pool of engineers who are eager to get on with their own projects and the only way to do that is to ship.  Now that’s motivation!

We do something very similar at Axosoft. We never called it 20% time. We just called it a “fun side project.” After major releases of OnTime, we generally brainstorm and come up with a number of side projects that developers want to work on. They can do whatever they want. Software, hardware, web apps, automatic tuna sandwich maker, whatever. Then we spend the next 30 days working on fun projects.

This is the equivalent of taking a vacation, but rather than being stressed by the typical airport security, hotel and other vacation-related nightmares, you actually get to do something you love! For most developers it’s even better than a vacation! Software engineers love to build stuff.  Most of us get a tremendous amount of satisfaction from seeing ideas come to life.  The more exciting the ideas, the more satisfaction we get and nothing is more exciting than our own ideas.

It’s easy to provide a good incentive for developers to ship.  Just don’t think of it as a loss in productivity!

Posted in Business, Development, Team | 5 Comments »

You May Not Know the Business You Are In

Posted by Hamid Shojaee on December 10, 2007

It’s Important to Know if You’re in the Sailboat Business or TransportationHere is a simple question:

  • What is the business of Seagate and Western Digital?

If you confidently answered “Hard Drives!” you’d be wrong.

Unfortunately, it’s clear that both Seagate and Western Digital themselves define their business as the “hard drive” business. How short-sighted. It’s highly unlikely that I will continue to own a hard drive within 3-5 years. Neither will you. Within 10 years, it’s unlikely that anybody will be purchasing hard drives for any purpose.

Why? Because there will be better, faster, lower power consuming alternatives with no moving parts. These alternatives exist today. Flash comes to mind, but price has been a barrier. While flash memory capacity is doubling every 10 months, flash prices drop by half. Hard drives have had a good 50-year run and Seagate is clearly in the hard drive business. Even though it’s clear what the future holds, Seagate and Western Digital don’t seem to be making the right moves to position themselves appropriately to take advantage of the disruptive technology that awaits them.

If I owned any Seagate or Western Digital stock, I would dump it now.

Flash is a disruptive technology. It’s a lot like what motor boats were to sail ships in the 1800s. Motor boats could go much much faster, but they were relatively small and their range was extremely short. Sailboat makers thought they were in the sailboat business and completely ignored the motorboat business, seeing them as just a short-range toy. Of course, over time, motorboats became better and their range eventually had the ability to cross the Atlantic. As a result, none of the sailboat manufacturers of the time were able to survive this disruptive change while motorboat producers thrived.

The problem was that they were all in the transportation business, but they didn’t see it that way. The people purchasing sailboats didn’t care about sailboats. They cared about getting people and merchandise from point A to point B as quickly and economically as possible. Over time, motor boats did a much better job. Eventually, airplanes did a better job for carrying people and the transportation of people via motorboats business also died. Today’s cruise liners are in the entertainment business, not transportation.

There are, of course, numerous other examples. CDs to tapes, MP3s to CDs, DVDs to VHS, but for now, let’s get back to Seagate, hard drives and flash. So is the Hard Drive market slowly going to transition to the Flash market? The answer is no. The storage market will remain the storage market.

People in need of storing information digitally will store it wherever is most convenient, fast and economical. Sound familiar? Do you really care about hard drives or do you just want to store your files? If the web or Google could store your files as conveniently, fast and economically as a hard drive, that’s where you’d store your files. But before we get to web storage, Flash will beat Hard Drives. Hopefully Flash memory makers will not make the mistake of thinking they are in the Flash business. Eventually something like DNA-based storage (or something entirely different) will beat out flash. Anybody in the flash business will go out of business, but the storage business will continue to thrive and expand.

What Business Are You In?

If you are a Software Engineer, don’t call yourself a C# developer or a Java developer. That’s the equivalent of Seagate being in the hard drive business. What happens when nobody needs a Java or a C# developer anymore? If you think that can’t happen, just look at all the Cobol and Ada developers today. How many do you know?

The same applies to your business. It’s time to think long and hard about the business your company is in. At Axosoft, when I released OnTime V1.0, it was a bug tracking application. Most competing companies who create a bug tracking tool see themselves in the bug tracking business. Some venture to say it’s a project management tool. I’ve always viewed OnTime as a tool to help software teams ship software on-time and not as a bug tracking application.

That view has lead us to build requirements management, help desk and now wiki inside the same product. It’s now obvious that OnTime is not just a bug tracking tool, or just a project management tool, but a tool that helps software teams ship great software. The focus is on driving the team to ship.

When trying to determine the business you are in, think of the problem you are solving rather than the way in which you are solving it. If you make MP3 players, you’re in the portable entertainment business. MP3 just happens to be a short-term technology that delivers digital music in an efficient way, but eventually, there will be a better way to deliver portable entertainment and everybody who is in the MP3 business will die. People will always continue to need a solution to their portable entertainment problem. Nobody has an MP3 player problem.

To create great software and to continue thriving, it’s important to know your business. To be alive 10 years from now, Seagate needs to continue being in the storage business and not the hard drive business. It’s crucial to know the difference.

Posted in Business, Development | 2 Comments »

Outsourcing is for Dummies

Posted by Hamid Shojaee on December 3, 2007

Putting Space Between Parts of Your Team is a Sure Way to FailLet’s get one thing out of the way fast: There is no possible way to build and ship quality software on a tight schedule by outsourcing the development, period. If you are in the business of software, then be in the business of software and suck it up and build a team that can write the code. Outsourcing your primary application development is the equivalent of outsourcing the defense of a country. Here’s the primary thing you are admitting when you outsource:

By outsourcing the development of your software, your company is admitting that another company is better than you are at creating the very product that you want to create. You’re also admitting that they can do it cheaper and they can do it better than you can while still making a profit selling it back to you.

If that’s true, then why are you in the business of building software? You should be selling dogfood or cat litter. If you are in the business of selling dogfood or cat litter, then great, continue outsourcing. But even Amazon.com, a company that by any measure is in the ”retail” business, builds their own technology and they consider it one of their primary business advantages. If Amazon.com considers it a major advantage to build their own technology and doesn’t outsource its development, then why would you even consider it?

Outsourcing breaks some of the primary laws of building great products. To build a great product, you must have a great team. Notice I didn’t say “you should” or “it would be nice to” have a great team, but rather you must have a great team. A team is inclusive of the designers and developers and testers and trainers and support personnel! If you think that the designers can throw the design over the wall and have the developers give them back a great product, you’re sadly living in a dream world. Although the threshold of importance is substantially reduced with each of the latter items (such as testing, training and support), the quality of those items are also substantially reduced when those items are outsourced.

Lets take a closer look at the most common area of outsourcing: support. Of all the parts of software development, support is by far the easiest to outsource. It requires the least amount of technical knowledge and support managers will often tell you it’s all about “respecting the customer” and “having patience.” So if you can find people in India or Romania who can provide respect and patience to your customers at less than 1/3 the price, theoretically, you should be golden. But anybody who has spoken to a support rep recently from Microsoft, Dell, HP or any other larger tech company who is supposedly saving money by outsourcing support knows from experience that no matter how much “respect” these customer service reps provide, you end the conversation more frustrated than the start, swearing into the air and vowing to never buy from that company again. Of course you end up going ahead and buying from them again because you have no choice, but this time you know, with a heavy heart, that your purchase price doesn’t really include the promised support. Ironically, from the perspective of these companies, their outsourcing strategies save millions of dollars and not just because of the lower cost of labor. The fact that you are less likely to make a 2nd call into an outsourced support center provides an even bigger savings. So here’s what happens when a large company outsources support:

  • Initial costs are substantially reduced due to lower labor costs.
  • Call volume is reduced (due to frustrated users who give up calling) implying that the new call center is doing a fantastic job or the overall support strategy is working great, reinforcing the behavior that outsourcing was the right thing to do.
  • Surveys will reveal nothing because A) nobody fills out 20 minute surveys and B) those who do are almost always complaining, so the percentage of complaints does not appear to be any higher than when the support was in-house.
  • It does not appear that outsourcing support has had any impact on sales. This is, of course, is only a temporary effect as customers often don’t have a choice, but as soon as they do have a choice, it’s over!

So, the outsourcing strategy may initially seem like a success, even while it’s failing miserably. If you can outsource support, then why not documentation or testing? Eventually, why not development? Nobody dares outsource Design. At least not yet. But the metrics are flawed and those who rely solely on metrics for the operation of their business shouldn’t be in business. They’ll get what’s coming to them.

Note that I’m not picking on India or Romania. It would be equally stupid for an Indian company to outsource its software development or support to a US company if labor costs were reversed. I’m also not against outsourcing from the standpoint of “keeping jobs in America.” That’s about the worst possible reason not to outsource. It disrespects humanity and implies that an American’s life is somehow worth more than a non-American. Outsourcing simply doesn’t make good business sense. At least not for a company that wants to be great.

The Optimum Team

At Axosoft, we often move people around, even as little as 20 feet, just to be closer to somebody that they expect to work with on a project. It’s amazing how much productivity can be gained by being next to a person vs. 20 feet away. It encourages conversations and questions about design items, issues, features and things that would have been passed on if the people were simply 20 feet further apart. Having these conversations allows the teams to build a better more solid product in a shorter period of time with fewer defects. Increase the distance by 20 feet and you lower the overall productivity and product quality by some amount. Increase the distance to 20 miles and your productivity and product quality tanks. Increase that by to 10,000 miles and an equally large cultural gap — and you can imagine what will happen. There is a reason why companies like Microsoft, Google and Apple have built corporate “Campuses” that are focused in a single location. The close proximity of all the engineers to one another is a good thing. It creates a healthy feedback loop, which helps increase productivity and increase the overal quality of products and what’s possible. So the optimum team is one who’s physical proximity is as close as possible and its different functions such as design, development, testing and support are not outsourced.

Posted in Business, Development, Team | 9 Comments »