The Importance of Talent in IT

February 14, 2011

For a little diversion from Cloud Computing, let’s talk about the importance of talent in IT organizations.  Several weeks ago, while talking with a collogue about the Super Bowl game between the Green Bay Packers and the Pittsburgh Steelers, our discussion turned to the value of talent.  Player talent is highly valued in sports, but not valued as highly in the world of IT.

In pro-sports, player talent is viewed as a fundamental key asset.  If a player has more talent and gets a few more tackles in a football game; hits more home runs in baseball, or scores more baskets in basketball, than that player’s value can on the field and salary off the field can be many times higher than less talented peers.

Yet in many organizations, the talent of IT software engineers, project managers and architects is commoditized.  A standard bill rate or cost per hour is defined for IT roles and “rate sheets” are developed with published rates for various roles.

The standard rate sheet model assumes that all individuals in a given role produce the same amount of work.  Unfortunately, IT is more of a craft than a factory assembly line and the standard rate models may not be the best model to use.

The same individual talent differences that we observe in sports occur in IT.  Barry Boehm, in his 1981 book “Software Engineering Economics”, (http://en.wikipedia.org/wiki/Barry_Boehm), found that higher performing software development teams were up to 25 times more productive than lower performing software development teams. This is an astounding difference and one that may play a big part in why so many IT projects fail.

Boehm’s results have been replicated time and time again. More talented software engineers, project managers and architects produce substantially better products, faster and at a much higher productivity level.

I am not sure of all of the reasons why IT talent is commoditized, but one reason may be that we don’t spend a lot of time focusing on IT talent.  Instead, we focus on the latest tool or methodology, versus the talent of the individual using the tool or methodology.

Most professional sports have a large infrastructure of scouts, talent evaluators and minor leagues that try to identify talented players.  Sports also measures performance with every game. Maybe if IT organizations focused on identifying talented software engineers, project managers and software architects, than we would have fewer failed projects, more project successes and individuals in IT who have more talent would be treated as the super stars that they are, just as super star players in sports are treated.

Advertisements

Two Views of Cloud Computing?

December 21, 2010

Cloud Computing can be viewed from two different perspectives:

  • The user perspective
  • The server or infrastructure perspective

From the User Perspective any application or service that a user uses over the internet can be considered a Cloud Computing Service. The user typically has no idea what computer infrastructure is needed to run the application they are using.  Examples of large user Cloud Computing services include:  Email, Search, Google Docs, Facebook, Flickr, Microsoft Office 360 and thousands of other applications that run on the Internet (or World Wide Web).

From the Computer Server or Infrastructure Perspective Cloud Computing is a way of engineering applications that are delivered over the internet to thousands (in some cases millions) of users at the same time.  In order to support such a large number of users, sophisticated software engineering techniques are used to provide high availability with good performance at enormous scale.  Major Cloud provides have also automated much of their infrastructure deployment and maintenance to reduce costs.

It is key for IT professionals to understand Cloud Computing from the server perspective.  IT professionals will need to understand what is involved in developing and operating applications  that run on Cloud Servers.  They will also need to understanding how Cloud Computing from a server perspective will change the role of IT in the future.

As we have seen in my earlier posts, around 2002 to 2004, the number of users, on Amazon, Google and Yahoo had grown to thousands and in some case millions of users. In order to provide good service, these organizations had to add thousands of servers to their computer infrastructure.  Their scale of their infrastructures was becoming expensive and a bottleneck to growth.

Each of these companies decided to automate the provisioning and maintenance of servers using low cost x86 commodity processors. Each company engineered their own unique solution to their infrastructure growth issues.  Although each solution is different they share elements of both existing and new software engineering concepts such as:

  • Time Sharing
  • High Availability Computing
  • High Performance and Grid Computing
  • Multi-Processing and Virtualization
  • Web Services
  • Service Oriented Architectures
  • Data base sharding
  • New packaging ideas using shipping containers as data centers

The result of these engineering efforts was new forms of computer infrastructures that scaled to millions of users and billions of transactions.  Amazon was the first to offer these new automated infrastructure services to the general public and create what today we call Cloud Computing.


Three Cloud Computing Classes

December 7, 2010

I will be co-teaching three (3) Cloud Computing classes at DePaul University this winter 2011 Quarter with another DePaul instructor, Marco Chou. We are currently developing these classes with the help of key cloud vendors like: Salesforce.com, IBM, Microsoft and many others. Our goal is to develop a full Could Computing curriculum and educate Chicago area IT practitioners in the benefit and use of Cloud Computing.

  • Introduction to Cloud Computing – this 1 day seminar provides an excellent and objective overview of the server side of Cloud Computing from multi-perspectives and helps prepare IT professions who have a need to quickly learn more about Cloud Computing and includes demonstrations of key cloud computing environments – Offered: Friday, January 28, 2011 and Friday, Mar. 18, 2011 (see http://www.cdm.depaul.edu/ipd/Programs/Pages/Introduction-to-Cloud-Computing-Seminar.aspx for more details)
  • Cloud Computing for Project Mangers – this 1 day seminar provides a similar overview of Cloud Computing as the Introduction to Cloud Computing, but adds an information about the Project Management aspects of Cloud Computing Projects – Offered, Friday, February 18, 2011 (see: http://www.cpe.depaul.edu/cloud for more details)
  • Cloud Computing Fundamentals – this in-depth 10 week program gives attendees a hands on experience of developing and using Cloud Computing server applications in a number of different Cloud environments – Offered, on Tuesdays, Jan. 4, 2011 through Mar. 15, 2011 (see http://www.cdm.depaul.edu/ipd/Programs/Pages/CloudComputing.aspx for more details)

Inventing Cloud Computing – Continued

November 11, 2010

As I discussed in my last post, the technology for Cloud Computing was initially developed to meet the enormous growth web services providers like: Amazon, Google and Microsoft. These companies needed automated provisioning of highly scalable, highly available computer infrastructures which no computer vendor provided in the 2004 / 2005 time frame.  In order to satisfy their needs each of these companies separately developed their own automated infrastructure management tools using a combination of Open Sources software tools and custom development.  These automated infrastructure management tools included:

  • Computer Clusters (Open Source – Beowulf )
  • High Performance Grid Computing (Open Source – Grid Software)
  • High Availability concepts borrowed from Tandem and the Telecom industry
  • Virtualization Software (Open Source – Xen Virtualization)
  • Storage Replication (Open Source – MySQL)
  • Auto provisioning of servers and storage (Custom developed)

Amazon was the first vendor to integrate the various software elements.  After Amazon got this software working for itself, Amazon’s CEO, Jeff Bezo, decided to offer the same capabilities to Amazon customers and Amazon’s Elastic Compute Cloud (EC2) service offering was born.

Amazon wasn’t the only web vendor who had a challenge managing large numbers of servers.  Google and Microsoft faced similar challenges.  In 2005 Microsoft’s new Chief Software Architect, Ray Ozzie, who took over for Bill Gates, documented his vision for a Computer Utility in a memo to Microsoft employees: See link to Ozzie’s memo:

http://www.scripting.com/disruption/ozzie/theinternetservicesdisruptio.htm

This memo was widely circulated within Microsoft and planted the seeds for Microsoft’s Cloud Computing offering.  In 2006, Microsoft’s started development of its Azure Cloud Computing Platform in earnest.  A public beta version was announced in early 2008 and a production version was formally released in March, 2010.  Below is a link to Microsoft’s Cloud Computing Data Center Vision of tomorrow:

http://www.azurepilot.com/video/6771261/Microsoft+Generation+4.0+Data+Center+Vision

At the same time Google was developing similar capabilities to manage it servers.  Google was one of the pioneers of the use of inexpensive standard Blade like x86 processors packaged in semi-trailer containers to satisfy its server needs.

Google had also developed its own automated software to manage the large number of servers that it used to provide web based search and other services to its customers.  In 2008, Google offered its automated services to customers in form of a beta version of Google App Engine.

Since Amazon, Google and Microsoft have announced their offerings, many smaller hosting companies are offering Cloud Computing Services using a variety of Open Source software tools and custom software.  Many of these companies offer Cloud Computing services packaged with other specialty services such as backup restore capabilities and on-site network and infrastructure design services.


Necessity is the Mother of the Invention of Amazon’s EC2

October 26, 2010

Since the early days of the computer era there has been a desire to create a ubiquitous computer utility which can be accessed by anyone from anywhere.  With the advent of Amazon’s EC2 in 2006 the dream of a computer utility is fast becoming a reality.

How and why did Amazon, an on-line retailer, “invent” Cloud Computing? 

Urban legend has it that Amazon invented Cloud Computing as a means of selling the excess capacity of its production serves.  As the legend goes, Amazon had to have enough spare server capacity to handle its peak order period from Thanksgiving to Christmas, but these servers were idle most of the rest of the year.  So, why not sell that excess capacity.

The real story is much different.  As you will see in the following link, Jesse Robbins, Amazon’s IT Operations Manager at that time, states that like any good IT manager, he would never let non-production applications on his infrastructure:  “NOBODY gets any of it if you can humanly prevent it. It’s ‘mine, mine, mine’ as the duck said.

http://itknowledgeexchange.techtarget.com/cloud-computing/tag/origin-story/

From its initial founding, Amazon’s online business grew rapidly.  By 2003, Amazon was having difficulty maintaining its large number of servers and vast network and it was still adding servers and network capacity at a frantic pace.  As the number of servers and network grew more complex, they became more difficult to manually manage and a more automated mechanism was needed. 

In 2003 / 2004, Amazon’s Chris Pinkham, VP of Global IT Systems and Benjamin Black, a Network Operations Manager wrote up a paper describing how to go about automating the provisioning and management of Amazon’s servers and network.  This paper became the foundation for Amazon’s Elastic Compute Cloud.  Shortly thereafter, Jeff Bezo gave Chris Pinkham, along with Chris Brown and Willem Van Biljon the go ahead to develop an automated provisioning and management system working out Amazon’s Cape Town Development Centre. 

In one meeting with Bezo, the idea was discussed that if Amazon itself wanted automation management capabilities other computer users might want similar capabilities and the idea of selling these services was born.  So was the dream of Amazon’s Elastic Compute Cloud (EC2).  See Benjamin Black Blog and a video interview with Amazon CEO, Jeff Bezo talking about creating Amazon EC2:

http://blog.layer8.net/ec2_origins.html

So now you know that “Necessity” not excess capacity was the mother of the invention of Cloud Computing at Amazon!


Computing in the Cloud versus Cloud Computing

October 12, 2010

Lately, we are seeing the term Cloud Computing everywhere. What is Cloud Computing and how does it differ from “Computing in the Cloud”?

Most of us have been “Computing in the Cloud” for years. We use a wide variety of on-line services such as search, email, on-line shopping, on-line banking, social networking, etc. These services are all examples of computing services that are delivered to users via the internet, WWW or the “Cloud”.

Cloud Computing refers to something different and can be defined as: Ultra-available, virtually limitless compute capability that can easily grow or shrink (elastic), is easy to set-up and is paid for with a pay as you go model.

In the early days of Computing in the Cloud, the main service offered was browser based search. As the demand for search grew, more and more people used Google and Yahoo and they quickly became household names. After people found the information they were searching for, they wanted to share that information and Email services became the next big growth spurt. At the same time, Amazon and eBay began to offer the ability to purchase goods, banks started to provide on-line banking services and Social Networking services like Facebook, Twitter, LinkedIn and were offered.

The demand for these services grew at an unbelievable rate. Today, Google is said to process billions of transactions a day and Face-book has over 500 million users.

In order to meet demand, Amazon, Google, Yahoo, and the other major service providers developed highly available computer infrastructures with enormous capacities to handle demand. To make their own lives easier, they developed automated software tools to manage, update and deploy their vast numbers of servers. Google is said to have over 1 million computers to support its growing list of Cloud services.

As these automated server management services matured, several service providers thought that end users might like similar capabilities and Cloud Computing was born. Amazon was the first service provider to offer a Cloud Computing service, now called Amazon Elastic Compute Cloud (EC2).

Although Computing in the Cloud and Cloud Computing are different, they have much in common with each other. Most Computing in the Clouds services are provided to end users using Cloud Computing infrastructure capabilities to handle the enormous demand.

So, from here on in, I will refer to either of these services as “Cloud” services.


Cloud Computing – A Bright “Cloudy” Future

September 22, 2010

Today, almost everyone in IT and other business areas are talking about Cloud Computing.  Cloud Computing appears to be the next “big” thing to happen to IT, the Internet and the World Wide Web.

But what is Cloud Computing?  What will it do for us? What benefits will we get from it? And what will we need to know to successful work in a “Cloud Computing” environment?

My purpose in writing on this topic is to try to answer some of these questions.  I plan to use this blog as a framework to develop a series of courses on Cloud Computing.  The goal is use these courses to train the many architects, mangers, developers, and users who will need to rapidly learn about Cloud Computing as it grows.

The name Cloud Computing was taken from the use of a picture of a “Cloud” to simplify how computers in a network were linked together, as shown below:

Cloud Computing is a large area that contains many topics.  This will be the first post of a number of posts.  The next post will provide a definition of Cloud Computing.

Many sources predict that Cloud Computing will grow rapidly and change the way we use computers, the Internet and the World Wide Web.

If these sources are correct, Cloud Computing will enable us to us to solve problems that have been difficult or impossible to solve up till now.  If Cloud Computing grows as expected, it will provide a bright but “cloudy” future with numerous new jobs for those individuals currently working in IT and those individuals that desire to a career in IT.