Here is a web-based solution that purports to be fully integrated with Team Web Access.
http://www.sela.co.il/alm/products_WTM.html
http://www.sela.co.il/alm/downloadCenter.html
http://www.sela.co.il/alm/purchase.html
http://www.youtube.com/watch?v=kNDWeTaXUUw
http://www.youtube.com/watch?v=FsUnO3ggVQA
Saturday, September 10, 2011
Monday, April 25, 2011
Evaluating Application Lifecycle Management Products
By application lifecycle management (ALM) I mean all the technical/business processes that go into managing software applications end-to-end and all the interactions along the way with other applications, infrastructures, business processes, customers, partners, and vendors. This includes infrastructure management, portfolio management, project management, resource management, demands/finances, processes, builds & automated testing, testing management, deployment management, configuration & version control.
It’s always good to ask the proponents & evaluators of ALM products/solutions the list of questions below in order to see whether they have a viable alternative to Microsoft Team Foundation Server (TFS). Question 21 in particular is vital because it shows the hidden costs (which are less than the costs of all integration being manual) on picking ALM solutions and how this process is primarily an exercise is looking for tight data integration between the ALM processes being built-in. It's a reminder to all of us that the whole term "Application Integration" is a misnomer. It's really "Data Integration" and its where most organizations seem to spend most of their IT dollars and more than they should because most people fail to understand this misnomer.
Questions 20/21 are the #1 reason why I'm a big fan of TFS. The foundation for all of that is all built-in. If you look at the power of Network Isolation in Visual Studio Lab Management and how it tightly integrates with all the other processes/data in TFS, you'll see what I mean. You'll never look at the millions annually that many IT organizations spend making up for theses integration difficulties the same ever again. And frankly I refuse to accept that TFS is any sort of holy grail. If a more effective alternative (or collection of alternatives) comes along with better ROI then I'm all ears.
Here's the questions:
1. How does the product/solution do project planning (including work breakdown, areas & iterations)?
2. How does the product/solution do applications' portfolio management?
3. How does the product/solution do Human Resources Planning for projects/teams? This could include (or at least be integrated easily) information on managing demand/priorities and the financials for the projects/teams.
4. How does the product/solution do infrastructure/machines planning/management?
5. How does the product/solution do requirements analysis?
6. How does the product/solution do testing management?
7. How does the product/solution do automated testing?
8. How does the product/solution do software architecture (i.e. UML, diagrams, etc.)?
9. How does the product/solution do design (i.e. wireframes, mockups, etc.)?
10. How does the product/solution do development/compiling software?
11. How does the product/solution do documentation management?
12. How does the product/solution do version control on project artifacts (i.e. code, documentation, etc.)?
13. How does the product/solution do bug tracking?
14. How does the product/solution do risk management?
15. How does the product/solution do task management?
16. How does the product/solution do environments provisioning/decommissioning?
17. How does the product/solution do environments' templates management?
18. How does the product/solution do auditing/compliance from end-to-end?
19. This is a 18-part question (i.e. on each of the 18 capabilities) - how do you customize the capability in case of a business need (i.e. changing vision, changing processes, reorganizations, mergers, acquisitions, etc.) and the need to integrate with processes not covered in the 17 capabilities listed?
20. This is a 153-part question (i.e. half of 17*18 on each of the first 18 questions) - how do each of these capabilities integrate with each other?
21. This is also a 153-part question - how can each of these integrations be customized if needed in case of a business need?
22. This is a 6+ part question - How does the product/solution integrate with the organization’s current key users' tools - i.e. Office Excel, Office Project, Clipboard, Outlook, Visual Studio, Eclipse, etc.?
23. This is a 5+ part question - How does the product/solution integrate with the organization’s current key server/infrastructure tools - i.e. VMWare, Hyper-V, Active Directory, SQL Server, SharePoint, etc.?
24. How does the product/solution integrate with other product/solutions that the organization is using, thinking of using, partnering with other organizations where they need to integrate, or unplanned future integration needs? For example, DOORS, Rational, Google Apps, etc. or other types of systems (i.e. Oracle (PeopleSoft, Sun, Siebel), SAP, SalesForce.com, etc.), and cloud solutions like Service-Now & Concur?
25. What is the backup/recovery process for the product/solution?
26. What does the potential migration path away from this product/solution to a future ALM product/solution look like?
It’s always good to ask the proponents & evaluators of ALM products/solutions the list of questions below in order to see whether they have a viable alternative to Microsoft Team Foundation Server (TFS). Question 21 in particular is vital because it shows the hidden costs (which are less than the costs of all integration being manual) on picking ALM solutions and how this process is primarily an exercise is looking for tight data integration between the ALM processes being built-in. It's a reminder to all of us that the whole term "Application Integration" is a misnomer. It's really "Data Integration" and its where most organizations seem to spend most of their IT dollars and more than they should because most people fail to understand this misnomer.
Questions 20/21 are the #1 reason why I'm a big fan of TFS. The foundation for all of that is all built-in. If you look at the power of Network Isolation in Visual Studio Lab Management and how it tightly integrates with all the other processes/data in TFS, you'll see what I mean. You'll never look at the millions annually that many IT organizations spend making up for theses integration difficulties the same ever again. And frankly I refuse to accept that TFS is any sort of holy grail. If a more effective alternative (or collection of alternatives) comes along with better ROI then I'm all ears.
Here's the questions:
1. How does the product/solution do project planning (including work breakdown, areas & iterations)?
2. How does the product/solution do applications' portfolio management?
3. How does the product/solution do Human Resources Planning for projects/teams? This could include (or at least be integrated easily) information on managing demand/priorities and the financials for the projects/teams.
4. How does the product/solution do infrastructure/machines planning/management?
5. How does the product/solution do requirements analysis?
6. How does the product/solution do testing management?
7. How does the product/solution do automated testing?
8. How does the product/solution do software architecture (i.e. UML, diagrams, etc.)?
9. How does the product/solution do design (i.e. wireframes, mockups, etc.)?
10. How does the product/solution do development/compiling software?
11. How does the product/solution do documentation management?
12. How does the product/solution do version control on project artifacts (i.e. code, documentation, etc.)?
13. How does the product/solution do bug tracking?
14. How does the product/solution do risk management?
15. How does the product/solution do task management?
16. How does the product/solution do environments provisioning/decommissioning?
17. How does the product/solution do environments' templates management?
18. How does the product/solution do auditing/compliance from end-to-end?
19. This is a 18-part question (i.e. on each of the 18 capabilities) - how do you customize the capability in case of a business need (i.e. changing vision, changing processes, reorganizations, mergers, acquisitions, etc.) and the need to integrate with processes not covered in the 17 capabilities listed?
20. This is a 153-part question (i.e. half of 17*18 on each of the first 18 questions) - how do each of these capabilities integrate with each other?
21. This is also a 153-part question - how can each of these integrations be customized if needed in case of a business need?
22. This is a 6+ part question - How does the product/solution integrate with the organization’s current key users' tools - i.e. Office Excel, Office Project, Clipboard, Outlook, Visual Studio, Eclipse, etc.?
23. This is a 5+ part question - How does the product/solution integrate with the organization’s current key server/infrastructure tools - i.e. VMWare, Hyper-V, Active Directory, SQL Server, SharePoint, etc.?
24. How does the product/solution integrate with other product/solutions that the organization is using, thinking of using, partnering with other organizations where they need to integrate, or unplanned future integration needs? For example, DOORS, Rational, Google Apps, etc. or other types of systems (i.e. Oracle (PeopleSoft, Sun, Siebel), SAP, SalesForce.com, etc.), and cloud solutions like Service-Now & Concur?
25. What is the backup/recovery process for the product/solution?
26. What does the potential migration path away from this product/solution to a future ALM product/solution look like?
Wednesday, March 30, 2011
Integrating with Microsoft Test Manager
A big reason why Microsoft is winning the war for minds in the IT industry is because of all the capabilities for integrating their tools with your world your way. Here's a list of 10 useful links to help you get going on integrating your organization's ALM processes with Microsoft Test Manager.
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.testmanagement.client.aspx
The Microsoft.TeamFoundation.TestManagement.Client namespace opens up all the key MTM functionality.
http://msdn.microsoft.com/en-us/library/dd465178.aspx
API Reference for Testing Tools for Visual Studio ALM
http://msdn.microsoft.com/en-us/library/dd470570.aspx
Extending Visual Studio Application Lifecycle Management
http://msdn.microsoft.com/en-us/magazine/cc507647.aspx
Team Foundation Server Event Services
http://msdn.microsoft.com/en-us/library/bb130306.aspx
Finding Bugs, Tasks, and Other Work Items by Using the Work Item Query Language and the Client Object Model for Team Foundation
http://msdn.microsoft.com/en-US/library/bb130146(v=VS.100).aspx
Extending Team Foundation 2010 using API & Object Model
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.workitemtracking.client(v=VS.100).aspx
Microsoft.TeamFoundation.WorkItemTracking.Client Namespace
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.testimpact.buildintegration.buildactivities.testlist_methods.aspx
Microsoft.TeamFoundation.TestImpact.BuildIntegration.BuildActivities.TestList Methods
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.testimpact.client.aspx
Microsoft.TeamFoundation.TestImpact.Client Namespace
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.client.tswaclienthyperlinkservice.aspx
A utility class to generate Team Web Access hyperlinks
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.testmanagement.client.aspx
The Microsoft.TeamFoundation.TestManagement.Client namespace opens up all the key MTM functionality.
http://msdn.microsoft.com/en-us/library/dd465178.aspx
API Reference for Testing Tools for Visual Studio ALM
http://msdn.microsoft.com/en-us/library/dd470570.aspx
Extending Visual Studio Application Lifecycle Management
http://msdn.microsoft.com/en-us/magazine/cc507647.aspx
Team Foundation Server Event Services
http://msdn.microsoft.com/en-us/library/bb130306.aspx
Finding Bugs, Tasks, and Other Work Items by Using the Work Item Query Language and the Client Object Model for Team Foundation
http://msdn.microsoft.com/en-US/library/bb130146(v=VS.100).aspx
Extending Team Foundation 2010 using API & Object Model
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.workitemtracking.client(v=VS.100).aspx
Microsoft.TeamFoundation.WorkItemTracking.Client Namespace
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.testimpact.buildintegration.buildactivities.testlist_methods.aspx
Microsoft.TeamFoundation.TestImpact.BuildIntegration.BuildActivities.TestList Methods
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.testimpact.client.aspx
Microsoft.TeamFoundation.TestImpact.Client Namespace
http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.client.tswaclienthyperlinkservice.aspx
A utility class to generate Team Web Access hyperlinks
Thursday, March 17, 2011
Application Lifecycle Management 2010 Resources
http://msdn.microsoft.com/en-us/library/bb385832.aspx
What's New for ALM in Visual Studio 2010
http://msdn.microsoft.com/en-us/library/dd409436.aspx
UML Diagrams - Activities, Components, Class, Sequence, Use Case
http://msdn.microsoft.com/en-us/library/ff657795.aspx
Generating Code from UML Class Diagrams
http://msdn.microsoft.com/en-us/library/dd286726.aspx
Automated/Coded UI Tests - Manual->Automated, Record User Actions, UI Controls & Validation,
Data-Driven Testing, Link Test Cases & Requirements, Running, Best Practices
http://msdn.microsoft.com/en-us/library/dd264915.aspx
IntelliTrace - faster debugging, non-repros, support scenarios, collection levels, navigating events/calls/etc.
What's New for ALM in Visual Studio 2010
http://msdn.microsoft.com/en-us/library/dd409436.aspx
UML Diagrams - Activities, Components, Class, Sequence, Use Case
http://msdn.microsoft.com/en-us/library/ff657795.aspx
Generating Code from UML Class Diagrams
http://msdn.microsoft.com/en-us/library/dd286726.aspx
Automated/Coded UI Tests - Manual->Automated, Record User Actions, UI Controls & Validation,
Data-Driven Testing, Link Test Cases & Requirements, Running, Best Practices
http://msdn.microsoft.com/en-us/library/dd264915.aspx
IntelliTrace - faster debugging, non-repros, support scenarios, collection levels, navigating events/calls/etc.
Wednesday, February 23, 2011
Life for IT Directors
Here's a fictional scenario of a meeting between a TFS Consultant and a IT Director.
TFS Consultant: Hi I'm Alex and I'm the TFS Consultant you hired to work for a brief engagement in your company.
IT Director: Hi please call me George. Oh yes you're the guy putting in the new version control system to replace SourceSafe.
TFS Consultant: Yes that's the plan George. And while I implement the new Version Control would you like to look at implementing any of the other TFS functionality.
IT Director: No thanks. Our processes work very well here. We'll just be using TFS for Version Control.
(Knock on the door)
Accounting Manager Tom: George, I need to get the expenditure numbers by project for year to date.
IT Director: Excuse me Alex. I'd like to get this for you Tom but so far I've only gotten responses from 2 of the 8 project managers and even both of those are mostly inaccurate because the developers aren't responding to the emails to go back to their timesheets and email in the numbers.
Accounting Manager Tom: Well we have to get this by Friday.
IT Director: OK I'll tell the managers to stay late tonight and tomorrow so we can get this done. But please understand Tom that I lost my best PM last week who took a new job and left with the complaint that she had to stay too late too often and had problems with daycare.
Accounting Manager Tom: I see but the CFO insists on this so we must get it done.
IT Director: OK (Tom leave). Umm Alex where were we.
TFS Consultant: We were discussing how I'm going to migrate the version control from SourceSafe to TFS so all your developers & everyone else can have full insight into all the version control for builds & reporting in the future.
IT Director: That's correct. But I'm wondering what you mean by "full insight"?
TFS Consultant: It means that TFS has more capabilites for reporting than SourceSafe ever had and that you can integrate Version Control tighter in with your IT processes such as resource planning, work tracking, timesheets, builds, environments configurations, testing, and process improvement.
IT Director: That's all very interesting but lets make sure we stay focused on the version control migration.
TFS Consultant: OK I will do this. Now once the configuration and migration are complete I can do some testing for you with the reports that'll take a few hours to make sure the Version Control is running smoothly. In the past I prepared a special Sarbanes-Oxley Compliance report that one IT organization found very useful for their auditors.
IT Director: No that won't be necessary. Our processes are fine and we can't afford to do more than configuration and migration.
(Knock at the Door)
Project Manager Patty: Hi George I'm sorry to interrupt but I have something urgent.
IT Director: Yes Patty. What's up?
Project Manager Patty: The internal auditors just called me up yelling that we haven't gotten them the compliance report on our Transactions v2.4 change requests #122, 133, 141, 148 and 162. The problem is that I have no idea how I'm going to get all this information together. I've been working on this for 3 days but can't seem to get all the details pulled together.
IT Director: Have you talked to the Build group to get the information on the days/servers used for the builds?
Project Manager Patty: I talked to their manager Fred a week ago but he's out on vacation this week. The analyst who did it is Jeff but he's tied up doing some paperwork related to the IT resource planning system bug fixes for HR. And the other two analysts William and Susan don't know anything about this so I have to wait til Fred gets back next week.
IT Director: How about talking to Kyle? He's our most experienced project manager. He might know some way to get behind the scenes to find out where the build paperwork is.
Project Manager Patty: I tried getting some of Kyle's time. But he's tied up trying to get the new dev environment setup for the new IT timetracking project. Unfortunately as you know it takes months to get new environments configured around here.
IT Director: That's true. Well why not talk to Mary?
Project Manager Patty: I thought of that too. Unfortunately she's chasing down release paperwork for a few of her change requests that are going in. And I can't even get hold of Bob in the timetracking group so I can get access to the timesheets in order to get them and the SourceSafe history reports to the developers so they can stop their development work for a couple days and go through them to cross-reference their changes with what days & timesheet line items they used for doing the work.
IT Director: Well keep pushing on them because we need to get this done for auditing. And make sure to check with Rhonda to get the requirements and design documents out plus the Requirements Traceability Matrix so the developers do that cross-referencing documentation too. The external auditors yelled at me last time because the internal auditors didn't provide all the data that's necessary for SOX compliance.
Project Manager Patty: Oh I forgot about that. I'll do that too. (She leaves).
IT Director: Whew .... now where were we Alex?
TFS Consultant: I was explaining how I'm going to implement TFS for Version Control and do your SourceSafe migration.
IT Director: That's right.
(Knock on Door)
Project Manager Tim: Hi George, do you have a minute?
IT Director: Sure but make it quick please.
Project Manager Tim: I'm having a real problem with the 2 new Sr. developers we just hired. They don't want to use our timesheet system, maintain the RTM, contact the bug tracking team or requirements team to get userids for their systems, and they keep complaining about our lack of integrated processes in Visual Studio.
IT Director: This isn't good. In filling the last 3 senior slots we looked at hundreds of resumes, interviewed almost 50 people, made 15 offers, 5 never showed, 7 turned us down, 1 starts next week, and these 2 aren't fitting in.
Project Manager Tim: Yes George this is a problem. What do you suggest we do?
IT Director: We should probably put out a new job opening advertisement and call some of the staffing companies. I need you Tim to stay late tonight and I want you to go tell Patty to come see me so we can put the auditors on hold for a week and get ready for another long round of interviewing. Next time we need to make sure we filter out up front to get good cultural fits here with people who will follow our processes.
Project Manager Tim: OK George. And another thing I forgot to tell you is that Nancy my tester has turned in her notice. She's complained that she doesn't have any testing tools that work in our environment.
IT Director: Oh yes she's the one who wanted Microsoft Test Manager. Yeah I heard something about it being used for managing manual and automated tests. She seemed bright. We paid 20K to a headhunter 3 months ago to get her. But another manager also told me she's complained about our buggy test mangement website and the fact that it doesn't integrate with our builds or anything else. But you and I both know Tim that its been useful for us. We've also invested over 500K into this thing so we're not going to replace it ever. And we're not going to spend hundreds of thousands more to integrate it in with everything else. Next time be sure we hire a tester who is fine with our disintegrated processes.
Project Manager Tim: OK George. I'll get on these things right now. (Tim departs)
IT Director: Sorry again Alex. But I'm glad you're still here because I wanted to know something about this TFS. Will it work with Visual Studio 2010 as well as SourceSafe does in Visual Studio 2008?
TFS Consultant: Yes it will George. In Visual Studio you can manage all your TFS work items, builds, versioned items, lab builds, and link in to the portal & reports & other TFS data shared with the testers, managers, auditors, and users who access the data through Microsoft Project, Microsoft Excel, Outlook, or other products. For developers the version control works much the same as it does for SourceSafe. Of course you can establish policies for checkins to make sure that any code changes get correlated with requirements, bugs, tasks, user stories or other work items when being checked in so you can get end-to-end traceability on everything.
IT Director: OK this is good to know. At least I won't have my developers quitting on me if Visual Studio 2010 doesn't connect with Version Control. Sometimes its so hard to get the developers to communicate with the rest of the world. They won't tell their managers when they checkin source code or make changes. The build team has a terrible time getting all the correct artifacts and its an endless loop of circles getting them all to communicate. And the disconnect between the developers and the business analysts and the release management people is really getting bad.
(Knock on Door)
Infrastructure Manager Marcus: Hi George, we have a problem. Got a minute?
IT Director: OK Marcus please make it quick.
Infrastructure Manager Marcus: The team leads for the timetracking system and the new AP system are having an argument. Both of them claim that I had agreed to give them each 3 new servers this week. But we only have 3 servers total and won't have another 3 for 2 more weeks. I need your help refereeing this issue.
IT Director: OK Marcus please send them over at 10am so we can resolve this. (Marcus leaves)
IT Director: I'm curious Alex. How did you guys do servers assignments on your last gig?
TFS Consultant: We used Visual Studio Lab Management in conjunction with System Center Virtual Machine Manager to manage the Hyper-V and VMWare hosts. Each TFS Project Collection would be assigned a group of hosts & SAN libraries for provisioning & managing virtual servers.
IT Director: What does TFS do servers management?
TFS Consultant: Yes in conjunction with the Lab capabilities of Microsoft Test Manager you can use System Center virtual machine templates and machines to create environment templates and then provision environments as you need. When an environment isn't being used you can shut it down in order to conserve memory on your VMWares and Hyper-Vs. And the best part of it all is that you can integrate it in with all your IT processes.
IT Director: OK now you must be fooling me. There is no way to integrate server management in like that.
TFS Consultant: In the past that's correct. TFS 2008 and all the other ALM products out there have no such capability.
IT Director: So I assume you're going to tell me that TFS 2010 can do this. Maybe you'll tell me it can even do timesheets for everyone?
TFS Consultant: On my last gig we actually did this. In TFS is a capability called Work Item Tracking. We used the Agile out of the box work item types of Task, Bug, Risk, User Story, and Test Case quite extensively. We built 2 new work item types called Time Period and Task Period for timesheets. The developers did all their time tracking in Visual Studio. Whenever they checked in code they'd have to associate their checkins with the tasks they were working on. And their timesheets would autopopulate with the system's best guess on how they spent their days according to their versioned items checkins and then they'd make adjustments each time period to submit a timesheet. For some groups they did time tracking by week, others did it semimonthly, others did it biweekly, and others on a monthly basis. All of their needs were fulfilled.
IT Director: Hmmm this is interesting. But can TFS do resource planning?
TFS Consultant: Sure. As new projects are prioritized your PM(s) can quickly access historical data in many types of reports and make estimates on when & how much they'll need of the different resource types. In addition they can organize this by area/iteration.
IT Director: But how does it do build management and release management?
TFS Consultant: These capabilities are integral to TFS and you get full end-to-end traceability through the types of work items and the relations between work items with versioned items, builds, environments, and other links/artifacts.
IT Director: Testing and Requirements too?
TFS Consultant: Yes these capabilities are integral too.
IT Director: How about providing all the full end-to-end traceability reports for the auditors, accounting and other groups throughout the company?
TFS Consultant: With TFS you can do all this out of the box.
IT Director: Wow this is amazing. But how do you handle situations where managers have different workflows and metrics they need to track?
TFS Consultant: We can customize their process templates, work item types, workflows, and handle all those scenarios.
IT Director: What if a manager doesn't want to use TFS? Most of our managers like to use Microsoft Project.
TFS Consultant: Microsoft Project is an integral TFS tool.
IT Director: What about Excel?
TFS Consultant: Same.
IT Director: What about our Java developers? They use Subversion and Maven for version control and builds.
TFS Consultant: They could continue to do this. However a lot of Java developers have really found they prefer Team Explorer Everwhere as it allows all the .NET and Java developers to use the same platform for all their versioned items, work items, builds, and lab environments under the same foundation system.
IT Director: This is fascinating. I'm going to talk to my managers this afternoon and setup a meeting for you to answer some questions my managers and I have on our processes and how TFS works. I'll take you right now to meet our SourceSafe administrator who you will be training to administer the new TFS once you've set it up.
TFS Consultant: OK this sounds good.
IT Director: Do you often find that other places look at TFS as just SourceSafe replacement?
TFS Consultant: Yes I do. Most of them have very mature processes that have worked well in the past. However they've discovered that the pace of change and agility in the business world and its impact on IT is really causing lots of chaos.
IT Director: Sure I can relate. Our processes have worked really well for us in the past. However we're seeing them disintegrate. Our new IT employees are hard to retain. And many of our best are going elsewhere. I can imagine that anyone coming in suggesting TFS Work Item Tracking is going to face some resistance because it requires a major cultural change.
TFS Consultant: Sure I've seen this. They typically behave like blacksmiths getting introduced to jet aircraft who say "how are we supposed to put this big bulky aircraft on the horse's hoof". Then they do the equivalent of explaining to me the merits of horseshoes over jets for use on horses. They're absolutely correct IF they think they're in the equestrian industry. But they're dead if they don't catch on to the paradigm shift that's transforming the IT industry fast right now. It certainly isn't my job to sell you on TFS. But the honest truth George is that I haven't found any one platform that does all the end-to-end IT processes like TFS.
TFS Consultant: Hi I'm Alex and I'm the TFS Consultant you hired to work for a brief engagement in your company.
IT Director: Hi please call me George. Oh yes you're the guy putting in the new version control system to replace SourceSafe.
TFS Consultant: Yes that's the plan George. And while I implement the new Version Control would you like to look at implementing any of the other TFS functionality.
IT Director: No thanks. Our processes work very well here. We'll just be using TFS for Version Control.
(Knock on the door)
Accounting Manager Tom: George, I need to get the expenditure numbers by project for year to date.
IT Director: Excuse me Alex. I'd like to get this for you Tom but so far I've only gotten responses from 2 of the 8 project managers and even both of those are mostly inaccurate because the developers aren't responding to the emails to go back to their timesheets and email in the numbers.
Accounting Manager Tom: Well we have to get this by Friday.
IT Director: OK I'll tell the managers to stay late tonight and tomorrow so we can get this done. But please understand Tom that I lost my best PM last week who took a new job and left with the complaint that she had to stay too late too often and had problems with daycare.
Accounting Manager Tom: I see but the CFO insists on this so we must get it done.
IT Director: OK (Tom leave). Umm Alex where were we.
TFS Consultant: We were discussing how I'm going to migrate the version control from SourceSafe to TFS so all your developers & everyone else can have full insight into all the version control for builds & reporting in the future.
IT Director: That's correct. But I'm wondering what you mean by "full insight"?
TFS Consultant: It means that TFS has more capabilites for reporting than SourceSafe ever had and that you can integrate Version Control tighter in with your IT processes such as resource planning, work tracking, timesheets, builds, environments configurations, testing, and process improvement.
IT Director: That's all very interesting but lets make sure we stay focused on the version control migration.
TFS Consultant: OK I will do this. Now once the configuration and migration are complete I can do some testing for you with the reports that'll take a few hours to make sure the Version Control is running smoothly. In the past I prepared a special Sarbanes-Oxley Compliance report that one IT organization found very useful for their auditors.
IT Director: No that won't be necessary. Our processes are fine and we can't afford to do more than configuration and migration.
(Knock at the Door)
Project Manager Patty: Hi George I'm sorry to interrupt but I have something urgent.
IT Director: Yes Patty. What's up?
Project Manager Patty: The internal auditors just called me up yelling that we haven't gotten them the compliance report on our Transactions v2.4 change requests #122, 133, 141, 148 and 162. The problem is that I have no idea how I'm going to get all this information together. I've been working on this for 3 days but can't seem to get all the details pulled together.
IT Director: Have you talked to the Build group to get the information on the days/servers used for the builds?
Project Manager Patty: I talked to their manager Fred a week ago but he's out on vacation this week. The analyst who did it is Jeff but he's tied up doing some paperwork related to the IT resource planning system bug fixes for HR. And the other two analysts William and Susan don't know anything about this so I have to wait til Fred gets back next week.
IT Director: How about talking to Kyle? He's our most experienced project manager. He might know some way to get behind the scenes to find out where the build paperwork is.
Project Manager Patty: I tried getting some of Kyle's time. But he's tied up trying to get the new dev environment setup for the new IT timetracking project. Unfortunately as you know it takes months to get new environments configured around here.
IT Director: That's true. Well why not talk to Mary?
Project Manager Patty: I thought of that too. Unfortunately she's chasing down release paperwork for a few of her change requests that are going in. And I can't even get hold of Bob in the timetracking group so I can get access to the timesheets in order to get them and the SourceSafe history reports to the developers so they can stop their development work for a couple days and go through them to cross-reference their changes with what days & timesheet line items they used for doing the work.
IT Director: Well keep pushing on them because we need to get this done for auditing. And make sure to check with Rhonda to get the requirements and design documents out plus the Requirements Traceability Matrix so the developers do that cross-referencing documentation too. The external auditors yelled at me last time because the internal auditors didn't provide all the data that's necessary for SOX compliance.
Project Manager Patty: Oh I forgot about that. I'll do that too. (She leaves).
IT Director: Whew .... now where were we Alex?
TFS Consultant: I was explaining how I'm going to implement TFS for Version Control and do your SourceSafe migration.
IT Director: That's right.
(Knock on Door)
Project Manager Tim: Hi George, do you have a minute?
IT Director: Sure but make it quick please.
Project Manager Tim: I'm having a real problem with the 2 new Sr. developers we just hired. They don't want to use our timesheet system, maintain the RTM, contact the bug tracking team or requirements team to get userids for their systems, and they keep complaining about our lack of integrated processes in Visual Studio.
IT Director: This isn't good. In filling the last 3 senior slots we looked at hundreds of resumes, interviewed almost 50 people, made 15 offers, 5 never showed, 7 turned us down, 1 starts next week, and these 2 aren't fitting in.
Project Manager Tim: Yes George this is a problem. What do you suggest we do?
IT Director: We should probably put out a new job opening advertisement and call some of the staffing companies. I need you Tim to stay late tonight and I want you to go tell Patty to come see me so we can put the auditors on hold for a week and get ready for another long round of interviewing. Next time we need to make sure we filter out up front to get good cultural fits here with people who will follow our processes.
Project Manager Tim: OK George. And another thing I forgot to tell you is that Nancy my tester has turned in her notice. She's complained that she doesn't have any testing tools that work in our environment.
IT Director: Oh yes she's the one who wanted Microsoft Test Manager. Yeah I heard something about it being used for managing manual and automated tests. She seemed bright. We paid 20K to a headhunter 3 months ago to get her. But another manager also told me she's complained about our buggy test mangement website and the fact that it doesn't integrate with our builds or anything else. But you and I both know Tim that its been useful for us. We've also invested over 500K into this thing so we're not going to replace it ever. And we're not going to spend hundreds of thousands more to integrate it in with everything else. Next time be sure we hire a tester who is fine with our disintegrated processes.
Project Manager Tim: OK George. I'll get on these things right now. (Tim departs)
IT Director: Sorry again Alex. But I'm glad you're still here because I wanted to know something about this TFS. Will it work with Visual Studio 2010 as well as SourceSafe does in Visual Studio 2008?
TFS Consultant: Yes it will George. In Visual Studio you can manage all your TFS work items, builds, versioned items, lab builds, and link in to the portal & reports & other TFS data shared with the testers, managers, auditors, and users who access the data through Microsoft Project, Microsoft Excel, Outlook, or other products. For developers the version control works much the same as it does for SourceSafe. Of course you can establish policies for checkins to make sure that any code changes get correlated with requirements, bugs, tasks, user stories or other work items when being checked in so you can get end-to-end traceability on everything.
IT Director: OK this is good to know. At least I won't have my developers quitting on me if Visual Studio 2010 doesn't connect with Version Control. Sometimes its so hard to get the developers to communicate with the rest of the world. They won't tell their managers when they checkin source code or make changes. The build team has a terrible time getting all the correct artifacts and its an endless loop of circles getting them all to communicate. And the disconnect between the developers and the business analysts and the release management people is really getting bad.
(Knock on Door)
Infrastructure Manager Marcus: Hi George, we have a problem. Got a minute?
IT Director: OK Marcus please make it quick.
Infrastructure Manager Marcus: The team leads for the timetracking system and the new AP system are having an argument. Both of them claim that I had agreed to give them each 3 new servers this week. But we only have 3 servers total and won't have another 3 for 2 more weeks. I need your help refereeing this issue.
IT Director: OK Marcus please send them over at 10am so we can resolve this. (Marcus leaves)
IT Director: I'm curious Alex. How did you guys do servers assignments on your last gig?
TFS Consultant: We used Visual Studio Lab Management in conjunction with System Center Virtual Machine Manager to manage the Hyper-V and VMWare hosts. Each TFS Project Collection would be assigned a group of hosts & SAN libraries for provisioning & managing virtual servers.
IT Director: What does TFS do servers management?
TFS Consultant: Yes in conjunction with the Lab capabilities of Microsoft Test Manager you can use System Center virtual machine templates and machines to create environment templates and then provision environments as you need. When an environment isn't being used you can shut it down in order to conserve memory on your VMWares and Hyper-Vs. And the best part of it all is that you can integrate it in with all your IT processes.
IT Director: OK now you must be fooling me. There is no way to integrate server management in like that.
TFS Consultant: In the past that's correct. TFS 2008 and all the other ALM products out there have no such capability.
IT Director: So I assume you're going to tell me that TFS 2010 can do this. Maybe you'll tell me it can even do timesheets for everyone?
TFS Consultant: On my last gig we actually did this. In TFS is a capability called Work Item Tracking. We used the Agile out of the box work item types of Task, Bug, Risk, User Story, and Test Case quite extensively. We built 2 new work item types called Time Period and Task Period for timesheets. The developers did all their time tracking in Visual Studio. Whenever they checked in code they'd have to associate their checkins with the tasks they were working on. And their timesheets would autopopulate with the system's best guess on how they spent their days according to their versioned items checkins and then they'd make adjustments each time period to submit a timesheet. For some groups they did time tracking by week, others did it semimonthly, others did it biweekly, and others on a monthly basis. All of their needs were fulfilled.
IT Director: Hmmm this is interesting. But can TFS do resource planning?
TFS Consultant: Sure. As new projects are prioritized your PM(s) can quickly access historical data in many types of reports and make estimates on when & how much they'll need of the different resource types. In addition they can organize this by area/iteration.
IT Director: But how does it do build management and release management?
TFS Consultant: These capabilities are integral to TFS and you get full end-to-end traceability through the types of work items and the relations between work items with versioned items, builds, environments, and other links/artifacts.
IT Director: Testing and Requirements too?
TFS Consultant: Yes these capabilities are integral too.
IT Director: How about providing all the full end-to-end traceability reports for the auditors, accounting and other groups throughout the company?
TFS Consultant: With TFS you can do all this out of the box.
IT Director: Wow this is amazing. But how do you handle situations where managers have different workflows and metrics they need to track?
TFS Consultant: We can customize their process templates, work item types, workflows, and handle all those scenarios.
IT Director: What if a manager doesn't want to use TFS? Most of our managers like to use Microsoft Project.
TFS Consultant: Microsoft Project is an integral TFS tool.
IT Director: What about Excel?
TFS Consultant: Same.
IT Director: What about our Java developers? They use Subversion and Maven for version control and builds.
TFS Consultant: They could continue to do this. However a lot of Java developers have really found they prefer Team Explorer Everwhere as it allows all the .NET and Java developers to use the same platform for all their versioned items, work items, builds, and lab environments under the same foundation system.
IT Director: This is fascinating. I'm going to talk to my managers this afternoon and setup a meeting for you to answer some questions my managers and I have on our processes and how TFS works. I'll take you right now to meet our SourceSafe administrator who you will be training to administer the new TFS once you've set it up.
TFS Consultant: OK this sounds good.
IT Director: Do you often find that other places look at TFS as just SourceSafe replacement?
TFS Consultant: Yes I do. Most of them have very mature processes that have worked well in the past. However they've discovered that the pace of change and agility in the business world and its impact on IT is really causing lots of chaos.
IT Director: Sure I can relate. Our processes have worked really well for us in the past. However we're seeing them disintegrate. Our new IT employees are hard to retain. And many of our best are going elsewhere. I can imagine that anyone coming in suggesting TFS Work Item Tracking is going to face some resistance because it requires a major cultural change.
TFS Consultant: Sure I've seen this. They typically behave like blacksmiths getting introduced to jet aircraft who say "how are we supposed to put this big bulky aircraft on the horse's hoof". Then they do the equivalent of explaining to me the merits of horseshoes over jets for use on horses. They're absolutely correct IF they think they're in the equestrian industry. But they're dead if they don't catch on to the paradigm shift that's transforming the IT industry fast right now. It certainly isn't my job to sell you on TFS. But the honest truth George is that I haven't found any one platform that does all the end-to-end IT processes like TFS.
Friday, February 11, 2011
DOORS-TFS Integration Tool
A lot of IT shops with very detailed/specific requirements use DOORS. Now that it integrates with TFS you'll see alot more TFS adoption in the future.
http://www.aitgmbh.de/doors-rif-synchronisation.0.html?&L=1
http://www.aitgmbh.de/doors-rif-synchronisation.0.html?&L=1
Saturday, November 6, 2010
CMAP Presentations
Today I gave presentations at the CMAP Code Camp in Columbia, Maryland. See http://www.cmap-online.org/CodeCamp/Sessions.aspx for details on the camp.
See http://www.degaston.com/de1106.zip for source code.
1. Do Application Lifecycle Management Your Way Using Visual Studio Team System and Custom .NET Code
See http://www.degaston.com/tfs1106.ppt for presentation.
IT developers face never ending productivity and progress interruptions due to the need to do status reporting, documentation, and a whole assortment of tasks. Likewise their managers face great challenges due to the disintegration of the project management, work item tracking, development, deployment/implementation, operations/maintenance, reporting and documentation processes. In order for teams to greatly reduce these interruptions, disintegration issues and truly integrate all key development and application lifecycle management (ALM) processes, Microsoft introduced Team Foundation Server (TFS) 2005 and its subsequent improved TFS 2008 and TFS 2010 versions. It’s what runs Codeplex.com, all of Microsoft’s key internal ALM processes for their flagship products, and it’s an integral part of Visual Studio and all MSDN developer subscriptions going forward. This session will focus on how developers/managers can extend TFS through configuration settings, process templates customization and building custom .NET solutions in order to adapt TFS to your organization/team internal processes.
2. Create a SharePoint Web Part Wrapper for ASP.Net User Controls
See http://www.degaston.com/sp1106.ppt for presentation.
SharePoint is presently one of the most popular web application development platforms in the world and ASP.Net is central to its success. In the past SharePoint developers would build many custom web parts. Recently the trend has been towards using a container for ASP.Net user controls in order to simplify deployment, make the development/customization process easier, and quickly enable .NET developers to be effective SharePoint developers.
See http://www.degaston.com/de1106.zip for source code.
1. Do Application Lifecycle Management Your Way Using Visual Studio Team System and Custom .NET Code
See http://www.degaston.com/tfs1106.ppt for presentation.
IT developers face never ending productivity and progress interruptions due to the need to do status reporting, documentation, and a whole assortment of tasks. Likewise their managers face great challenges due to the disintegration of the project management, work item tracking, development, deployment/implementation, operations/maintenance, reporting and documentation processes. In order for teams to greatly reduce these interruptions, disintegration issues and truly integrate all key development and application lifecycle management (ALM) processes, Microsoft introduced Team Foundation Server (TFS) 2005 and its subsequent improved TFS 2008 and TFS 2010 versions. It’s what runs Codeplex.com, all of Microsoft’s key internal ALM processes for their flagship products, and it’s an integral part of Visual Studio and all MSDN developer subscriptions going forward. This session will focus on how developers/managers can extend TFS through configuration settings, process templates customization and building custom .NET solutions in order to adapt TFS to your organization/team internal processes.
2. Create a SharePoint Web Part Wrapper for ASP.Net User Controls
See http://www.degaston.com/sp1106.ppt for presentation.
SharePoint is presently one of the most popular web application development platforms in the world and ASP.Net is central to its success. In the past SharePoint developers would build many custom web parts. Recently the trend has been towards using a container for ASP.Net user controls in order to simplify deployment, make the development/customization process easier, and quickly enable .NET developers to be effective SharePoint developers.
Wednesday, March 18, 2009
Problems in changing username for TFS services
I changed the username that's running all the TFS services on the TFS Application Tier machine. I noticed the next day that certain information such as users in the Assigned To dropdown, Areas, Iterations, etc. were not getting updated in a timely manner. What's going on? It turns out its in the Integration services. At http://tinyurl.com/TfsRefreshNieDziala is a discussion on this topic.
The following SQL on the TFS data tier will show whether or not the username on the TFS application tier has all 4 necessary subscriptions in place.
select s.address, i.domain, i.account_name from TfsIntegration..tbl_subscription s
left join TfsIntegration..tbl_security_identity_cache i on s.subscriber = i.sid
where delivery_type = 2
In my case the results didn't work so I had to login to the application tier server as the username running the TFS services and run the following 5 DOS commands in sequence substituting my server name for "".
cd C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Tools
BisSubscribe.exe /eventType DataChangedEvent /deliverytype Soap /address http://:8080/VersionControl/v1.0/Integration.asmx /server http://:8080
BisSubscribe.exe /eventType DataChangedEvent /deliverytype Soap /address http://:8080/WorkItemTracking/v1.0/SyncEventsListener.asmx /server http://:8080
BisSubscribe.exe /eventType BuildCompletionEvent /deliverytype soap /address http://:8080/WorkItemTracking/v1.0/Integration.asmx /server http://:8080
BisSubscribe.exe /eventType ProjectCreatedEvent /deliverytype Soap /address http://:8080/Warehouse/v1.0/warehousecontroller.asmx /server http://:8080
On the 3rd one for a BuildCompletionEvent I got an error "requested value 'soap' was not found". When I dropped off the deliverytype parameter as follows it worked fine:
BisSubscribe.exe /eventType BuildCompletionEvent /address http://:8080/WorkItemTracking/v1.0/Integration.asmx /server http://:8080
So it appears to work properly now for the Assigned To dropdown. But the Areas dropdown is still not working properly. The Event viewer on the Application Tier server shows the TF51338 error. Solving this problem requires putting this username into the TFS Server's Service Accounts group. This can't be done in the TFS GUI like can be done for other server or team project groups in TFS. It requires the TFSSECURITY.exe command line utility. I went to a DOS window on the application tier server and typed in the following:
cd C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Tools
tfssecurity.exe /server: /g+ "[Server]\Service Accounts" n:\tfsservices
Presto!! It worked :) My updates to Areas/Iterations get updated realtime into the Areas and Iterations tree views in the Work Item GUI of Visual Studio or TSWA. As soon as I click "refresh" on the Team Project my list of users in my "Assigned To" dropdown gets filled in.
The following SQL on the TFS data tier will show whether or not the username on the TFS application tier has all 4 necessary subscriptions in place.
select s.address, i.domain, i.account_name from TfsIntegration..tbl_subscription s
left join TfsIntegration..tbl_security_identity_cache i on s.subscriber = i.sid
where delivery_type = 2
In my case the results didn't work so I had to login to the application tier server as the username running the TFS services and run the following 5 DOS commands in sequence substituting my server name for "
cd C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Tools
BisSubscribe.exe /eventType DataChangedEvent /deliverytype Soap /address http://
BisSubscribe.exe /eventType DataChangedEvent /deliverytype Soap /address http://
BisSubscribe.exe /eventType BuildCompletionEvent /deliverytype soap /address http://
BisSubscribe.exe /eventType ProjectCreatedEvent /deliverytype Soap /address http://
On the 3rd one for a BuildCompletionEvent I got an error "requested value 'soap' was not found". When I dropped off the deliverytype parameter as follows it worked fine:
BisSubscribe.exe /eventType BuildCompletionEvent /address http://
So it appears to work properly now for the Assigned To dropdown. But the Areas dropdown is still not working properly. The Event viewer on the Application Tier server shows the TF51338 error. Solving this problem requires putting this username into the TFS Server's Service Accounts group. This can't be done in the TFS GUI like can be done for other server or team project groups in TFS. It requires the TFSSECURITY.exe command line utility. I went to a DOS window on the application tier server and typed in the following:
cd C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Tools
tfssecurity.exe /server:
Presto!! It worked :) My updates to Areas/Iterations get updated realtime into the Areas and Iterations tree views in the Work Item GUI of Visual Studio or TSWA. As soon as I click "refresh" on the Team Project my list of users in my "Assigned To" dropdown gets filled in.
Monday, March 16, 2009
Tasks "at the bottom" in MS Project
Microsoft Project is a great tool for creating task/schedule hierarchies for project tasks. It well-integrates with TFS. Whenever you run a query to import work items it'll automatically filter out duplicates from your WIQL results. It provides a grid of non-duplicate work items meeting the WIQL criteria with the first column of checkboxes pre-checked. This way you can further filter out work items to bring into your project plan document.
The problem is that all the new work items come in "at the bottom" of the MS Project plan. The solution can be found at http://office.microsoft.com/en-us/project/HA012111441033.aspx under the heading "Moving tasks". Here are the steps to follow:
1. Remember to drag and drop, and do not cut and paste.
2. For the task you wish to move, select the entire task row by clicking the gray row heading, which includes the task number.
3. Point to the row heading until a four-headed arrow appears, and then drag the task to where you want it in the active view.
4. A gray line along the row border indicates where the task will be inserted when you release the mouse button.
The problem is that all the new work items come in "at the bottom" of the MS Project plan. The solution can be found at http://office.microsoft.com/en-us/project/HA012111441033.aspx under the heading "Moving tasks". Here are the steps to follow:
1. Remember to drag and drop, and do not cut and paste.
2. For the task you wish to move, select the entire task row by clicking the gray row heading, which includes the task number.
3. Point to the row heading until a four-headed arrow appears, and then drag the task to where you want it in the active view.
4. A gray line along the row border indicates where the task will be inserted when you release the mouse button.
Friday, February 27, 2009
Tips on TFS Security
1. During permissions testing .... always make sure that at least 2 of TFS admins are full admins on the TFS server and in the TFS security settings.
2. Define the security groups you want for TFS.
3. Create these groups as Windows groups on the server that's running TFS.
4. Create corresponding TFS server groups for these Windows groups and assign one member (i.e. the Windows group) to each of these TFS server groups (see first 2 snapshots).
5. Create team project security groups and by default assign TFS server groups as members of these groups (see 3rd snapshot).
6. Assign security permissions by team project security group at the Team Project level or at the Area levels.
7. On the Windows server, assign roles/permissions for SQL Server Reporting Services that correspond to the Windows Server groups you've created.
8. On the Windows server, assign roles/permissions for Windows SharePoint Services that correspond to the Windows Server groups you've created.
9. Remember to "keep it simple". Think of having a handful of Windows server groups that correspond 1:1 with TFS server groups that in turn correspond 1:1 with Team Project groups. Then in turn these Team Project groups have all the team project level and areas' security permissions based back on those Windows server groups as the standard. Anything else should be thought of as an exception. What this will do is handle the cascading of all permissions for SharePoint, SQL Server Reporting Services and TFS throughout all the services associated with TFS/SharePoint.
Warning: It can be disastrous to NOT "keep it simple". And keep in mind that this article assumes you are running a single server solution with all the databases and web front ends on the same Windows server.
2. Define the security groups you want for TFS.
3. Create these groups as Windows groups on the server that's running TFS.
4. Create corresponding TFS server groups for these Windows groups and assign one member (i.e. the Windows group) to each of these TFS server groups (see first 2 snapshots).
5. Create team project security groups and by default assign TFS server groups as members of these groups (see 3rd snapshot).
6. Assign security permissions by team project security group at the Team Project level or at the Area levels.
7. On the Windows server, assign roles/permissions for SQL Server Reporting Services that correspond to the Windows Server groups you've created.
8. On the Windows server, assign roles/permissions for Windows SharePoint Services that correspond to the Windows Server groups you've created.
9. Remember to "keep it simple". Think of having a handful of Windows server groups that correspond 1:1 with TFS server groups that in turn correspond 1:1 with Team Project groups. Then in turn these Team Project groups have all the team project level and areas' security permissions based back on those Windows server groups as the standard. Anything else should be thought of as an exception. What this will do is handle the cascading of all permissions for SharePoint, SQL Server Reporting Services and TFS throughout all the services associated with TFS/SharePoint.
Warning: It can be disastrous to NOT "keep it simple". And keep in mind that this article assumes you are running a single server solution with all the databases and web front ends on the same Windows server.
Wednesday, February 25, 2009
Questions every CEO should ask their CIO
What plaform do you use to provide real-time integration of all information on source code control, source changes, builds, tasks, bugs, issues, project plans, documentation, test scripts and metrics reporting?
How are your project managers aware of all saved code changes in other projects that may regressively impact their projects?
How many minutes would it take you to find out what specific code changes were made in relation to an invoice line item charged to a customer?
How many minutes does it take your organization to start tracking new metrics and have reporting procedures in place at both the high-level project and low-level task detail levels?
They should have a definitive answer or plan on the first two questions. And they should be able to say a very small number as the answer on the second two questions. If the answer isn't TFS then I'd like to know what it is.
How are your project managers aware of all saved code changes in other projects that may regressively impact their projects?
How many minutes would it take you to find out what specific code changes were made in relation to an invoice line item charged to a customer?
How many minutes does it take your organization to start tracking new metrics and have reporting procedures in place at both the high-level project and low-level task detail levels?
They should have a definitive answer or plan on the first two questions. And they should be able to say a very small number as the answer on the second two questions. If the answer isn't TFS then I'd like to know what it is.
TFS Learning Curve for Project Managers
TFS often comes with a steep learning curve for project managers, CIO(s), CTO(s) and others in business and IT management. This is unnecessary if approached correctly. One word describes the key in overcoming this barrier. It's SharePoint.
Show TFS and VSTS to developers, DBA(s) and other techies and you'll see them get excited and see the magic of having a one-stop place to do all their work in Visual Studio. Show VSTS to project managers and you'll often see blank stares and confusion as they imagine that this new tool is only going to give them more headaches and work to do. The facts are that TFS was designed with the intent of making life easier for the IT technical workers, especially those who have worked with Visual Studio. Its much like why Boeing and Airbus design cockpits with the needs of airplane pilots in mind rather than the realtime needs of their management back in the office building. During airplane takeoffs, landings and emergency crash landings the last thing a pilot needs is to be called out of the cockpit to file some status report that some office building manager deems as necessary to help them do their job. Well that's how techies often feel about their management. And that's why nearly all project teams and IT organizations struggle with communication.
In my opinion the best way to get Project Managers up/running with TFS is to not tell them they're using TFS. Approach it as a SharePoint site deployment. Setup your Process Template to include the libraries in SharePoint they need to get the starting Project/Excel files they'll need to do their job, the Word templates for documentation/processes, process guidance, reports and organizational links. Get them very familiar with SharePoint.
Once they know SharePoint well enough to be productive then show them how to use some of the tools they'll need to access TFS work items. Start with MS Excel by launching some of the Excel files in the SharePoint libraries that come out of the box in a Team Project site. Train them on how to use Excel with TFS work items. Then show them MS Project with TFS work items. Then show them the reports they can get. Finally introduce them to TSWA, Team Explorer and other tools that can help them see how work items integrate with version control files and builds.
Show TFS and VSTS to developers, DBA(s) and other techies and you'll see them get excited and see the magic of having a one-stop place to do all their work in Visual Studio. Show VSTS to project managers and you'll often see blank stares and confusion as they imagine that this new tool is only going to give them more headaches and work to do. The facts are that TFS was designed with the intent of making life easier for the IT technical workers, especially those who have worked with Visual Studio. Its much like why Boeing and Airbus design cockpits with the needs of airplane pilots in mind rather than the realtime needs of their management back in the office building. During airplane takeoffs, landings and emergency crash landings the last thing a pilot needs is to be called out of the cockpit to file some status report that some office building manager deems as necessary to help them do their job. Well that's how techies often feel about their management. And that's why nearly all project teams and IT organizations struggle with communication.
In my opinion the best way to get Project Managers up/running with TFS is to not tell them they're using TFS. Approach it as a SharePoint site deployment. Setup your Process Template to include the libraries in SharePoint they need to get the starting Project/Excel files they'll need to do their job, the Word templates for documentation/processes, process guidance, reports and organizational links. Get them very familiar with SharePoint.
Once they know SharePoint well enough to be productive then show them how to use some of the tools they'll need to access TFS work items. Start with MS Excel by launching some of the Excel files in the SharePoint libraries that come out of the box in a Team Project site. Train them on how to use Excel with TFS work items. Then show them MS Project with TFS work items. Then show them the reports they can get. Finally introduce them to TSWA, Team Explorer and other tools that can help them see how work items integrate with version control files and builds.
Thursday, February 5, 2009
Essay on Team Foundation Server Capabilities
Team Foundation Server (TFS) provides all the capabilities to fully manage the full software development lifecycle (SDLC). I've successfully implemented it in several environments and seen it perform well in meeting the needs of an IT organization. I've yet to run across any scenario for software development in a Windows-based environment (i.e. not counting Macs, Unix, etc.) where TFS couldn't be used effectively.
Out-of-the-box TFS fully implements the CMMi-3 and Agile Scrum methodologies. Implementing it for an organization is just a matter of starting a new TFS Team Project, setting up a list of tasks in the TFS Work Items catalog to accomplish the organizational mandates and setting up organizational folders & document templates in the team project SharePoint portal site that gets auto-generated when a new TFS team project is created. If an organization seeks to invest in automating the project launch/management process then one of the out-of-the-box TFS process templates can be customized/imported into TFS so that whenever a new team project is created that all the organizational mandates will be there (i.e. document templates, work items, workflow, control policies, reports, etc.).
TFS is a back end for IT project workers using Visual Studio in the same way that MS Exchange is the back end for end users using Outlook for email. There are 4 primary editions of Microsoft Visual Studio Team Suite (VSTS) for developers, architects, testers and database modelers/administrators. Learning/using the TFS capabilities in Visual Studio is quite intuitive for those already familiar with the Microsoft Visual Studio platform. In fact TFS was specifically built with Visual Studio users in mind.
Some of the key TFS features are:
(1) Robust work items tracking is provided. Each work item has attributes (i.e. Fields, Columns) to store information such as Title, Description, Iteration, Area, Discipline, AssignedTo, Priority, Hours Completed, Hours Remaining, Start Date, End Date, Related Builds, Related Work Items, related Version Control Items, related Version Control Changesets, Hyperlinks, Attachments, etc. The attributes available depend on the work item type (WITs). For the Agile process template the WITs are QoS requirements, bugs, tasks, scenarios, and tests. The CMMi process template includes Requirements and Review WIT's. The Process Template Editor can be used to create/modify WIT templates in order to allow you to track almost anything in a work item and to setup workflow rules/procedures with the work items of these WIT's.
(2) Robust version control using true client/server and web services technology. The TFS version control data is stored in SQL Server. Earlier version control systems such as SourceSafe and PVCS are much like dBase or ISAM files where data corruption, uncleared locks and other processing errors are more commonplace. That's because these legacy products have no true, reliable client/server processing. Performance is noticably improved in TFS over SourceSafe. Features such as shelving, changesets processing, branching, merging and reporting are quite effective/useful in TFS.
(3) SQL Server Reporting Services is used by TFS. There are about 2 dozen reports out-of-the-box that meet most project management needs. Reports can be created/modified to meet the needs for a specific project for the organizational purposes. A data warehouse that integrates all the version control, project management, work item tracking, attachments, builds, integration and reporting information is provided. Its cubes with measures/dimensions are auto-refreshed according to a configurable schedule.
(4) Microsoft Excel and Microsoft Project integrate well with TFS. Its easily possible to add/edit work items in these tools for any TFS team project. Project plans can be generated in MS Project and imported into TFS. To Do lists can be created in MS Excel and imported into TFS. Or to do lists or checklists can be copied/pasted into Excel from some other program in order to create TFS work items.
(5) A SharePoint portal site is created for each new TFS team project. In this portal a user on the team (or in the management & project users communities) can participate with as limited/open collaboration functionality as needed. The documents/reports available through Visual Studio (or other front ends using TFS data) are available in this portal. All WSS 3.0 functionality/capabilities is available in each TFS team project portal site.
(6) TFS Build Management is versatile glue for marrying programming/testing, bugs/resolutions, development/maintenance and implementations together. As many build projects as needed can be created for a team project. Build parameters such as schedule, build machine, destination, source code snapshot, notifications and build errors handling can be made out-of-the-box. As work items for bugs, development tasks, tests, etc. are completed then builds where the bugs were found or resolved will be related.
(7) TFS is fully extensible. All features are available in .NET namespaces and/or server configuration utilities where customizations, extensions and integration with any application/process/workflow can be made. The market is starting to see many TFS third party tools being built for purposes such as timesheet entry, task time tracking, resource planning, status reporting, integration with CRM/ERP suites, integration with accounting systems (i.e. GL, AP, AR, OE, etc.), integration with system admin utilities, etc. are being performed. Developers building apps in platforms such as Java, Oracle, Mainframes, etc. can still use TFS thanks to the extensibility capabilities of the TFS core.
(8) Security can be handled at the server-level, team project level or area level. In each team project a hierarchy of areas can be created. It can be as simple as one node or as complex with N-generations of M+ nodes per generation or however complex the security needs are for a team project to restrict/grant access to read/edit information or grant/revoke rights at the server, team project or area level. Just a FYI that there is an Area attribute for each work item in TFS and only an end user with change rights on both the old Area and new Area can change a work item's Area. Also keep in mind that the rights assigned at root node levels trickle down to their children/leaf nodes. And at any server/project/area node the rights can be assigned to either a TFS user or a TFS group. A TFS group is a collection of Active Directory users and/or Active Directory groups that has been created at the server level or at the team project level. This security model can handle any realistic security requirement for all enterprise-wide SDLC processes. However an important thing to keep in mind is that the server-level administrators can get access to ALL data on the TFS server where they have server-level access. Its also important to remember that a VSTS user (or any Excel/Project/SharePoint/3rd party user of TFS) can use multiple/unlimited TFS servers at the same time without incurring extra per-seat costs for Visual Studio and CAL’s.
(9) Perhaps the greatest feature of TFS is how well it integrates the core SDLC processes elements contained therein - work item tracking, version control, build management, reporting and external integration. One example on how well this works is the need to set a policy that developers will regularly report what tasks they're working on and what code is associated. In this case a policy can be established that a developer can only checkin changes by first associating work item(s) and entering changeset comments. In addition as every checkin/change is timestamped its possible to provide very robust/detailed time/effort reporting. Rules can also be put in place (out of the box for simple rules, customize for complex rules) to immediately notify certain users when certain events occur such as a user reporting a bug, a build not being successful, certain work items being marked as "done", critical path tasks not being done in time, certain versioned items being checked in or someone making a change to work items assigned to you.
If you have any other questions on TFS then please let me know.
Out-of-the-box TFS fully implements the CMMi-3 and Agile Scrum methodologies. Implementing it for an organization is just a matter of starting a new TFS Team Project, setting up a list of tasks in the TFS Work Items catalog to accomplish the organizational mandates and setting up organizational folders & document templates in the team project SharePoint portal site that gets auto-generated when a new TFS team project is created. If an organization seeks to invest in automating the project launch/management process then one of the out-of-the-box TFS process templates can be customized/imported into TFS so that whenever a new team project is created that all the organizational mandates will be there (i.e. document templates, work items, workflow, control policies, reports, etc.).
TFS is a back end for IT project workers using Visual Studio in the same way that MS Exchange is the back end for end users using Outlook for email. There are 4 primary editions of Microsoft Visual Studio Team Suite (VSTS) for developers, architects, testers and database modelers/administrators. Learning/using the TFS capabilities in Visual Studio is quite intuitive for those already familiar with the Microsoft Visual Studio platform. In fact TFS was specifically built with Visual Studio users in mind.
Some of the key TFS features are:
(1) Robust work items tracking is provided. Each work item has attributes (i.e. Fields, Columns) to store information such as Title, Description, Iteration, Area, Discipline, AssignedTo, Priority, Hours Completed, Hours Remaining, Start Date, End Date, Related Builds, Related Work Items, related Version Control Items, related Version Control Changesets, Hyperlinks, Attachments, etc. The attributes available depend on the work item type (WITs). For the Agile process template the WITs are QoS requirements, bugs, tasks, scenarios, and tests. The CMMi process template includes Requirements and Review WIT's. The Process Template Editor can be used to create/modify WIT templates in order to allow you to track almost anything in a work item and to setup workflow rules/procedures with the work items of these WIT's.
(2) Robust version control using true client/server and web services technology. The TFS version control data is stored in SQL Server. Earlier version control systems such as SourceSafe and PVCS are much like dBase or ISAM files where data corruption, uncleared locks and other processing errors are more commonplace. That's because these legacy products have no true, reliable client/server processing. Performance is noticably improved in TFS over SourceSafe. Features such as shelving, changesets processing, branching, merging and reporting are quite effective/useful in TFS.
(3) SQL Server Reporting Services is used by TFS. There are about 2 dozen reports out-of-the-box that meet most project management needs. Reports can be created/modified to meet the needs for a specific project for the organizational purposes. A data warehouse that integrates all the version control, project management, work item tracking, attachments, builds, integration and reporting information is provided. Its cubes with measures/dimensions are auto-refreshed according to a configurable schedule.
(4) Microsoft Excel and Microsoft Project integrate well with TFS. Its easily possible to add/edit work items in these tools for any TFS team project. Project plans can be generated in MS Project and imported into TFS. To Do lists can be created in MS Excel and imported into TFS. Or to do lists or checklists can be copied/pasted into Excel from some other program in order to create TFS work items.
(5) A SharePoint portal site is created for each new TFS team project. In this portal a user on the team (or in the management & project users communities) can participate with as limited/open collaboration functionality as needed. The documents/reports available through Visual Studio (or other front ends using TFS data) are available in this portal. All WSS 3.0 functionality/capabilities is available in each TFS team project portal site.
(6) TFS Build Management is versatile glue for marrying programming/testing, bugs/resolutions, development/maintenance and implementations together. As many build projects as needed can be created for a team project. Build parameters such as schedule, build machine, destination, source code snapshot, notifications and build errors handling can be made out-of-the-box. As work items for bugs, development tasks, tests, etc. are completed then builds where the bugs were found or resolved will be related.
(7) TFS is fully extensible. All features are available in .NET namespaces and/or server configuration utilities where customizations, extensions and integration with any application/process/workflow can be made. The market is starting to see many TFS third party tools being built for purposes such as timesheet entry, task time tracking, resource planning, status reporting, integration with CRM/ERP suites, integration with accounting systems (i.e. GL, AP, AR, OE, etc.), integration with system admin utilities, etc. are being performed. Developers building apps in platforms such as Java, Oracle, Mainframes, etc. can still use TFS thanks to the extensibility capabilities of the TFS core.
(8) Security can be handled at the server-level, team project level or area level. In each team project a hierarchy of areas can be created. It can be as simple as one node or as complex with N-generations of M+ nodes per generation or however complex the security needs are for a team project to restrict/grant access to read/edit information or grant/revoke rights at the server, team project or area level. Just a FYI that there is an Area attribute for each work item in TFS and only an end user with change rights on both the old Area and new Area can change a work item's Area. Also keep in mind that the rights assigned at root node levels trickle down to their children/leaf nodes. And at any server/project/area node the rights can be assigned to either a TFS user or a TFS group. A TFS group is a collection of Active Directory users and/or Active Directory groups that has been created at the server level or at the team project level. This security model can handle any realistic security requirement for all enterprise-wide SDLC processes. However an important thing to keep in mind is that the server-level administrators can get access to ALL data on the TFS server where they have server-level access. Its also important to remember that a VSTS user (or any Excel/Project/SharePoint/3rd party user of TFS) can use multiple/unlimited TFS servers at the same time without incurring extra per-seat costs for Visual Studio and CAL’s.
(9) Perhaps the greatest feature of TFS is how well it integrates the core SDLC processes elements contained therein - work item tracking, version control, build management, reporting and external integration. One example on how well this works is the need to set a policy that developers will regularly report what tasks they're working on and what code is associated. In this case a policy can be established that a developer can only checkin changes by first associating work item(s) and entering changeset comments. In addition as every checkin/change is timestamped its possible to provide very robust/detailed time/effort reporting. Rules can also be put in place (out of the box for simple rules, customize for complex rules) to immediately notify certain users when certain events occur such as a user reporting a bug, a build not being successful, certain work items being marked as "done", critical path tasks not being done in time, certain versioned items being checked in or someone making a change to work items assigned to you.
If you have any other questions on TFS then please let me know.
Wednesday, January 28, 2009
TFS Guide from Microsoft on CodePlex
I think http://www.codeplex.com/TFSGuide is helpful as it provides very useful training/mentoring/resource information on Microsoft Team Foundation Server.
Part I, Fundamentals
* Chapter 1 - Introducing the Team Environment
* Chapter 2 - Team Foundation Server Architecture
Part II, Source Control
* Chapter 3 - Structuring Projects and Solutions in Source Control
* Chapter 4 - Structuring Projects and Solutions in Team Foundation Source Control
* Chapter 5 - Defining Your Branching and Merging Strategy
* Chapter 6 - Managing Source Control Dependencies in Visual Studio Team System
Part III, Builds
* Chapter 7 - Team Build Explained
* Chapter 8 - Setting Up Continuous Integration with Team Build
* Chapter 9 - Setting Up Scheduled Builds with Team Build
Part IV, Large Project Considerations
* Chapter 10 - Large Project Considerations
Part V, Project Management
* Chapter 11 - Project Management Explained
* Chapter 12 - Work Items Explained
Part VI, Process Templates
* Chapter 13 - Process Templates Explained
* Chapter 14 - MSF for Agile Software Development Projects
Part VII, Reporting
* Chapter 15 - Reporting Explained
Part VIII, Setting Up and Maintaining the Team Environment
* Chapter 16 - Team Foundation Server Deployment
* Chapter 17 - Providing Internet Access to Team Foundation Server
Part IX, Visual Studio Team System 2008 Team Foundation Server
* Chapter 18 - What's New in Visual Studio Team System 2008 Team Foundation Server
Part I, Fundamentals
* Chapter 1 - Introducing the Team Environment
* Chapter 2 - Team Foundation Server Architecture
Part II, Source Control
* Chapter 3 - Structuring Projects and Solutions in Source Control
* Chapter 4 - Structuring Projects and Solutions in Team Foundation Source Control
* Chapter 5 - Defining Your Branching and Merging Strategy
* Chapter 6 - Managing Source Control Dependencies in Visual Studio Team System
Part III, Builds
* Chapter 7 - Team Build Explained
* Chapter 8 - Setting Up Continuous Integration with Team Build
* Chapter 9 - Setting Up Scheduled Builds with Team Build
Part IV, Large Project Considerations
* Chapter 10 - Large Project Considerations
Part V, Project Management
* Chapter 11 - Project Management Explained
* Chapter 12 - Work Items Explained
Part VI, Process Templates
* Chapter 13 - Process Templates Explained
* Chapter 14 - MSF for Agile Software Development Projects
Part VII, Reporting
* Chapter 15 - Reporting Explained
Part VIII, Setting Up and Maintaining the Team Environment
* Chapter 16 - Team Foundation Server Deployment
* Chapter 17 - Providing Internet Access to Team Foundation Server
Part IX, Visual Studio Team System 2008 Team Foundation Server
* Chapter 18 - What's New in Visual Studio Team System 2008 Team Foundation Server
Monday, January 26, 2009
Setup TFS WorkSpaces for Developers
Read http://blog.donnfelker.com/post/PowerShell-TFS-WorkSpace-Initialization-Script.aspx. Its a pain in the neck to teach everyone how to set up workspaces, show them how to get latest and hope they don't accidentally (or purposely) mess it up. I recommend reading this posting and downloading the script into your Custom TFS Tools Solution that you maintain in the Version Control tree for your organization's architecture/processes' TFS team project.
Not yet ready for 64-bit
Read http://ianfnelson.com/blog/64-bit-tfs. Its a reminder that TFS is not really ready for 64-bit yet. But stay tuned that it will be, and that's when it'll roll out to tens of thousands on a single server farm and work tremendous magic in very very large enterprises that adopt it well. This article also reminds me why I was wise to shift gears recently towards supporting virtualization as the way to go for all future TFS implementations.
TFS Branching Guide
Go read http://www.codeplex.com/TFSBranchingGuideII. Nobody should use Branching on a VSTS/TFS project without reading up on the pain/lessons that others have gone through. There are 5 good PDF documents here that all by themselves would make an excellent brownbag:
- Main 2.0.pdf
- Scenarios 2.0.pdf
- Q&A 2.0.pdf
- Labs - 2.0.zip
- Drawings 2.0.zip
- Main 2.0.pdf
- Scenarios 2.0.pdf
- Q&A 2.0.pdf
- Labs - 2.0.zip
- Drawings 2.0.zip
Wednesday, January 21, 2009
TFS Install Bug with SQL Server Files
Today I setup a server for TFS 2008. I first installed SQL Server. It put the Reporting Services data/log files in the C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data directory. Then I moved these files into the D:\TFSDATA\SQLDATA and D:\TFSDATA\SQLLOG directories on the D: drive and configured SQL Server to use these same directories as the default directories for data/logs. Then I installed TFS 2008 (including WSS). The installer put all the new databases’ data/log files in the C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data directory. Note to Microsoft: That’s what I call a bug. The workaround is simple. I just have to move those files from the folders on C: over to the default folders on D:.
Saturday, January 17, 2009
Migrate VSS to TFS
Here's some steps to follow to learn about VSS to TFS migrations.
1. I recommend watching the following Microsoft video:
Video: How To - Migrate from VSS to Team Foundation Source Control
2. Make sure you have installed TFS 2008 Service Pack 1 on your TFS server. See http://blogs.msdn.com/tfs_migration/archive/2008/09/08/improved-vss-converter-available-with-tfs-sp1.aspx for information on VSSConverter improvements.
3. Read http://msdn.microsoft.com/en-us/library/ms400803(VS.80).aspx and http://msdn.microsoft.com/en-us/library/ms400685(VS.80).aspx to learn about the Analyze and Migrate commands for VSSConverter.
4. Read http://msdn.microsoft.com/en-us/library/ms181246(VS.80).aspx and do the five step process to prepare for migrations: (a) Back up your Visual SourceSafe database. (b) Identify and resolve data integrity issues in your existing database using the Visual SourceSafe Analyze tool. (c) Run the converter tool to identify potential sources of information loss. (d) Specify which Visual SourceSafe folders to migrate. (e) Create a user mapping file to map Visual SourceSafe users to Team Foundation users.
5. Read http://msdn.microsoft.com/en-us/library/ms181247(VS.80).aspx and do the two part process for migrations: (a) 7 steps to modify the settings file to create a migration file, (b) 5 steps for running the converter. There's actually a 6th step that's essential for developers using VSTS. See http://msdn.microsoft.com/en-us/library/ms253188(VS.80).aspx for instructions on migrating source control bindings.
6. Be sure to search the MSDN forums (see http://tinyurl.com/vss-tfs-help or http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/threads) for the latest discussion threads on VSS->TFS migrations. Also see http://search.twitter.com/search?q=VSS+TFS to check out the latest gossip about doing VSS->TFS migrations.
7. Be sure to google VSSConverter for further information on the migration tool. I did a search today that provided a few interesting links including http://www.codeplex.com/VssConverterGui.
8. If you really want total flexibility then learn about the Microsoft.TeamFoundation.VersionControl.Client namespace that opens up possibilities such as http://blogs.msdn.com/edhintz/archive/2006/02/03/524312.aspx, http://www.codeproject.com/KB/DLL/MySidekicks.aspx, http://tf4mono.googlecode.com/svn/trunk/class/Microsoft.TeamFoundation.VersionControl.Client and http://www.sashasydoruk.com/2007/02/14/tfs-howto-get-a-list-of-users-and-pending-changes.
1. I recommend watching the following Microsoft video:
Video: How To - Migrate from VSS to Team Foundation Source Control
2. Make sure you have installed TFS 2008 Service Pack 1 on your TFS server. See http://blogs.msdn.com/tfs_migration/archive/2008/09/08/improved-vss-converter-available-with-tfs-sp1.aspx for information on VSSConverter improvements.
3. Read http://msdn.microsoft.com/en-us/library/ms400803(VS.80).aspx and http://msdn.microsoft.com/en-us/library/ms400685(VS.80).aspx to learn about the Analyze and Migrate commands for VSSConverter.
4. Read http://msdn.microsoft.com/en-us/library/ms181246(VS.80).aspx and do the five step process to prepare for migrations: (a) Back up your Visual SourceSafe database. (b) Identify and resolve data integrity issues in your existing database using the Visual SourceSafe Analyze tool. (c) Run the converter tool to identify potential sources of information loss. (d) Specify which Visual SourceSafe folders to migrate. (e) Create a user mapping file to map Visual SourceSafe users to Team Foundation users.
5. Read http://msdn.microsoft.com/en-us/library/ms181247(VS.80).aspx and do the two part process for migrations: (a) 7 steps to modify the settings file to create a migration file, (b) 5 steps for running the converter. There's actually a 6th step that's essential for developers using VSTS. See http://msdn.microsoft.com/en-us/library/ms253188(VS.80).aspx for instructions on migrating source control bindings.
6. Be sure to search the MSDN forums (see http://tinyurl.com/vss-tfs-help or http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/threads) for the latest discussion threads on VSS->TFS migrations. Also see http://search.twitter.com/search?q=VSS+TFS to check out the latest gossip about doing VSS->TFS migrations.
7. Be sure to google VSSConverter for further information on the migration tool. I did a search today that provided a few interesting links including http://www.codeplex.com/VssConverterGui.
8. If you really want total flexibility then learn about the Microsoft.TeamFoundation.VersionControl.Client namespace that opens up possibilities such as http://blogs.msdn.com/edhintz/archive/2006/02/03/524312.aspx, http://www.codeproject.com/KB/DLL/MySidekicks.aspx, http://tf4mono.googlecode.com/svn/trunk/class/Microsoft.TeamFoundation.VersionControl.Client and http://www.sashasydoruk.com/2007/02/14/tfs-howto-get-a-list-of-users-and-pending-changes.
We Share Your Pain (WSYP)
Finally Microsoft will build pain-free software ;) This is funny.
Video: Sharing software Customer pain
Video: Sharing software Customer pain
Subscribe to:
Posts (Atom)