7 Key Attributes of High Performance Software Development Teams

Software Development High Performance 
Kids playing High Performance Soccer on an interactive video projection system at COEX in Seoul 

There are so many people out there writing books about the best software development processes, tools, architectures, and so much more.  I woke up this morning wanting to concentrate on writing about the lower level as I see it to a High Performance Software Development team.  I truly see this as the essence to great teams, and great companies.  It’s simply not enough anymore to have the smartest people working for you.  You need to have smart people that embody the essence of your company.

You need teamwork!  Take a look at the little kids playing soccer.  One of them is playing the goalie, and happy to do so, while the other is playing forward trying to score a goal.  They aren’t both fighting to score a goal are they?  Here are the 7 Key attributes of High Performance Software Development Teams

Software Development Team Purpose

Does your team actually understand how it fits into the overall business objectives of your company?  If you are a software developer ask yourself when the last time was that your manager sat down with you to talk about the actual purpose of your team, and your role within that team to help the company succeed.  If the answer is "never" or "a long time ago", you might want to talk to them about it.  A team with a sense of purpose and conviction will outperform a team without purpose any day.  And I don’t just mean:  “Your purpose is to ship this software on time and make it awesome, here is the architect you will work with, here is the team, go at er!”.  I’m talking about “Your team is critical to the success of our business. With the ongoing threat posed to us by our competitors, your team is building the foundation for future applications built on our platform.  Your key component will drive business for the next 20 years.”

Team Member Involvement

The individual team members must be involved with each other at every level.  Everyone has a role on the team.  Although your team might consist of software developers, quality assurance team members, business analysts, and software architects, it is critical that everyone on the team feel a sense of involvement in the project.  This is achieved by focusing on two things.  Ensure that each team member understands how valuable they are with their unique skill set, and two, make sure that they understand that without their involvement on the project, without them bringing that special “secret sauce” to the table, the team would not function as well!

Commitment to the Software Development Team’s Goals

Everyone on your team must be committed to the group’s goals and direction.  Nobody on your team should be looking out for #1.  The level of commitment in a high performing software development team goes far beyond personal goals and agendas.  If your team seems to be having a lot of turmoil, or things aren’t getting done, chances are one or many individuals on the team have forgotten what it means to be a part of the team, and have become more concerned about themselves.  One has to question the commitment level of every individual when projects fail.  Not always, but a big factor in the failure can be the level of commitment of individuals on the team.

Be very careful with this one, as when commitment falls in a few members, or even just one, it can spread like a wild fire across your team.  Not putting out that one burning bush quickly, might cause you to lose more than one or two trees.

Trust in Everyone

Just like in any good family, your team must trust each other, the company, and the leader.  Everyone on the software development team must have trust in each other to honour commitments, timelines, and goals for each other.  Trust within your team comes extremely handy when trouble arises, or objectives seem far too challenging to achieve.  Having those relationships will ensure things keep moving.  If you are a software developer and are feeling the pressure, having the trust in your quality assurance team to properly test and provide you with feedback is huge in a high stress project.

Process Orientation Critical to the Software Project Success

Software development teams that are extremely high performing are masters of process.  When they work on projects, that have an arsenal of proven best practices and process’s to rely on to help them get the job done.  They are usually the ones with the best tools to develop the software, as well as the knowledge that is needed to get the best out of the tools they are using.  For example, some tools that our team uses include Visual Studio 2008, Cruise Control Continuous Integration, Subversion, Team Systems, and other tools.

Continuous Improvement

This is a huge one.  Your team needs to understand how to constantly improve.  They need to love and thirst for feedback.  A team that has decided they are “good enough” and happy with the way they perform are going to get lazy and start failing.  A lot of people believe that once you get to a certain level, learning stops (used to be the case anyway).  In today’s fast spaced world you have to be constantly learning new skills, improving yourself, and taking your game to the next level.  If you don’t, you are not staying where you were, you are actually sinking.

Taking time for yourself to improve yourself is one thing, but your team also needs to take time to improve itself!  Hold post-mortem sessions, have lunch and learns, promote continuous education through local colleges, and much more.  While much behind lifelong learning is about the individual, the company that you work for needs to take care of its employees as well and promote continuous improvement.  This doesn’t just mean just telling everyone “Always learn and take criticism well”.  It means allowing the software development team to learn and take time.  Give them time!

Communication

