I have been asked by several clients, colleagues & friends - the technical skills should they be looking for while hiring a senior level SharePoint resource (Developer/Architect). A common misnomer is to hire an asp.net developer and he/she can pick up what SharePoint. Yeah, you can go that route, but I for one am not entirely sold on the idea. I was a long time asp.net developer before I picked up SharePoint and there are some major differences that I had struggled getting over with. First of all, I would like to clarify that a good asp.net developer may or may not be a good SharePoint developer (because SharePoint is much-much more). But on the other hand, a good SharePoint developer requires the skills of a good asp.net developer - to be an expert in all the asp.net stack of technologies including Masterpages, themes, user controls, custom controls, LinQ, SilverLight, ADO.net data services etc. Here is my list of skills that a good SharePoint Developer/Architect must posses.
1) Complete and thorough understanding of .net stack of technologies. By this, I don't necessarily mean just asp.net, but the whole .net enchilada. And this trait becomes more and more important when needs are extremely advanced and custom workflows, custom fields & custom pages - 'customizing' is a buzz word around for you. With Microsoft' push to bridge the gap between traditional asp.net development and SharePoint development, having a good handle on .net stack of technologies and its capabilities will certainly help get through the programming hurdles.
2) Clear understanding of when to use features, feature stapling, Site Definition, Custom events, developing custom master pages, themes, security trimming etc. Having a clear understanding of Search relevance and other component including best bets, scopes etc is also very important. Complete understanding of the 12 hives and how physical directory structure corresponds to the virual one. Understanding of best practices and common tools available for SharePoint development is also important.
3) A good understanding of network protocols, network security and Active Directory is required. You can always leverage the skills of Network Admins, but having basic and clear understanding on the network functioning can help make right decision.
4) Same goes true with SQL Server. Since SharePoint stores all its data on a SQL Server database, having a good handle on SQL Server is really required. The candidate doesn't have to be DBA but should have clear understanding on the functioning of databases, security & how MOSS service accounts plays role in database permissions.
5) Understanding of server topology & skills to optimize the availability & security of the environments is a must. In a typical farm type setup, a candidate should have clear understanding on the ways that a MOSS farm can be scaled up or scaled out. When to draw a physical detachment of server v/s a virtual one is also important. An Index server should have a dedicated environment (a strong recommendation), but what would you do, if you are running a small farm?
6) When to customize v/s using out of box SharePoint Capability- Yah! Need to clearly know when to open SharePoint designer and start mucking with the sites pages. Remember, saving a page using SharePoint designer can put it in the customized state (unghosted state) and if the page is the home page of your Corporate Intranet, you can imagine the nightmares that it could entail. If you really have a customized needs, see if creating custom master pages using Visual Studio with features & definition a solution for you.
Heather Solomon has written a great blog entry on how to accomplish this.
7) Finally, a good architect should have all the skills of a good architect in any other technology. ie. understanding of design principles, comfortable in creating UML diagrams, communicating design ideas and aligning best practices with the scope of the work. They all still holds true.