tags:

views:

252

answers:

7

Hello,

I have a development team specialized in ASP.NET. So the solutions we provide are web based, running on IIS and using MS SQL server. Everything within the intranet of the company. The team has this expertise, and they are excellent in C#, and .Net in general.

The company is deploying SharePoint MOSS 2007. This deployment is part of a project that I am not involved in, and for which I have very little information. However I know that they have established the "thinkers" layer (those who will say what to do), the integrations layer (the who will configure, deploy and manage the production), and that they need to establish the so called development layer (those who will do things the other two can't).

I am asked to evaluate the possibility to increase my team's expertise by adding SharePoint development. This is the easy part, I just have to find the required training and send my people.

However these days the word development could mean a lot of things and sometimes I discover that configuration is used in place of development. I don't have any objections to evolve the team by developing new expertise, but I want to be sure to keep things stimulating for my developers. Secondly I don't want to say that we have SharePoint development expertise, and actually what we do is just modifying css or xml files. Also, I don't think that using wizards to produce a solution is the best path to push a C# developer to follow.

The questions I am asking myself first is : what is the background of a SharePoint developer? how could .Net developers feel if asked to become SharePoint developers?

Any thoughts will be greatly appreciated.

+4  A: 

From what I have heard around, the SharePoint is a popular technology from the customer point of view, but an object of hatred among developers.

Developer Art
I have been to sharepoint development classes, and development on the platform is opaque, to say the least. But you're right, it is an excellent out-of-the-box tool.
Robert Harvey
+12  A: 

I started in Sharepoint development over a year ago when I inherited a WSS 3.0 solution at my company.

Personally I think it was a great step for me getting to know Sharepoint development a little, there are a lot of problems (e.g. security, load – balance, ghosting) that was good to see how was solved by the WSS team and helps me solve problems in other solutions I‘m working on. But I don‘t work on WSS solutions full time, so others have to anwer how it is working with WSS every day.

WSS and Sharepoint are an extension on the ASP.NET platform, so any experience in ASP.NET and .NET in general should be a good foundation for a developer that is starting creating Sharepoint solutions. I read the Inside Microsoft Windows Sharepoint Services 3.0 book in order to get the basic concepts and wss solution architecuture before I started working on WSS projects.

I quickly found out that you have to have a Virtual Machine environment for Sharepoint development, this is because it‘s a pain working on a client and attaching to a remote process on the server to get in debug mode. Therefore I recommend creating a MOSS virtual machine that has Visual Studio installed that has access to your source control system. Develop solutions on that machine and when finished then check into source control.

I also recommend looking at development tools, such as stsdev and wspbuilder to help you building your solution, these will ease you development process quite a bit. There are also quite a lot of tools available on the web, e.g. codeplex to help you out.

Sometimes it can be a pain developing these solutions, changes can require recycling the IIS pool or a brute-force IISReset, error messages can sometimes by a little cryptic and so on. But you quickly catch on and know where to look. Sharepoint also helps you out a lot, I‘ve had millions of questions from clients that can be solved with standard out-of the box web parts, so that I don‘t have to code anhything to keep my clients happy :)

Sharepoint also expects solutions to be coded in certain way, e.g. 12 hive filestructure so it helps you standardizing your solutions.

There is a serious lack of documentation, so that you have to rely on Reflector and such tools a lot, just to know what is happening within the framework, hopefully this gets better with 2010.

The initial learning curve is high, and a lot of new concepts an technologies to learn ,e.g. Workflows within sharepoint, featuers, ghosting and code access security There is a lot of Xml configuration that sharepoint uses that developers have to learn, this includes the site definition, list templates and more. There are sometimes days when I‘m stuck in Xml edit mode and can‘t figure out why things don‘t work as they should do

These are just few of my thought, I‘ve been working mainly in WSS development and it would be great if someone could comment regarding web part configuration in Sharepoint, e.g. configuring the search. Which is something I haven‘t been doing a lot of.

armannvg
+1: amazing answer, ty
Rubens Farias
Great information there. Now, I assume that where there are several developers doing a mix of sharepoint application (mainly web parts) and "traditional" asp.net web development, for the sharepoint development each developer would have their own virtual server - Windows 2003 or 2008 - on their workstation (we are running XP professional, moving to Windows 7 soon). Then MOSS and VS 2008 (with any necessary extensions) are loaded. Develop and test on the virtual server, then deploy to the standalone production sharepoint server?
Ken Ray
@Ken Yep, each developer has it's own virtual machine environment checking into source control each time he makes any changes. The end result should be a feature with an install file which does stsadm commands. From there we have a seperate test virtual machine where the commands are executed and the solutions tested before it is eventually delivered to the client
armannvg
You basically said everything that us veterans "know" about SP but are too lazy to post in one place. Good job. +1 to you.
Repo Man
+4  A: 