I’ve written about communication in the past.  Communication in the software development process and in the software development team is extremely important.  Extend that to within the organization, and any client you are working with.  Yes that age old statistic of nearly 80% of the software development projects fail is true.  I would lay a big bet however that had communication been at the forefront of the project, and excellent throughout the entire process, that number would be astronomically lower.  With the fantastic tools and process’s we know have at our disposal as software developers, communication will be one of the major contributors to the success of the project, or the failure.

And there you have it!  Now you may think to yourself “I know all this already”.  If that is the case I have a few questions.  Are you fostering an environment within your organization that will allow these kinds of attributes to shine through and be rewarded?  If you are an employee, “Does the company you currently work at have these high performance teams?”.  Everyone can effect change.  And if you can’t seem to make change stick, you can always leave and try somewhere else!

Silverlight 2 Beta 2 Released

As promised, Microsoft released Silverlight 2 Beta 2 today.  While the main Silverlight and Expression Studio sites have not yet been updated, the software has been placed on the Microsoft Servers.  The links are at the end of the article.  The most amazing thing I see in Silverlight 2 Beta 2 is that the size of the installer hasn’t increased at all! It still takes like 5 seconds to install on most of my machines that use.  Increasingly powerful, the same size!  I love it!  Expect to see some really cool Silverlight applications in the next few weeks as Microsoft finally gives Silverlight 2 the “Go Live” stamp of approval.

What’s New In Silverlight 2 Beta 2

There is a ton of new stuff shipping with Silverlight 2 Beta 2, including updates to some features that everyone loves.  Some of the changes include:

  • Tab Control – Yes they finally have a TabControl for us to use.
  • Text Wrapping in TextBox – Seems basic, but its true, you can now wrap text
  • LINQ – Some nifty updates to LINQ
  • Visual State Manager for Controls – Should be fun to play with some of these new features
  • WCF Duplex Communications – Should make it easy to communicate changes in state to the back end.
  • Cross-domain changes to sockets
  • DeepZoom

Update: The Silverlight.net site has now been updated!

Install Silverlight Tools Beta 2 for Visual Studio 2008

Install Expression Blend 2.5 June 2008 Preview

Install Deep Zoom Composer

Install Silverlight Runtime for Windows

Download Silverlight 2 Beta 2 Documentation

For complete detail of the new features available in Silverlight 2 Beta 2, please check out Scott Gu’s Blog!  The blogger master has some fantastic details on the product, and all the new features that accompany the release.

Technorati Tags:

How Microsoft Can Improve Live Search

My Switch from Google to Live Search for 1 Week

imageAs some of you may know, I decided to switch to Live Search for 1 Week from Google.  While I overall was impressed with Live Search since last using it nearly a year ago, there is still a long way to go to make Live Search a strong competitor to Google.  Below I outline my experience, and more than anything, my constructive feedback to Microsoft. Hopefully the Live Search team is reading!  I break my reasoning up into three categories as to why Google is still the best Search out there:  No Compelling Reason to Switch, Relevance and Newness,  User Interface Issues, Microformats and Webmaster Tools

No Compelling Reason To Switch

Let’s be honest, in order to get me to switch from Google, I need a really compelling reason to switch.  I already use gmail (miguelcarrasco@gmail.com) because Hotmail became ridiculous in terms of spam.  Google rocks when it comes to spam.  I also have a ton of web sites out there, and I use Google Webmaster Center to manage all the sites and stay on top of them from the “Google Bot’s” perspective.  I also use Google Reader (reader.google.com) for my RSS reader, and I use Google Desktop to search my desktop.  Let’s be honest, I love Microsoft, just read my blog… but I use all these products because they enable me to do my work faster.  I don’t use Google docs because those products slow me down vs Microsoft Office.

Anyway, so I use all these tools, in order to use Live Search, it’s a lot of work!  The same thing that has helped Microsoft push Internet Explorer, and other products in the past (switching to Firefox, Opera, WordPerfect is a lot of work), is hurting them in this case.  There is simply nothing significantly better than Google Search in Live Search.  Even watching presentations on Live Search, you can hear in the presenters voices the “We are getting better” and the “Soon we will be as good as Google in Search”.  I’m sorry but that doesn’t sell the product.

To change people’s habits, like Google did to Yahoo!, Microsoft must outperform and outshine Google!  So far, they haven’t done this.  Microsoft needs to innovate in search.  Why not allow people to vote sites up or down right in the search.  Why not allow people to comment on search results.  Why not track people’s comment and rating relevance by combining the search algorithms with the ranking and commenting system to give certain people more weight than others.  Why not tie all this together with people’s Live accounts.  Why not tie in the ability to bookmark sites you search and like, and have them appear in your MSN spaces or facebook profiles.  Ton’s of ideas that would make me go… “hmm neat feature, I’ll use it”.  Right now, what is the coolest feature in Live Search that Google doesn’t have?

