I'm going to buck the trend here a bit. I see SharePoint as a development platform - plain and simple. It utilizes other technologies such as IIS, ASP.NET, SQL Server, and Windows Workflow so I don't have to reinvent the wheel. It lets me focus on solving business problems instead of worrying about plumbing and system-level code.
Don't get me wrong, SharePoint does come with baggage, but if you like to solve real-world business problems and not just sling code, it has a lot to offer. I am continuously amazed at how rich the platform is with WSSv3 - which is free.
If you like to align yourself with Microsoft technology, then you need to realize that SharePoint is here to stay and will continue to get better and be more commonplace. The current version (v3 - WSSv3 / MOSS 2007) is lacking in AJAX, social networking, and other functionality/technology. The v4 version is just around the corner and is bound to improve in these areas.
In regards to some of the negatives I have read in this thread:
I have written web parts that live in SharePoint that utilize the AJAX toolkit and so have co-workers of mine. One co-worker is very active with Silverlight web parts.
Yes, you do tend to develop on Windows Server 2003/2008. This doesn't bother me and I don't spend much time at all on installation and configuration. I do use virtual machines for development environments sometimes and agree that can sometimes be a pain.
What I am able to do, however, is configure some things instead of develop. Authorization, done; provisioning, done; row-level security, done; basic UI CRUD, done; deployment to multiple front ends, done; search, done. Now I have time to focus on solving the business problem.
If you are going to do SharePoint development, you need to get started on the right foot. I highly recommend Inside Microsoft Windows SharePoint Server 3.0 to get to the meat of what a developer can/should do within SharePoint.
For what it's worth, I've been a developer for over 20 years working on Unix and Windows in several different languages and technology. I've been focusing on SharePoint v3 since it's beta days and am happy with the direction I have chosen.
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.
I agree with kusek, that's a great answer.
I would also add that SharePoint is too big a product to pick up development from a "Hello World"-type customisation as I think you're looking for. It's important to know the product first and the out-of-the-box functionality it can provide as often you might be able to avoid custom dev. When you exhaust these options and need to dev, there are several technologies involved and sometimes different options, all underpinned by an API with its share of gotchas (like any).
To cut through all of this I really believe you should read a book, and that book should be Inside Windows SharePoint Services 3.0. This will teach you most of the customisations you can do, it's simple and clear, and shows you best practices as well.
I started off the same way as kusek did (in fact SharePoint development was my first exposure to ASP.NET full stop). I just wish this book existed when I'd started several years ago as it would have saved a lot of pain and made me a better SharePoint developer, sooner.
SharePoint development really is a great challenge! I hope you enjoy it!
It doesn't matter which language you use as long as its .NET. The most popular for SharePoint development seems to be C#.
The most commonly recommended book on Stack Overflow tends to be Inside Windows SharePoint Services 3.0. It's a great resource.
For more help, see this previous question: Where should I start if I have to get into Sharepoint?.
Apologies if I haven't already mentioned this before, but have you read the various "Getting started with SharePoint" questions on the site? These will give you good pointers and hopefully ease your frustrations:
In particular a good book like Inside Windows SharePoint Services 3.0 will help you a lot. It's clear and takes you through the basics very well.
Marcus' article is a good one. However I cannot recommend using Visual Studio Extensions for WSS (VSeWSS) due to the bugs and problems involved.
A good alternative is WSPBuilder. This community project integrates into Visual Studio makes it simple and easy to see exactly what you are doing and gives you control over how your code is deployed into SharePoint.
Also see the Getting started developing for SharePoint question for links to more resources to help get you started. I strongly recommend getting a good grounding in how SharePoint works first. It takes more effort initially but will save you a lot of time and confusion later. A good book to start with is Inside Windows SharePoint Services 3.0.