Recently I started a new project with one of the teams in the Microsoft Patterns & Practices group in Redmond, Wa. For this project our team will provide guidance materials and a reference implementation. We are aiming to help SharePoint developers overcome some of the more difficult aspects of SharePoint development as well as help new developers with the initial 0 to 60 learning experience.
Already we have started to look at development environments and team development scenarios as they related to SharePoint development. Watch for thoughts on those and more subjects here soon.
Although we are a small team, we have built quite an elaborate build process for out team. Our current configuration includes developer/tester workstations running Windows Server, a continuous integration (CI) and build verification test (BVT) server running Team Foundation Server, as well as test, staging, and production servers. Look for a CodePlex site soon with some guidance on team-based SharePoint development utilizing a build server, which has turned out to be quite a challenge.
This is how my Avanade laptop is currently configured for MOSS development:
This is what Avanade calls your time between projects. Last week I rolled off my first major project and started my bench time. This time is meant for training and getting certified. So I did just that.
The first four days of this week I spent training on Microsoft Office SharePoint Server 2007 where I utilized independent study materials that I obtained through Avanade’s internal training department.
Friday was spent craming for Exam 70–528: TS: Microsoft .NET Framework 2.0 – Web-Based Client Development, which I ended up passing on Saturday. This was my second Microsoft exam but my first with Avanade. As part of being a Solution Developer at Avanade you are required to become a Microsoft Certified Professional Developer. This was the first of five exams that make up the MCPD certification. And with five exams, I thought I should better get crackin’.
The other day out at Microsoft I ran into some interesting behavior in SQL Server regarding the difference between running a query in a table-valued function versus running it in a stored procedure.
This particular query I was trying to run selects columns from an existing view that is part a database of the Microsoft product that I am currently working with. Unfortunately, this is no ordinary view. This view not only has two nested select statements, it joins on a table holding thousands and thousands of records. Looking at the estimated execution plan was ridiculous, having probably 50 or 60 processes.
Running this query in a table-valued function, basically just running the view, causes the CPU on the server to soar to 100% and Management Studio to basically timeout. However, placing the same query in a stored procedure yields almost instant results.
I talked this over with the resident SQL guru on the project and all we could come up with was that, because of the complexity of execution plan, the pre-compilation of the query in a stored procedure makes all the difference.
Well, the training was finally over and the start of March brought the start of my first project as a consultant at Avanade.
After a little bit of networking with a fellow WWU grad, I got onto my first project, and wouldn’t you know it, it’s at Microsoft. I am currently working in a small team as a UI developer working with ASP.NET, C#, and SSRS, which is quite an exciting opportunity considering ASP.NET and SQL Server are my bread and butter. There was only one problem.. I (and my trusty new laptop) had to be converted to the Microsoft religion before being able to do pretty much anything. So after a new laptop image, hours in software installs and reinstalls, badge creation, badge recreation, and a smart card reader I was finally fully capable of working at Microsoft.
As developing on this project starts I have decided that I will be expanding the scope of my weblog to not only include life snippets but also some code snippets and developer thoughts that I find useful or interesting along the way.