Relevance and Newness

I don’t know what kind of steroids Google is using, but lately their search index updates nearly daily on some sites, and on some sites, they update a couple times a day!  The same search I do on Google, on Live Search produces “older” results.  Let’s take an example like “Silverlight Teched”.  I run this search on Google and I get:

 image

Perfect!  Exactly what I was looking for!  I get Somasegar’s web log link to his TechEd 2008 Keynote on stage performance with Bill Gates.  I click the link, get the complete details of the keynote, and am pretty happy with what I’ve learned very quickly.

Now I go and do the search on Live Search and I get:

image

Um, ok, I wasn’t really looking for any of this at all.  I know there is a Microsoft TechEd site.  And I am clearly not looking for the “Click Here to Install Silverlight” which now appears on nearly every Microsoft site.  So now I go and click on the next link.  The next link is a link to a forum that talks to me about TechEd 2007.  Really old content.  Once again not what I was looking for.

Notice the Google search results link to web pages that were created yesterday.  After all, clearly I want information that is up to date.  I also want information, and not links to corporate sites.  I can clearly see  a few issues here in the Live Search Algorithm.  Some key points:

  1. Google knows that when I type 2008, I’m talking about a date, and that I want something this year.  It knows I don’t want “Windows Server 2008”.
  2. Google puts more weight on sites that have the search terms together on the page.
  3. Microsoft is putting to much weight on the sites link juice, and not enough on the above two measurements.

User Interface Issues

While a lot of people see Google as  lacking design and user interface elements, they actually have user interface down to a science!  Let’s quickly summarize what I’m talking about because it’s getting late and I have to get to bed.

  1. Live Search centers the search if your screen is large.  This is not good because I am used to looking on the left.  Google slams everything on the left.  Awesome, that’s where I look first.  So with Live Search, I’m usually left feeling “weird” right after I search, even before I see the results.
  2. Google clearly separates what I searched, with the results.  Live search blends everything together, which also makes me feel weird, and unsure as to where to look.
  3. Where is similar pages?  Google knows you might like the results, but want more of the same.

Below is a diagram of some of the issues I see with Live Search that makes me twitch when I use it and almost like a reflex, makes me try and go to Google.com to perform the same search.

Microsoft Live Search 

Microformats and Webmaster Tools

Ok if there are any Microsofties reading this blog, or even Bill Gates himself, let me ask a question:  “What MADE Microsoft what it is today?”  The answer is, DEVELOPER TOOLS!  So here is my question.  Where are the developer tools for Live Search?  And by developer tools, I mean, what can webmasters use as tools to optimize their web pages for Live Search.  Google has some wicked tools, and I know Live has a few tools like Webmaster Center, but they pale in comparison to Google Webmaster Center.  It’s like comparing Notepad to Visual Studio. 

Microformats is also the future.  Defining pages in great detail.  Every element.  This posting is already long enough, but imagine if I would have searched Silverlight TechEd 2008 and up should have come up the latest blog entry, a video of the presentation, a powerpoint, maybe even the agenda, and directions to TechEd.  THAT would have got me excited.  See the more relevant information you can give to the user before he has to click on the link, the more valuable the results are.  Even if Live Search and Google gave me the same exact links, I would like the one that gives me more details about the links before I even click on them!

How can we do this?  I know Live Search is partnering with various providers to communicate with them a-la biztalk.  What’s your communication mechanism and language, and I will understand.  I personally hate that approach.  Instead, why not push a standard way of defining videos, web pages, blogs, news, etc. (microformats)?  Create standard ways to define context on the web!  People will jump all over it, and already have to be honest.

Conclusion?

I would love two weeks with the live search team.  That’s my conclusion.  lol.  I love Microsoft, and I wish they would get search right!  They have the people, the capability, the scale, everything they need.  They just need the image, drive, passion, and direction.  The reality is, the way things are going, they are going to catch up to where Google is now, but at the same time Google will make webmaster center better, analytics rock, desktop search better, adsense better, they will adopt microformats, and leave Live Search in the dust.

What is funny is Microsoft is rocking Adobe Flash with Silverlight by implementing the strategy they should be implementing with Google! Innovation Domination, and better developer tools!

Software Developers and Silverlight the focus at Tech-Ed

