Friday, August 26, 2011

Agile Principles and Values For Development


Agile Principles and Values For Development

Agile development is a term that was derived from the Agile Manifesto, which was written in 2001 by a group that included the creators of Scrum, Extreme Programming (XP), Dynamic Systems Development Method (DSDM), and Crystal; a representative of feature-driven development; and several other thought leaders in the software industry. The Agile Manifesto established a common set of overarching values and principles for all of the individual agile methodologies at the time. It details four core values for enabling high-performing teams.
  • Individuals and their interactions
  • Delivering working software
  • Customer collaboration
  • Responding to change
These core values are supported by 12 principles, which you can find at the following Web site: Manifesto for Agile Software Development.
These values are not just something the creators of the Agile Manifesto intended to give lip service to and then forget. They are working values. Each individual agile methodology approaches these values in a slightly different way, but all of these methodologies have specific processes and practices that foster one or more of these values.
Individuals and interactions are essential to high-performing teams. Studies of "communication saturation" during one project showed that, when no communication problems exist, teams can perform 50 times better than the industry average. To facilitate communication, agile methods rely on frequent inspect-and-adapt cycles. These cycles can range from every few minutes with pair programming, to every few hours with continuous integration, to every day with a daily standup meeting, to every iteration with a review and retrospective.
Just increasing the frequency of feedback and communication, however, is not enough to eliminate communication problems. These inspect-and-adapt cycles work well only when team members exhibit several key behaviors:
  • respect for the worth of every person
  • truth in every communication
  • transparency of all data, actions, and decisions
  • trust that each person will support the team
  • commitment to the team and to the team’s goals
To foster these types of behavior, agile management must provide a supportive environment, team coaches must facilitate their inclusion, and team members must exhibit them. Only then can teams achieve their full potential.
Moving toward these types of behavior is more difficult than it might appear. Most teams avoid truth, transparency, and trust because of cultural norms or past negative experiences from conflict that was generated by honest communications. To combat these tendencies, leadership and team members must facilitate positive conflict. Doing so not only helps create productive behavior but also has several other benefits:
  • Process improvement depends on the team to generate a list of impediments or problems in the organization, to face them squarely, and then to systematically eliminate them in priority order.
  • Innovation occurs only with the free interchange of conflicting ideas, a phenomenon that was studied and documented by Takeuchi and Nonaka, the godfathers of Scrum.
  • Aligning the team toward a common goal requires the team to surface and resolve conflicting agendas.
  • Commitment to work together happens only when people agree on common goals and then struggle to improve both personally and as a team.
This last bullet, about commitment, is especially important. It is only when individuals and teams are committed that they feel accountable for delivering high value, which is the bottom line for software development teams. Agile methodologies facilitate commitment by encouraging teams to pull from a prioritized work list, manage their own work, and focus on improving their work practices. This practice is the basis of self-organization, which is the driving force for achieving results in an agile team.
To create high-performing teams, agile methodologies value individuals and interactions over processes and tools. Practically speaking, all of the agile methodologies seek to increase communication and collaboration through frequent inspect-and-adapt cycles. However, these cycles work only when agile leaders encourage the positive conflict that is needed to build a solid foundation of truth, transparency, trust, respect, and commitment on their agile teams.

For more details Visit: http://msdn.microsoft.com/library/dd997578.aspx

Monday, August 22, 2011

Microsoft Visual SourceSafe

Microsoft Visual SourceSafe (VSS) is a source control software package oriented towards small software development projects. Like most source control systems, SourceSafe creates a virtual library of computer files. While most commonly used for source code, SourceSafe can actually handle any type of file in its database, but prior versions have been shown to be unstable when confronted with large amounts of non-textual data (images, binary executables, etc.).

 

History

SourceSafe was originally created by a company called One Tree Software. One Tree SourceSafe had gone through several releases in their 1.x to 2.x cycles, supporting DOS, OS/2 (with a Presentation Manager GUI), Windows, Windows NT, Mac, and Unix. When Microsoft bought OneTree in 1994,[3] they immediately ceased development on all versions except for Windows. Microsoft "Visual SourceSafe 3.1", a Windows 16-bit-only, rebranded One Tree 3.0 version, was briefly available before Microsoft released a Version 4.0.


