9am – 12pm AEDT, Friday March 21 Suite 13, 81-91 Military Rd, Neutral Bay Australia
SSW invites you to come and meet our newest FireBootCamp graduates. These developers are so passionate about coding they took 9 weeks out of their life to do nothing but code, and they are keen to show off what they have learned and created.
This event gives employers the chance to see the web applications our Boot Campers have developed, speak to them in an informal setting, book appointments for interviews, and enjoy a scrumptious morning tea on us.
After 9 weeks of intense training, these “FireBootCampers” are the best candidates on the market. Come along, have a mimosa and put an offer in for the developer you want. Strike while the iron’s hot!
The boot camp is extremely hands-on. Under the guidance of an experienced mentor, the attendees work together in small teams to build and deploy a functioning enterprise ASP.NET MVC application. As well as technical skills, they learn best practices, problem solving and client management.
If you have any enquiries regarding the gala, FireBootCamp, or SSW, contact Joanna Feely via email at firstname.lastname@example.org or phone on (02) 9953 3000.
I’m delighted to bring you an update from week 1 of our first ever FireBootCamp, SSW’s 9 week intensive course focused on software development methodologies based on building modern web applications with ASP.NET MVC.
The first week has just ended and, as the above video shows, the students are on fire!
It’s always exciting to be a part of something new, and this boot camp is no exception. My highlights from the first week included the reactions from our students when showed their allocated projects, and seeing the beginnings of what I’m sure will be a very rewarding relationship between the boot campers and FireBootCamp mentor/trainer Adam Stephensen. He, the boot campers and I have had some interesting conversations, and I’ve loved introducing the guys to the fundamentals of Scrum.
The first of many guest speakers, Andrew Coates of Microsoft Australia, came in and wowed the students with his presentation on Microsoft Azure, setting them in good stead to get working on the projects that they will have finished by the end of the course.
What’s next? Each week the students will be learning the technologies required to build an enterprise application using ASP .NET MVC5 using technologies like:
The Gala day will be a great opportunity to watch the FireBootCampers’ presentations, speak with them in an informal setting, book appointments for interviews, and enjoy a scrumptious morning tea on us.
Figure: BCE SPARROW uses a ‘metro’ design with all the latest Nuget packages for elegant, consistent and usable design
The benefits of continually improving our processes and practices around the Scrum methodology were never more apparent than with the project we have recently completed for Brisbane Catholic Education (BCE).
As developers, we’ve all worked on projects where the level of collaboration can break down due to any number of factors such as scope creep, availability of the Product Owner, ill-defined requirements or inadequate testing. One of the strongest benefits of Scrum is the focus on communication and feedback to alleviate these symptoms.
The BCE SPARROW Project
The SPARROW project is an extranet site designed to assist school principals when performing long term strategic planning for their school. As such, this was a project with a great deal of stakeholders.
On arrival, we found that BCE were ready for Scrum. They had tried applying agile principles to their own projects previously and were interested in formalizing the process. Following Scrum helped us to build a single collaborative development team comprising developers and a designer from SSW with testers and IT staff from BCE. The SSW team for this project included Damian Brady, Adam Stephensen, Brendan Richards, Ben Cull and Rebecca Liu.
Client Role: The Product Owner It was a pleasure to work with an excellent Product Owner from BCE, Kerry Edwards-Williams. Kerry performed brilliantly at managing this diversity of stakeholder input to give the developer team a single source of truth for tasks on the Product Backlog. For more information on this key role seeWhat is a Product Owner.
“I would not undertake any other project without using the Scrum methodology. I think it’s absolutely exceptional. It’s fantastic. I think my favorite thing about working on the project, was learning about the scrum methodology… and working with the SSW team… I’d highly recommend them to anybody.” - Kerry Edwards-Williams.
Client Role: The Tester
BCE Testers, led by Latha Matta, used Microsoft Test Manager to provide excellent bug reports directly into TFS – as per our rule: Do you know the three steps to a PBI?
Making client testers part of the development team worked to break down barriers between client and vendor and fostered mutual understanding and respect. This, in turn, led to fantastic turnaround times in identifying and responding to issues.
Figure: I’ll let one of the emails do the talking here…
Technical Details: The Middle Tier
It’s always exciting when a client comes you with a “greenfield” project as you get the opportunity to practice what you preach from day one. The core of the application follows Domain Driven Design within the Onion Architecture pattern. Dependency injection with Structure Map connects the various system components together.
Figure: Designing a system with Dependency Injection from day one encourages a clean, organised system design.
Technical Details: The Data Layer
Entity Framework Code First provides the main data persistence layer for the application while Entity Framework Database First was utilised when interacting with existing database resources. Updates to database the schema are managed through EF Code-First Migrations.
Technical Details: Automated Testing
Unit tests cover the core application components while automated Selenuim tests cover the overall site.
Technical Details: Continuous Deployment
In order to get fast feedback from testers, it is crucial that the process for deploying code changes to a testing server is as fast and painless as possible. Continuous deployment to a testing server, combined with automatic deployment of database schema changes via Entity Framework Code First migrations, means that a developer just needs to check in a code change and, if it compiles and the tests pass, this will be available on the test site within a few minutes.
Getting this deployed to the live production server was great, and I’m proud of the team for achieving this. Following the formal framework provided by Scrum helped us to build trust and collaboration across all aspects of this project. This then flowed through to a high level of agility when responding to issues and changes. Everyone on the team enjoyed working on this system and we’re confident that BCE is happy with the result – because at the end of every sprint we conducted a full review and retrospective.
Of course, you can learn for yourself everything about how we build awesome web applications at our FireBootCamp.
This Wednesday was an amazing success and I was very proud of the SSW team who put it together. Thank you guys, it was outstanding and a lot of people worked very hard over a 5 day period to make it happen.
Firstly ‘thank you’ to everyone who turned up, I appreciate you all being there on such a big night for SSW. It was a new record for the SSW user group, which had an old record of 150 held by the honourable Ken Getz and 130 by Brian Randell.
Running events and user groups is something we have done for a long time, however the area (Suite 13) is really only fine for the normal 40 to 80 guys we get… we had to make it work and work quickly, for the 201 registered excited Hanselman attendees + over a dozen SSW guys.
In addition we have had 270 watching the live stream. There will also be the recording that goes up on SSW TV and YouTube next week, that should get a couple of thousands of views in the first few months.
Figure: 200+ attendees is the new SSW User Group record
Thank you also to Andrew Coates and Yow for giving us Scotty for the night. Thanks to Vesselin Vasilev for the $1,500 prize from Telerik and of course thanks to Scotty Hanselman for the great presentation.
Figure: It was a memorable night. You will see in the video that the question-answer part was the best
Organising the transformation of our Suite 13 was hard work. These people went beyond the call of duty for this week:
Thanks for all your hard work to set the place up with a new sound setup and 2 new screens for the people towards the back of the room. These extra screens in the SSW Conference Room was a first.
Not many people could continue to work, when in pain. To have your foot ran over twice* – accidentally by a car with 4 guys in it – and continue working showed dedication. You even got to work on time this week, well nearly on time, which is early for you
*Note: Yes twice. Once reversing over his foot… then the car stopped due to Raj’s yelling “go back”. In the panic the driver went forward over it again!
The user group live stream went flawlessly and was enjoyed by people all over the world.
Chris Sainty was not down the road in Sydney, he was in Sweden!
Thanks for organising the event. How you fitted 200 seats into Suite 13 amazed me. Thanks for just stepping up and ensuring this event ran smoothly from the SEO to the champagne on arrival.
Figure: Thanks for ensuring our speaker and attendees were looked after on the night (including champagne on arrival)
Thanks for spearheading the design for the night all produced from the Brisbane Office. I loved the new modern metro window signage. You got that done in record time (including securing approvals from me and others).
You did a great job working with your associate designer David to ensure lots of new things were delivered. I loved the posters, framed images, canvasses and the huge SSW TV logo that all together looked schmick!
I think you secured more approvals in 4 days than you have in the past year. Well done.
We threw you into the fire with too many deliverables for a week and you did very well. I will never tire of your ‘can do’ attitude and your ability to work until the job is done.
I applaud how you made a great grand plan of the overall look and feel and where everything should go and then realized the vision, day by day.
Figure: I loved the refreshed office with the new “Metro” wall
Thanks for liaising well with Matthew from Signarama. He was a real character!
As always great coordination skills. Thanks for doing the calculations that were needed to convince the guys that we really could fit 200 chairs in our conference room.
You worked great with David and Matthew. Thanks for spotting problems before they arose…
Thanks for organising the SSW TV images – the frames looked great. I looked at the photos and cutaway footage you took last night. Lots of good stuff there. I assume I will seem them pop up in future videos.
And the rest…
I’m sure I’ll forget someone but:
Thanks Ben Cull for getting the reports on the wall looking great. I never knew that SQL Reporting Services could look so good.
Thanks Ed Barnes for painting the walls and moving all the furniture around multiple times
Thanks Justin King for quality checking our newsletter and LiveStream
Thanks Ewen Wallace for manning the camera at late notice, the most overqualified camera man we have ever used!
Thanks Tim, you like efficiency so here I go… “You were a super helpful dude”.
Thanks Brooke, you were as awesome as ever. I wish I could bottle your bubbles!
Well done guys and thank you. It was a great team effort.
The video will be up next week.
Of course all 200 of you made the event memorable. You had great questions for Handsome Hanselman. Sorry for the squeeze, did you enjoy the night?
This year has been a great year for the cloud, for Microsoft, and for SSW customers. We’ve delivered many solutions built on top of Azure, CRM Online, SharePoint Online, and TFS Online – all running on Microsoft’s cloud infrastructure. These solutions work across devices. They are easy to manage – you are set up in virtually no time and they are enterprise-ready, and we’re able to offer substantially more for much smaller costs.
On the consumer front, Microsoft will look back and see 2013 as the start of the fight for the phone and the tablet.
Building on the Microsoft Stack: I’ve just come back from a couple of weeks at the MVP summit in Seattle (I love this event – I was MVP of the year in 2011). As a Microsoft Regional Director and ALM MVP, as well as Chief Architect of SSW, I enjoy keeping my finger on the pulse of Microsoft and its many product developments. Since my main job is helping companies adopt and deploy Microsoft technologies, my roles at Microsoft are very useful for my customers and staff. Therefore with all the new releases in 2013 it has been a busy year.
Internally at SSW we have implemented the latest upgrades across the board: all our PCs now happily run on Windows 8.1, our phones now use Skype and Lync 2013, the developers are making good use of Visual Studio 2013 and TFS 2013. Daily we run the latest Exchange Server 2013 and SharePoint 2013. Next on our to-do list is to upgrade to CRM 2013, which has just been released.
We’ve definitely seen a shift by our clients from SharePoint development to stand alone MVC solutions that have some integration points with SharePoint, CRM and other applications via REST APIs. Our developers love using ASP.MVC 4 and 5 with either SQL Server 2012 or Azure. One of these combinations power 90% of our client projects.
There were 2 standout projects this year. Both embraced the technology, both used Scrum, and both brought complicated solutions to life. The first one was Toll Transport, led by Mark Liu, and the second was PwC, led by Eric Phan. There were many other projects also where I saw exemplary work built on the Microsoft stack.
My final project starting for 2013 is one I’m very excited about: FireBootCamp. FireBootCamp is an intensive training course that will cover technologies such as .NET MVC,
even a starter developer to a .NET hero in just 9 weeks! http://firebootcamp.com
Building SSW TV:
We have continued to work hard to make more and more presentations available to view on SSW TV. This video site, for which I am the Product Owner, is focused exclusively
on promoting Microsoft platforms and interviewing Microsoft experts from around the world, continuing the SSW tradition of sharing knowledge to help our industry create
better quality software. In the last 12 months I have personally created over 30 videos on SSW TV. During this period, our total views have jumped from 44,000 views to more
than 218, 000 and our subscriber numbers have more than quintupled from 295 to more than 1500.
I also continue to run the Sydney and Canberra .NET User Groups every month to ensure best practices are identified and shared with the community. This year we’ve covered
a wide range of subjects from business law to Scrum, and have had some exciting international guest speakers such as Glenn Block from Microsoft and Jason Beres from
Infragistics. The final User Group of the year will be a crescendo featuring the handsome man Scott Hanselman.
Through SSW TV we make each Sydney .NET User Group a global event by live-streaming the meeting each month and then publishing the video online. No interested party is left out!
The TV team have matured and grown our channel extraordinarily this year.
In addition to client work, throughout the year I have spoken around Australia and at interesting international events. I also presented at my old favorite,
TechEd Australia and TechEds abroad, on topics such as:
“I feel the love again – Using Access 2013 and SharePoint 2013 together”
I know many of you always want to know what’s new with Microsoft and what’s cool in the industry so I will be putting together new rules and new presentations in 2014. Now’s the time to sing out and tell me.
I would like to thank our clients and all those who have sent me a terrific amount of feedback. Keep telling me what we could do better – my email address is adamcogan at ssw.com.au
I’m proud to be one of the technology leaders in Australia and I will continue helping teams work better together by being a Scrum Master, Scrum Trainer and a .NET
architect, working with TFS and implementing the whole ALM lifecycle.
I am proud to announce the launch of the best training course we have ever done. It takes a beginner .NET developer to a *Job Ready* world class junior developer in 9 weeks.
Long story short, they get thrown into the fire, continuously mentored, while building a real world app. They will successfully complete 4 sprints. I called it FireBootCamp.
I’ve approached this very differently from all the training SSW has done for many years for companies around Australia. It has aspects of the best practices we’ve learnt presenting at conferences around the world and lecturing at the University of Technology Sydney for many years. We all learn better by doing, and working with others. The successful applicants become “FireBootCampers” spending 40-60 hours per week for 9 weeks. They will learn the right way to do .NET enterprise applications using a series of generally accepted patterns and practices. Most teams will build an ASP .NET MVC app all the way from concept to deployment.
No one will get stuck. No one will go down the wrong path. They will be mentored by an SSW Solution Architect each day during the program and we believe this is one of the keys to success. Having an experienced architect help them get over the hurdles when they get stuck, teaching them on best practices and pushing them to work hard and work smart, will turn these new recruits into job ready coders.
Employers: At the end of the program we welcome you to join our Gala night where the students will show off the apps they have built. You will have the first opportunity to add a “FireBootCamper” to your team. So if you are looking to hire a passionate junior world class developer, then register at http://www.firebootcamp.com/employers/ and be a part of the Gala night on 15th February 2013 at 2-6pm in Sydney, Australia. (If the demand is there, we may live stream the event.)
Job Seekers: If you you want to be part of the action, build a great app and get great experience, become a “FireBootCamper” for the next 3 months.
The first boot camp starts 16th December 2013 in Sydney. Get in early for a special half price introductory fee.
Quizzes: We wanted to provide more value to the viewer and give them an opportunity to reinforce the key points of the video. Now you can take a short quiz. Go ahead and test your knowledge!
TV Format: We have finally ditched the blog format. See how the content is now more accessible in our new TV-friendly format with the playlist down the right, showing the newest 16 releases. I preferred the scroll stopped when it got to #16, but I lost that argument and it now revolves endlessly.
Navigate by Technology: Say you want to see all the SharePoint videos? Now just click “SharePoint” in the new section on the bottom right “Navigate by Topic”
Figure: New SSW TV Video-style Design
With this new look and feel, you will notice that we have moved away from the old blog format (below).
Figure: Old SSW TV Blog-style Design was just a blog
At my Teched talks this month (Australia and New Zealand) I talked about Product Owners. After my session there were lots of discussion around the Product Owner Scrum role, and what makes a good one. I loved hearing the stories of dysfunction about Product Owners who have not done their job well.
The client is generally the Product Owner (PO). They should read the Scrum Guide, watch my new Product Owner video and communicate an understanding of their role. It is so important to the success of their project.
Order the Product Backlog. The important things will be done first, in order to maximize the ROI as the budget will run out one day.
Be available, at least remotely, to unblock a developer if he has questions/impediments. A good PO has a feeling of urgency.
Ideally listen in on Daily Scrums. This is optional but means that the PO will have daily insight into the team’s progress.
Understand Product Backlog Items (PBIs) and be able to explain what they want using Acceptance Criteria. This is the main way that developers and POs sync their understanding of what needs to be done.
Agree on a Sprint Goal for each sprint.
Not influence (or anchor) developer estimates with comments like “this one will be easy” and allow the team to come up with converged estimates.
Respect the Sprint Goal. Understand that the team will only work on things in the Sprint Backlog and don’t expect other things to be done as well. Most things can wait for the next sprint.
Who should be the Product Owner?
It’s hard to give guidance on who in the company would make a good PO. The usual candidate is often extremely busy. It should be:
1. someone with a personal stake in the success of the project.
2. someone who is available
3. someone with a clear vision of the product,
4. someone who has authority with budget
e.g. They could authorise adding a designer to a sprint for a couple of days
5. someone who has read the Scrum Guide and watched the Product Owner video and understands the role.
It’s possible to outsource the role of PO to someone in the development consulting company, but this is not recommended. Don’t put the fox in charge of the chickens.
During my session I said:
“Most dysfunction I see in Scrum teams is caused by a bad Product Owner”
This statement is based on my experience. I wonder if it rings true of what *you* are seeing? Let me know in the comments…
Using the right indexes is one of the most basic concepts when performance tuning SQL Server. Everybody knows you cannot touch the TFS SQL database directly, so they incorrectly assume that they can’t performance tune the indexes.
Before making any changes we measured the execution time 3 times to get an average.
We tested with a load of 100 concurrent users, plus 1 user setup with a collector to do the measuring.
We set the IIS setting for ‘Maximum Worker Processes’ (see yellow highlighting on image below) to “7″. (Use the calculation in Lesson 6 below)
There were 2 custom fields that the users were searching often. After adding the 2 indexes, the performance improved about 3 times.
‘Maximum Worker Processes’
Test 1 (s)
Test 2 (s)
Test 3 (s)
TFS field index = off
TFS field index = on
Figure: The performance improvement by enabling TFS field indexes was huge
We enabled a field index by executing the following command:
Lesson 4: Avoid virtualization in an *extremely* demanding production system
Hyper-V is very useful for optimizing your server infrastructure, however we’ve learnt you should avoid using Hyper-V on the data tier, because the Disk I/O overhead it introduced affected our performance significantly.
In this project, the 1st step we did to boost the performance was to optimize the data by moving the data tier to dedicated hardware that exceeded the recommended system requirements for maximizing SQL performance. The gain we got was roughly double.
Note: We first tested Hyper-V Pass-through disks prior to deciding that dedicated hardware was substantially better. That said, Pass-through disks performed better than VHDs (fixed or dynamic), but were still not good enough.
One of clients requirements was for one of their large busy systems, to call TFS and create work items. The 2 systems needed to stay in sync.
IIS by default has limited number of concurrent requests it can handle, the rest are put in a queue. Many long running transactions mean many things in the queue.
“Web gardens was designed for one *single* reason – Offering applications that are not CPU-bound but execute long running requests the ability to scale and not use up all threads available in the worker process.”
Why is the TFS application different from most web applications?
We are not sure why it falls into the 1%, but my understanding is TFS uses a dynamic data schema (Under the covers, they have a long, narrow table that stores dynamic column values as rows that then need to be pivoted to create a short and wide dataset), which makes the SQL queries very expensive, especially when you customize your process template a lot, e.g. adding many custom fields like we did.
Figure: This is IIS under a heavy load. These are queued requests in the IIS worker process (notice they are all in the ExecuteRequest state). Anything that’s over 50 is long and we have one that is an incredible 125 ms. Therefore long running transactions like this benefit from Web Gardens.
There are another 2 conditions you need to meet before you enable the Web Garden:
You are not using any InProcess sessions
Your service is totally stateless (this is usually the same as 1, but not always)
Fortunately, the TFS WebApp meets these conditions. And this is why we can use NLB (Network Local Balancing) on the AT (Application Tier) of TFS without any extra configuration.
The last question is, how many processes should I allow?
This is a tricky question and I wish we could give you a simple answer. In our tests, we found it depends on many factors, such as physical hardware, the application and even the request patterns. As a general rule, you should never set it above the number of CPU cores that you have on your box. This is because the overhead of switching between CPU cores kills any performance gains.
Therefore our IIS AppPool configuration was set at maxProcesses = (number of cores) – 1… in our case that equalled “7″ (as we had 8 cores)
Figure: We found increasing the setting of IIS’s Maximum Worker Processes to “7″ gave us the best results.
Lesson 7: In your integration code, find the performance bottleneck using Visual Studio Profiling (on the client side)
You may notice until now, we haven’t really touched the application yet, either the TFS WebApp or the application we developed.
The general rule when you are trying to improve performance is to focus on what gives the best ROI.
In this case, tuning indexes can improve an application sometimes more than 10x, but you cannot buy 10x hardware. So you should always tune your index first, then hardware and the last thing you want to touch is your code.
We used the Visual Studio Performance Wizard to analyse our code. It allowed us to identify the bottleneck quickly…
Figure: Run the Visual Studio Performance Wizard (in VS 2010 and VS 2012)
Figure: Or choose the “Performance and Diagnostics” menu in VS 2013
Here is the 1st report we saw:
Figure: Our 1st performance profiling report identifies the bottleneck is NewWorkItem()
You can clearly see the most expensive call in the chart is NewWorkItem(), so we dug into this method and found out it it’s actually the object initialization that costs the most. However, we cannot optimize this object initialization because that’s a core object. So we decided to implement an object pool to cache enough pre-initialized objects when the program starts, so then it’s just consuming it from the pool. Once the code was changed, this reduced the time by 22%.
Lesson 8: In your integration code, find the most expensive Web Service calls to the server (enable TFS tracing)
In lesson 6, we measured the TFS Object Model APIs, but we still needed more optimizations. So we dug deeper and found the most expensive calls to the server.
We enabled tracing on the client side and generated the following log.
Figure: Tracing TFS Web Service calls show the most accessed methods, which was our starting point
We found out the most expensive Web Service offender was GetMetadataEx2(WorkItemTracking) which is related to NewWorkItem() method, and this proved some of our suspicions before (in lesson 7). The TFS Client Object Model is reliant on some local cache to store the work item schema information, so it doesn’t have to retrieve this information every time. This confirmed our object pooling solution (in lesson 7) as a way to great benefits.
More info: the configuration to enable this tracing is below:
Object pooling on the TFS Object Model API (as per lesson 7)
Directly invoke the TFS Web Service endpoint
And they got similar improvements. After some debate, we chose Object Pooling as it was the safer choice since it is based on the documented API.
So in the end TFS holds up well under a massive load. The success of this project depended on going through a logical process of divide and conquer. We confirmed that the maximum benefit, for the least cost was still Index Tuning. But in very large systems there is much for you can do to squeeze out significant performance improvements. All in all, I am very proud of the results and I can say the project was a success, the client was happy and our SSW team learned heaps.
Recently Lei Xu and I completed a hair-raising TFS 2012 project. We hit some snags trying to optimize Work Items with 20,000,000 records. Let me tell you the story…
It was completed shortly after arriving home from the MVP Summit in Redmond. It was lucky we were full of information from Brian Harry and his team. This job turned out to be one of the most challenging that I’ve ever done, pushing the performance limits of Team Foundation Server 2012 (these tips apply to TFS 2013 and 2010 as well).
Figure: Brian Harry and Lei Xu @ MVP Summit
First some background: the client runs one of the biggest development teams in the world. They have over 20,000 developers and have a lot of experience gathering, analyzing and acting on performance metrics acquired while testing software prior to wide scale deployment. The system we needed to implement and customize had to cope with a massive number of concurrent requests, of course in very timely fashion. We used the TFS Integration Platform and the TFS Object Model to implement most of the functionality required.
However, like every story, things will never run as you expect. Once the coding was done, with all the data access, business logic and interface implementations on top of TFS Object Model, it was time for the 1st performance tests.
The initial results were disappointing:
(Before tuning) Red if target missed
Figure: The initial performance results were disappointing – some being 5-6 times worse than the target
It was powered by a great beefy SQL Server, so even though the TFS collection database had 20 million work items in it, I was shocked.
But also like every story, there is a happy ending, so here is the result after our tuning:
2500 ms (single server) or 1500 ms (NLB)
Figure: The client was happy with the results, we made our target in each case. That said, I think we were pushing TFS limits
There were many lessons that we learned and many people who helped. Let me summarize the lessons.
Lesson 1: Team Work
I put team work as the top one, as great software development is never a one man job, especially when you are dealing with a complex system. This system has many moving parts, including lots of performance tuning to TFS 2012, SQL Server, Windows Server 2012, IIS 8, the majority of TFS web services and the TFS Object Model. We were lucky enough to have experts for each of these parts and when put together, we achieved our goal.
During this project I got help from guys at Microsoft, my colleagues at SSW and couple of MVPs around the world. These included Brian Harry (Microsoft Technical Fellow, father of TFS), Aaron Hallberg (TFS DevTeam), Tiago Pascoal (ALM MVP), Ramesh Rajagopal (DevDiv from MS Dev Center), Julia Liuson (Manager of TFS DevTeam), Yongming Yi (MS Technical Specialist) … and more.
In short, if you want to do the job right, you need the right people. Having such a great team was essential for the end result.
Lesson 2: Performance testing should be done as early as possible
We used Scrum for this project and we built in unit tests and load tests from the very 1st sprint. One large impediment we had was the hardware. We didn’t get the right hardware until end of the project.
The results from the initial performance tests were poor. Thankfully this was not a too big of surprise for the client because one benefit of Agile methodology like Scrum is being transparent. This transparency led to understanding from the client.
The other main benefit of implementing performance testing early was that we had enough time to contact helpful people to gain support.
As you see the first 2 lessons are really not technical lessons. My next blog post will cover the technical lessons…