When reading about how Microsoft does business, it’s quickly evident that we’re a metrics-driven organization. Even my wife, who works in strategic planning, mentioned that the instructor at a recent training class cited Steve Ballmer as a core example of someone who leads by scorecard.
On the surface, one might think this would be frustrating. Feeling micromanaged, like your time revolves around the numbers. If the numbers became out of sync with business reality, or if they were unreasonable, I might feel this way. But Microsoft leadership seems to be responsive to changes and suggestions each year, and the process gets me regularly thinking about creating goals that help grow our business, increase my impact, and help others succeed (among other things).
I work in a super competitive place. My compensation is partially awarded in the context of others in my pay grade, as well as the one above me. This means some very experienced, passionate, and intelligent people are vying for the same recognition that I am.
So each year I sit down a few times with my manager to tweak my “SMART” goals to help me stand out above my peers. In some ways, it’s a personal exercise rather than an organizational one. For instance, trying to figure out how to put a personal metric on increasing my exposure and influence is a little tough, and the output seems a little goofy. Statements about number of technical discussions outside my immediate team, for instance, represent my intention rather than a metric tied directly to business accomplishments. I think the point is more to consistently think about accomplishing the intention of goals, rather than the language itself.
The process isn’t flawless, and some of the metrics that get assigned to me may not fit exactly with my work conditions. Also, the goals are not explicitly examined as if they were an exam, so some aggressive goals I set (such as a new MCITP or MCPD certification) get lost in the shuffle if I don’t highlight them specifically. But, generally speaking, goal setting at MCS is a motivational process and has helped lead me down an interesting path towards a more visible presence within my team and at my customers.
I’m at the Professional Association for SQL Server (PASS) Summit, an event that brings together a few thousand professionals that work with Microsoft’s SQL Server for technical training, inspiration and networking.
My justification for attending was mostly technical: to fill some gaps and learn new skills, although I also expected to make new contacts and friends. I’ve done these things, but I also gained some unexpected insight. Namely, I was inspired to focus and document my career plans.
This “aha” moment began with a “Birds of a Feather” lunch group. This type of lunch group at PASS involves choosing a lunch table assigned a topic. My choice was “Why you need to distinguish yourself from the rest,” a group facilitated by DBA and professional development guru Edwin Sarmiento (@bassplayerdoc). We discussed the motivations to stand out, and the topic quickly shifted to figuring out how to stand out. We had great discussions about how to change perceptions that others have of you, and how to do some personal branding in order to be recognized for your work.
I attended some great technical presentations, and although all the presenters have impressive backgrounds, two presenters stood out to me as role models for interesting careers and deep focus: Stacia Misner (@staciamisner) and Joy Mundy. They both have an intense passion and deep focus on the Business Intelligence stack and many years of experience.
Finally, Andy Warren (@sqlandy) presented on developing a Professional Development Plan. In the talk, he outlined the need to discover and document the resources you plan to use to better your career, and described how to create a written plan. This was excellent and is something I have started working on. Importantly, he made points about balance and avoiding burn-out, and I plan to use this to develop insights into my own development plan.
My head is swimming in new thoughts and ideas, and I’m working to develop a story for my next 5-10 years. I have some role models to keep tabs on and some tools to help me move forward. Thanks PASS!
I’ve decided to pursue a Master of Information Management (MIM) program from University of Maryland.
As a consultant for Microsoft, I am required to become an expert on technologies as they emerge. Since I work with customers that are sometimes slow to adopt technologies, I need to ramp up on older technologies as well. Continuously learning multiple generations of technology can be a fun challenge, although sometimes daunting!
Microsoft provides me with amazing tools to stay fresh. MCS allows for 4 weeks of paid training per year, and every 18 months, I attend TechReady, a week-long training in Seattle. I also have free access to everything Microsoft Learning and Microsoft Press creates. I try to take full advantage of these tools and always add certification exams to my yearly commitments in order to keep myself on track.
With all the need for me to learn technologies, there seems to be little time to cycle back to foundational knowledge that can help me make broader decisions, and help customers make more impactful technology choices that are led by business needs.
In the next 5 years, my impact will increase. I’ve made my technology skills and aptitude for running with new technology challenges evident on every project I’ve been assigned to, and I plan to continue to do so.
With the knowledge I gain from MIM program as well as my growing impact on the job, I am hoping to position myself to more fully affect change at a higher level.
In the next 5 years, I hope to shift from the “tactical” impact of designing and implementing specific systems to the world of “strategic” thinking, and I think this degree program will help me get to that point.
I’m coming off of a stint of a few exams in a row to earn my Microsoft Certified Professional Developer (MCPD) credentials for ASP.NET 3.5, which I obtained last week!
In the past year, I have also passed a few Microsoft Certified Technical Specialist (MCTS) exams for SharePoint, and today I failed (eep!) the MB2-634 CRM 4.0 Extending Microsoft Dynamics exam (but plan to re-take it).
Throughout this experience I’ve been considering the impact having these “titles” might have on my employer’s confidence in me and how I’m presented to customers. I refer to the certifications as titles because they’re often displayed in email signatures, including mine.
In my limited experience as an interviewer (I’ve interviewed a dozen or so candidates for various positions within and outside of Microsoft), I have found that the old certifications weren’t terribly useful as a distinguisher. Most of the senior-level candidates had a pile of them (MCSD, MCAD, MCDBA, etc), and they were usually old versions of tests that showed they took a bunch of tests at some point in their career. It was nice to be able to fill in the certification check box, but didn’t always indicate relevant exposure or experience.
Things are slightly different for me now that there are more clearly versioned exams (such as the ASP.NET Developer 3.5 or SQL Server 2008 exams), and I feel that the titles can be helpful to distinguish developers on a few factors:
Conclusion
There’s no doubt that Microsoft benefits monetarily when people become certified. Passing active and recent exams helps developers and allows employers to distinguish ones who stay current. It’s not a foolproof method, since passing an exam doesn’t always indicate practical knowledge or experience, but the titles can effectively communicate commitment to learning and staying current.
Introduction
Integrating external applications with SharePoint data and functionality is pretty easy, but the documentation is scattered, so I thought it might be helpful to provide a complete solution that covers a few main scenarios.
I’ve used the SharePoint web services to provide a custom search interface and to populate lookup tables. I’ve also seen it used as a workaround in a few scenarios where the SharePoint Object Model was behaving erratically.
This post will focus on how to quickly get started with the web services interface in WSS, and particularly how to access SharePoint data and search results quickly, in a new project. It’s not very polished, but it gets the job done.
Does this apply to me?
First, when communicating with WSS and MOSS, you have to decide which remote access tool best fits your needs.
As Alvin Bruney points out in his book Programming Excel Services (Safari), the web services interface is also “a way to access the resources of the server with reduced risk of instability to the server resources.”
Secondly, figure out if you need to do this from scratch at all.
Check into LINQ to SharePoint, which can use either the SharePoint Object model or the web services interface. It looks like a really slick and robust way to interface with your existing SharePoint data. On the down side, it appears to not have been updated since November 2007 and Bart De Smet, the project’s author (blog), notes that it is an alpha release and not ready for production. I’ve steered clear of it for that reason and due to client restrictions, but you might save yourself a lot of time if you can use it!
Check out this video, from the project’s CodePlex page, for a good quick start:
LINQ to SharePoint quick start video (5:37, 3.18MB, WMV)
If you decide against LINQ to SharePoint, you can still easily add web references and consume the SharePoint web services in your custom code.
Walkthrough: Accessing List data
As it turns out, the web host for Hands on DC (a volunteer organization with which I work) does some hokey things with NTLM authentication that aren’t supported by WCF. Namely, it seems like they’re doing Transport level authentication over plaintext HTTP instead of HTTP over SSL. I can see why this isn’t supported, for security reasons. Despite Dan Rigby’s excellent post about impersonation in WCF, I couldn’t get anything to work.
But alas, with no slight of hand whatsoever, the scenario works in VS2005 and a regular old-school ASMX-based web service proxy (web reference). Here’s a quick (and quite dirty) example, initially based on Ishai Sagi’s (blog) response on MSDN:
Video hint: Click the full screen icon (looks like a TV) Download source code (39KB, ZIP file)
The query that we send to the list service is written in CAML. When we want to get more complex in our query, such as only pulling back certain columns, check out the U2U CAML Query Builder. It provides an awesome interface into creating your CAML queries.
In the WCF world, Kirk Evans has an awesome walkthrough, Calling SharePoint Lists Web Service using WCF, which includes how to streamline the XML access by using an XPathNavigator, and later using a DataTable that reads from an XmlNodeReader. Better than querying the fields directly for sure!
Walkthrough: Querying WSS Search Results
Search is a little more challenging. As is the case with every other web service, we send the query service XML, and it returns XML. We can take a shortcut and generate the request XML with a tool such as the Search Query Web Service Test Tool for MOSS (or we could also import the schema and generate a C# class from it).
Since I’m a big fan of using XSD.EXE to generate a C# class, I chose to do so with the search result support classes. It was mostly productive, although the Results node is free-form (can take any node type) and the generator doesn’t seem to support that. In the end, we can use the generated classes to get statistics about the data set, and can navigate the Documents using regular XML methods.
Here is a complete walkthrough of adding very basic search results, including a total result count and the first page of results, to our application:
Video hint: Click the full screen icon (looks like a TV) Download source code (56KB, ZIP file)
Use SharePoint web services when you have the need to separate concerns and reduce risk inherent with new code deployments to the SharePoint farm, you want remote access to SharePoint from a non-SharePoint server, or you need to access SharePoint from something other than .NET (such as JavaScript).
This post and associated videos walked you through creating a Windows Forms application, from scratch, that pulls data in from SharePoint, including List-based data and search results. The process is similar to any other web service, but there are a few gotchas and pain points that I hope have been cleared up in this resource.
I collected some additional links in the process of putting this post together, and added them on delicious with the tag “sharepoint-webservices”.