Nice to see you noted Dev and Admin being used "incorrectly".

Although Developing for SharePoint could be purely that, development, like creating webparts etc., I strongly encourage you and your team to get to grips with SharePoint deployment, installation and configuration as well. I am fully SharePoint Certified (WSS Config/Dev and MOSS Config/Dev) and having knowledge of both ends has been invaluable for me.

Knowing what is configured where will help in debugging and troubleshooting along the way. I suggest taking an MCTS WSS 3.0 COnfiguration training / and or a MOSS Config training for at least 1 or 2 of your team. The rest of the team will pick up the essentials as they go along, having those 2 certified colleagues as go to guys concerning config and admin.

IMHO, being a sharepoint consultant entails knowing how to create a piece of functionality as a dev and then being able to deploy, configure and maintain that piece of functionality as an admin (or at least an informed end/power user).

Colin
+1 Deployment is definately the most challenging part of sharepoint
Shiraz Bhaiji
+2  A: 

My co-worker is studying SharePoint at the moment. Making fun of him all the time. Frequently he gabbles something like "wtf is that??!!". And then i feel a bit sad, because i know - there's a probability that i'll have to learn that stuff too (i guess it's not so easy to get projects nowadays).

I see it more as configuration and customization than software development (something like hunting down fing checkbox for 3 days in a row). You pick up some clay through those crazy sharepoint designers and then endlessly customize it.

For everything i know already - there's a new name (i.e. - spGridView) and unexpected behavior underneath.

Html that gets rendered is bizzare (tables and bunch of serialized viewstate everywhere).

But those configuration xml`s... o_0
Now that's a hurdle i can't get over. Even hardcore SQL stuff starts to seem like a childish game.

Maybe i'm wrong, but as i have heard - Microsoft developed 'spatial columns' (let's you expand count of columns for tables over thousandsomething) for sql mainly because of Sharepoint. That terrifies me.

Of course - my opinion is HIGHLY subjective and a bit offensive. But i hope that helps to better reveal what i think & feel about Sharepoint.

Hopefully developers you are working with sees this different.


In short:
No. I wouldn't like to become a sharepoint developer.


Edit:
I could handle that initial complexity. But the main reason i don't want to - i don't think that development in Sharepoint is the right way to go. I mean - lately people discuss that webforms provides too much abstraction. Then what to say about Sharepoint?

Arnis L.
It sounds like you're describing the same (lack of) disparity between "configuration" and "development" in SharePoint. In the case of the designers, often they are the wrong tool for the job, just as rolling-your-own code solution can be; the real problem is that Microsoft makes it hard to discern the best way to do a lot of things in the platform, and most things can be achieved from both sides of the coin. The 2010 release is looking to target a lot of these issues for devs, but it remains to be seen what adoption is like.
OedipusPrime
I'm just internally measuring Sharepoint with Asp.Net Mvc. I prefer writing pagination calculations myself more than 'customize something' until it fits my needs. It just feels like a big mess. Too much checkboxes and xml. Never liked them.
Arnis L.
+2  A: 

Albert, take a look at this other thread titled Is a sharepoint developer technically “equipped” to do custom app dev and vise-versa. There's quite a bit of info in there about what's involved in making the leap from pure .NET to SharePoint.

Troy Hunt
A: 

thank you all for the answers, they are all really helpful.

from what I read here, I see two things to consider.

First is the context of utilization which I think is an important factor. In some places SharePoint "development" could go very far, and could involve developing really exciting things, in order to satisfy new customers' needs. it could involve writing code and so on. And in some other places it could be just administration and configuration, in order to maintain already established solutions.

Secondly is the personal motivation. It really depends on the person. Some .Net developers with good experience, will prefer not to go in a direction, where they will not code the "SharePoint way", and will like to write code in C# or some other languages. However there will be others that will choose this path and will be happy to have such careers. They will be motivated and thus propose really nice solutions.

For example, from my personal perspective and if I had stayed in development and programming, I would not choose SharePoint development using high level wizards and menus,as a progress path for my career. Even though I am not doing it these days, I still enjoy coding, compiling, debugging etc, but this is just me.

albert green
A: 

To be a successful SharePoint developer you must have a high threshold for pain and the patience of a Buddha.

Repo Man