Overview

SourceSafe was initially not a client/server SCM, but rather a local only SCM. Architecturally, this serves as both a strength and weakness of design, depending on the environment it is used in. It allows a single user system to be set up with less configuration than that of some other SCM systems. In addition, the process of backing up can be as simple as copying all of the contents of a single directory tree. For multi-user environments, however, it lacks many important features found in other SCM products, including support for atomic commits of multiple files (CVS has the same problem as it is built upon the original RCS). SourceSafe inherits its shared functionality using direct remote file system access to all the files in the repository. This, together with a bug where the code is using old memory after a call to reallocate, are contributing factors to why SS databases sometimes go bad.


Starting with VSS 2005, Microsoft has added a client–server mode. In this mode, clients do not need write access to an SMB share where they can potentially damage the SS database. Instead, files must be accessed through the VSS client tools - the VSS windows client, the VSS command-line tool, or some application that integrates with or emulates these client tools.

For more details visit: http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe
Practice Questions for Exam 70-536 (MCTS - Microsoft Certified Technology Specialist)

QUESTIONS Technology Focus: Developing applications that use system types and collections


1. You are developing a text processing application by using the .NET Framework. You write the following code to iterate over a collection of strings and populate a ListBox control with the values it contains (line numbers are for reference only). The GetStrings function returns an array of strings.


C#
01: StringCollection myStrCol = new StringCollection();
02: myStrCol.AddRange(GetStrings());
03: StringEnumerator myEnumerator = myStrCol.GetEnumerator();

Visual Basic
01: Dim myStrCol As StringCollection = New StringCollection()
02: myStrCol.AddRange(GetStrings())
03: Dim myEnumerator As StringEnumerator = myStrCol.GetEnumerator()
You need to add code to populate the ListBox control. What code should you add?


 
Option A

C#
while (myEnumerator.MoveNext())
      lstStrings.Items.Add(myEnumerator.Current);

Visual Basic
While (myEnumerator.MoveNext())
   lstStrings.Items.Add(myEnumerator.Current)
End While
Option B

C#
do
{
   lstStrings.items.Add(myEnumerator.Current)
} while (myEnumerator.MoveNext())

Visual Basic
Do
   lstStrings.items.Add(myEnumerator.Current)
Loop While (myEnumerator.MoveNext())
 
Option C

C#
myEnumerator.Reset();
do
{
   lstStrings.items.Add(myEnumerator.Current)
} while (myEnumerator.MoveNext())

Visual Basic
myEnumerator.Reset()
Do
   lstStrings.items.Add(myEnumerator.Current)
Loop While (myEnumerator.MoveNext())
 
Option D

C#
do
{
   lstStrings.items.Add(myEnumerator.Current)
   myEnumerator.Reset();
} while (myEnumerator.MoveNext())

Visual Basic
myEnumerator.Reset()
Do
   lstStrings.items.Add(myEnumerator.Current)
Loop Until (myEnumerator.MoveNext())

Sunday, August 21, 2011

Microsoft Student Partner

Now's your time to shine!

  • the program
    As a Microsoft Student Partner, you’ll be challenged to use your enthusiasm and knowledge to lead the technology discussion on your campus. You’ll demo the latest and greatest technologies, host events, and connect with other students and faculty to inspire them to create what’s next.
  • the perks
    Sure, you'll get access to Microsoft software, training and swag, but we think the real perks are the intangible ones. We're talking about the skills, connections and portfolio you'll build in this role. You'll get the inside scoop to our latest products and job opportunities, meet like-minded individuals from around the world, and boost your resume with invaluable real world skills.
  • the people (YOU!)
    You'll need to be part technology guru, part trendsetter, and full on student. We select top young minds from around the world that are passionate about technology, marketing and entrepreneurship. If your eyes light up every time you get your hands on the hottest technology gadget and you can't wait to show the world, then this is the role for you!​
    For More Details Visit: https://www.microsoftstudentpartners.com/