I probably need to explain why I was so excited in my post Now that my mobile development centre is ready ... I can go home and enjoy the weekend :) and pondering over a possible talk to high school students has sparked this post over the weekend.
Firstly, what is software engineering?
Software engineering is probably the most exciting adventure and job in the engineering jungle, constantly changing and evolving … a reason why many of us are still studying part-time after more than 25 years in the industry and still enjoying every single day at work. If we view software engineering as a layered cake, we will find distinctive layers for quality, process, method and tooling.
If we compare the layers with layers of an onion or our planet, then “Quality” is the core focus of software engineering.
Process resembles the glue that holds everything together cohesively and allows us to deliver “quality” solutions on time, every time and has taken on many shapes and sizes over the past few decades including prescriptive processes such as CMMI, incremental process such as Rapid Application Development (RAD), evolutionary models such as prototyping, spiral an concurrent and many, many others, such as aspect oriented and agile. See http://blogs.msdn.com/willy-peter_schaub/archive/2009/10/06/sdlc-software-development-lifecycle-what-s-the-point-posts-links.aspx for a table of links in which we covered many of these processes.
Method defines the “how do we do it” and includes tasks, communication, analysis, design and many other principles that are often formalised, based on and driven by the process or processes used as part of a project.
The tools, often known as computer aided software engineering, are “supposed” to be integrated providing automatic or partial-automatic support for the method and process, to drive the quality and ensure that we can move from speculation, to collaboration, learning and transparency. I will come back to the “supposed” …
Oh yes, although not included in official definitions of software engineering, I believe that a container for all of the above is “passion” for quality, passion for the tools, passion for the method, passion for the process and most importantly passion for information technology. Software Engineering and Information Technology are not only formal and disciplined fields, but full of fun, excitement and endless opportunities. If you lack or have lost the passion, you will probably loose the secret key to innovation and loose the fun factor … which makes this career one of the best, if not the best.
This, in fact, is what got me started on this blog, because why are scholars and students no longer considering information technology and software engineering as a career? Is is that we have lost the passion, is is that is has become second nature (it scares me at times to watch my sons effortlessly copying with technology) or have we not shared our excitement with the world? Once I have had the talk and managed to harvest some feedback from the bright young minds, I may come back to this thread.
Secondly, why bother with Team Foundation Server (TFS)?
We said above, that tools are supposed to be integrated.
Since the 80’s I have been involved in projects where we used a platter of different tools and technologies ranging from hand written, punch cards, class-collaboration-responsibility (CRC) cards, text documents, spreadsheets, databases and many other artefacts. In the 90’s we developed a semi-integrated development, test and build application lifecycle management (ALM) solution based on Visual Source Safe (VSS) and the company I worked for in South-Africa has many flavours and attempts to create a semi-integrated tooling ALM environment using technologies such as Visual Source Safe, SharePoint, Bugzilla, Subversion and many, many other expensive, proprietary and open-source tools and technologies.
The resultant tools were often exceptional, delivering immense value to “the” project team, but often lacked complete integration of the information, making sharing, reporting and transparency a distant dream. While the environment delivered value to “the” project team and drove the underlying principle of quality, it lacked re-use and easy adoption for other project teams and subsequent iterations of the same project. How often did we have an exceptional bug capture and tracking solution, that did not integrate with version control or visa versa? How often did we achieve integration, but lacked the transparency, reporting and ease of use to drive adoption amongst all stakeholders?
What I often wonder is how much time and resource we wasted creating these customised environments and what the total cost of ownership (TCO) was … unfortunately most of the effort of creating, refining and maintaining these specialised ALM environment was done outside of project budgets and planning, which means that the actual and total costs are probably pure speculation. What I do know, however, from personal experience, is that the effort and frustration was often immense. Those that were involved in a huge online banking project in South-Africa down in Cape Town should remember some of the hard and tough times, during which many of us literally slept under tables at work to be available to maintain and fix the rubber bands holding the overall environment and solution together.
So, why bother with Team Foundation Server (TFS)? Well, it is an integrated and data centric application lifecycle management (ALM) solution, that offers an environment for all stakeholders from requirements elicitation, design, development, testing and maintenance … I have probably forgotten many stakeholders, but these are the key areas I am interested in and focused on. Use cases, design models, test cases, version control, documentation, bugs and other work items are all connected, which means that transparency is achieved, analysis and reports are meaningful. Thanks to an intuitive and integrated environment that includes both a rich and web client, as well as interoperability with office products, the features and information is easily accessible by “all” stakeholders.
“But Team Foundation Server is expensive”, I hear some of you shout. I must be honest and state that I neither fully understand the licensing model, nor do I have the “passion” to want to fully understand the licensing model and associated costs. I will leave this area to the experts to comment on, but I am convinced that if we were to calculate the true total cost of ownership, the value of an integrated, transparent and easy-to-use application lifecycle model, of which TFS is one, and the quality we can achieve and inject into projects, we would find that the cost more than justified.
Finally, why am I excited about Team Foundation Server (TFS) 2010 BETA-2?
DRAFT extract from one of the quick reference posters we are working on, which show the integrated solution.
The product group deliberately focused on the core of the product during the initial phases of product, creating a stable, integrated and extensible ALM solution.
Unfortunately this meant that the administration and maintenance areas, especially in terms of integrated and user friendly tools, took a back seat and forced us to rely on command line tools, magic dust, patience, and a phenomenal collaborative environment made up of the product group, Microsoft Most Valued Professionals (MVP) and other technology specialists. While the product group had to endure major flak from all fronts during these times, I for one, am now thankful for the strategy … because we now have a “quality” core.
Team Foundation Server 2010 BETA-2 and Visual Studio 2010 BETA-2 has not only benefited from the quality core, but has introduced the long awaited administration and management tooling that will make the most critical users take note … as well as many, many other exciting and productive new features.
Now that my mobile development centre is ready ... I can go home and enjoy the weekend :) is probably a key indicator of the sheer power of this latest product, because the ease of installation, the ease of configuration and the ability to run fully integrated ALM tooling on a client laptop is simply “awesome”.
I you would have told me in the 80’s or even 90’s of what I will be able to do on my laptop in 2009, I would have called the guys in the white suits and asked them to bring one of those special jackets.
| ALM – Application Lifecycle Management | CMMI – Capability Maturity Model Integration | CRC – Class, Responsibility and Collaboration | RAD – rapid Application Development | TCO – Total cost of ownership | TFS – team Foundation Server | VSS – Visual Source Safe |