Microsoft Tech-Ed On Tuesday, Microsoft Chairman Bill Gates focused one of his final keynotes as Chairman of the Microsoft Corporation on Software Developers.  Gate’s took the time to remind everyone that the common link between everything Microsoft has ever built was software development tools.  One of his major announcements and focal points in his keynote revolved around Silverlight.

Silverlight 2 Beta 2 Coming This Week

From stability, to new features like LINQ (Language Integrated Query), to some new controls, Silverlight 2 Beta 2 is going to really make a lot of Silverlight developers happy!  So for those of you who were not at Tech-Ed, or those of you that have not had the chance or time to view the videos on the Tech-Ed web site, let me break down the three major points made about Silverlight at Tech-Ed.

Stability

Silverlight 2 Beta 2 is now a fairly stable product.  My team has actually be working extremely hard on an application built completely in Silverlight 2 Beta 1, and are fairly impressed with it in comparison to other previous versions of the product.  Beta 2 of Silverlight 2 is in fact so stable that Microsoft is ready to stamp it with a “Go Live” license, which means Microsoft will provide support to production ready Silverlight applications.

Streaming Video Mature Model

Microsoft has been in the video business for a long time now with Windows Media and it’s Media Encoder.  Silverlight sucks up all that goodness, and makes it awesomness.  Silverlight has built-in codec support for playing VC-1 and WMV video, and MP3 and WMA audio within a browser.  The VC-1 codec is great at incorporating media on the Internet since it supports playing high-quality, high definition video in the browser very well!  It is a standards-based media format that is implemented in all HD-DVD and Blueray DVD players, and is supported by hundreds of millions of mobile devices, XBOX 360s, PlayStation 3s, and Windows Media Centers (enabling you to encode content once and run it on all of these devices + Silverlight unmodified).  It enables you to use a huge library of existing video content and provides access to the broad ecosystem of existing Windows Media tools, components, vendors and hardware.

Silverlight also supports the ability to progressively download and play media content from any web-server.  You can point Silverlight at any URL containing video/audio media content, and it will download it and enable you to play it within the browser.  No special server software is required, and Silverlight can work with any web-server.

Blur Between WPF and Silverlight (XAML)

The big selling point of Silverlight and WPF to me has always been XAML.  While I will debate Flash vs. Silverlight or Silverlight vs. Flex as happily as the next guy, there is one HUGE benefit to WPF and Silverlight that I see completely missing in all Adobe products.  XAML.  What XAML enables is an amazing developer and designer workflow that is simply nonexistent in Adobe products.  I tried doing some some Adobe Flex stuff the other day.  While I have to say, it was pretty awesome with all its rich controls, and pretty much just another development tool to me, it was missing a huge piece!  XAML!  Gone are the days (or should be) of creating html code, css, and endless lines of JavaScript, to make everything look nice and tie together.  Shouldn’t there be one common language that allows you to design an interface in a designer tool, and then give it to a hardcore developer to make sing?

Oh right the main topic wasn’t how awesome XAML is (did I mention XAML rules?), but to explain that with version 2 beta 2 of Silverlight, the integration and cross-compatibility between Silverlight XAML and WPF XAML is getting very close?  Will the lines be completely blurred soon?  I hope so!

Want to Watch The Bill Gates Final Keynote?

So make sure you check back later this week for details on how you can download Expression Blend 2.5 June 2008 Preview, and Microsoft Silverlight Tools Beta 2 for Visual Studio 2008.

 

Technorati Tags: ,,

New HP-Microsoft Deal Puts Silverlight Everywhere

Microsoft SilverlightIn a brilliant move by Microsoft, HP will be installing Live Search on every new HP System!  What is even more exciting, is that Silverlight, will be required to run the new Live Search.  The Silverlight-powered toolbar will allow HP to customize the links on the toolbar to send users to various places on the Internet, and possibly launch other Silverlight/WPF applications for the user.

While most toolbars from my perspective are terrible and usually slow down the entire user experience,  the idea of having Silverlight installed on every HP that ships to consumers is very powerful.  While most users will probably remove the toolbar, not a lot of users will bother to remove Silverlight.  This should quickly push Silverlight’s install base to at least some significant percentages in comparison to Flash.  With the release of Windows Mobile 7 coming soon with Silverlight, Nokia announcing Silverlight support, and the Live Mesh beta testing going on as we speak, you can’t help but feel like something great is starting to coming out of Redmond.  The sleeping giant has woken up to Web 2.0, and in a big way.

[Wall Street Journal]