So… You STILL Want to Be a SharePoint Developer?

I wrote my very first blog post ever in December of 2008 with the question:

So! You think you want to be a SharePoint Developer????

And wow has a lot changed since then in the world of SharePoint development! Sandbox Solutions (introduced and now deprecated in some respects), the App Model, Office 365, Workflow Manager, Service Applications (does anyone still try to write these?), the loss of design view in SPD, REST, CSOM, the recent demise of InfoPath (still giggling like a school girl), and the new introduction of OSLO and the new Office 365 APIs AND I’m sure I missed several important items!  How on earth can you possibly hope to stay on top of this ever growing and changing list? Which should you focus on? Which best practice today is tomorrow’s deprecated feature?

Stop the madness!

How in the world is someone supposed to step into this developer landscape and even know where to begin? It was like drinking from a fire hose when I started on SharePoint 2007, now it’s more like drinking from a fire hydrant.

What is an aspiring SharePoint Developer to do?

I still get this question asked to me fairly often, and although there is SOOOOO much more to learn, the development landscape has also matured. So instead of climbing a steep jagged mountain, you instead have to traverse vast rolling hills in your quest to be a developer.

So even though you may come away with fewer cuts and broken bones, you’ll still have some blisters on your feet.

Have I carried the analogy too far? Are we connected here?

Cut to the chase. How do I become a SharePoint Developer?

I’m glad you asked. I have an answer for you if you are willing to put forth the effort. Just because you are a developer that uses SharePoint, does not mean you are a SharePoint developer. There’s a big distinction and I’ve seen too many things that make my eyes bleed created by developers who were definitely NOT SharePoint Developers.

Below are a few things you MUST do in order to become a decent SharePoint developer.

LEARN SHAREPOINT!

I cannot stress this enough. Before you even think of writing a single line of code, go and learn how to use SharePoint. Learn how to create a site and a list. Learn about Content Types, Site Columns. Discover the Out of the Box Web Parts and Workflows. Understand those Out of the Box Site Templates and all the wonderful goodness you get with just the click of the button.

The number one mistake a developer can make is opening Visual Studio before investigating what can be done out of the box.

I had a client recently who brought me their SharePoint site and asked for help because they were experiencing performance issues. So, I being the nice guy that I am, opened up their site and started looking around. They had these strange list views that I could not quite figure out how they were developed. Were they out of the box list views? No… Were they Data Views created in SPD?? No… hmmmm… It turns out these “list views” were custom .NET web parts deployed as farm solutions! What’s more, because the developers didn’t know how to efficiently traverse a SharePoint list in code, the list view became INSANELY slow after a few thousand items existed in the list. These 30+ web parts could have all been written using out of the box SharePoint list views. Heck, you don’t even NEED a developer to do that. But instead, my client was left with a horribly performing farm, with static list views they couldn’t update without redeploying a farm solution. BAD developer.. BAD BAD developer.

And the developers excuse about slow performance? “Well, you shouldn’t have more than a few thousand items in a SharePoint List”.  The next time you hear a developer say that you can’t have more than a few thousand items in a SharePoint list I want you to smack them upside the head and demand your money back.

Okay… I’m calming down…

So, how does one go about learning to use SharePoint? Luckily there is an answer for that. Microsoft has released some free training videos for SharePoint 2013. Give them a go:

Training courses for SharePoint 2013

There’s also a ton of YouTube videos for you to scour as well as reputable training courses. So, there’s really no excuse for you not knowing how to use SharePoint, and you can bet any decent interviewer will try to trip you up with development questions for things that can be done out of the box.

Embrace Client Side Dev Now

Before you go to open up Visual Studio and start writing that C# code, learn what you can do with client side development techniques using JavaScript, jQuery, CSOM, and REST. No matter which version of SharePoint you are using, you can create a lot of powerful functionality with a script, a document library, and a Content Editor Web Part. Don’t let the Visual Studio bigots tell you any differently. I’ve got too many successful projects and happy clients under my belt to believe otherwise.

Let me tell you another little story. I had a client who wanted a simple Contract Management Solution and didn’t want to pay tens of thousands of dollars for an enterprise solution. Well, if you think about it, SharePoint does 85% of what you need a Contract Management solution to do out of the box. Right? Document management, approvals, workflow, versioning, metadata about contracts, and companies. It’s all right there.

I sat down the client down and walked them through my game plan. I took their requirements and developed a Site Collection in production (gasp) that they could start using within a few days. It had all the Content Types, Lists, and metadata they needed to store the information that came out of the requirements. I explained to them that I would apply client side development techniques to the application as they used it to improve the usability and functionality as they went along. We had regular meetings where they identified their pain points and they were also able to flesh out functionality they needed more in their approval workflows. I was able to make quick modifications to their lists, forms, and dashboards with scripts using jQuery, JavaScript, REST, and a few jQuery libraries to give them a rich user experience. They were able to experience the application being built around them as they worked. They were able to see their feedback getting implemented immediately. And you know what else happened? They felt like the application was “theirs”. They took ownership, they loved using it, and were extremely happy with the end result. We even came in under budget. This could not have happened if I had not understood SharePoint’s out of the box features and what was possible with client side development.

Another great thing about using scripts this way is that they deploy so easily from development, to test, to production. The only deployment issue I’ve EVER had with scripts is when an old version of a script gets cached and you have to force a reload by doing something called “cache busting”. Migration is also a breeze, many scripts need very few modifications (if any) to work in different versions of SharePoint.

jQuery

jQuery is an invaluable tool when it comes to client side development. jQuery allows you to easily manipulate a web page without impact to the server. So, if you want to inject a button, menu, video, create a table, graph, make a form, etc. It’s a really great tool. Plus you can call web services and interact with SharePoint in some really amazing ways.

I’ve been doing client side development since 2009 and have been compiling a list of all those related blog posts. So check that out to get an idea for the different things you can do and for some tips on getting started:

The SharePoint & jQuery Guide

CSOM, REST and SPServices

Using CSOM, REST, and SPServices you can open up an entire world of development in SharePoint. The breadth of functionality these libraries offer is HUGE and continues to grow. Using these tools you can query lists, create items, create sites, work with users/groups, create workflows, work with search, almost anything you can think of! The only real limitations you are going to run into is if you need to elevate permissions or do cross site scripting. Besides that, the world really is your oyster.

If you are using SharePoint 2007 your only option is SPServices. CSOM and REST functionality was introduced in SharePoint 2010 and has been greatly expanded on in SharePoint 2013.

For more information on using JavaScript, REST, and CSOM check out the following Pluralsight courses. I still use Rob’s course below as a reference for when I need to do something with REST or CSOM. GREAT content.

Embrace client side development NOW and you will be much better prepared for the future.

Managed code as a last resort

After you have exhausted out of the box options, and pushed the limits with client side scripting, it’s time to look at what you can do in a more managed code approach. This is where things start to get interesting depending upon which version of SharePoint you are using. SharePoint 2013 and Office 365 really changed the game we were playing with the introduction of the App Model, and the App Model SHOULD influence your development decisions going forward should you ever desire to move to SharePoint 2013.

Traditional Managed Code

In SharePoint 2007 we were introduce to Farm Solutions. These are solutions built in Visual Studio and deployed as a feature in SharePoint. The advantage of Farm Solutions is that you had direct access to the server and file system and the limit to your development was your imagination. The bad part about farm solutions is that they did (and still do) have the potential to make your SharePoint farm extremely unstable. If a bad developer writes a bad farm solution it can completely crash or trash your farm. However, a talented developer can create elegant Timer Jobs, Event Receivers, and other functionality that greatly enhance your applications. Plus, once you are good at it, Farm Solutions are simple to create and deploy. The other major downside of Farm Solutions is that you had to have direct server access to deploy them.

In SharePoint 2010 Sandboxed Solutions were introduced. These little jewels allowed you to create solutions in Visual Studio and easily deploy them in SharePoint for a specific Site or Site Collection without major impact to the farm. In addition you didn’t need direct server access to the farm to deploy them. What’s more, Sandbox Solutions have a “point system”. If your Sandbox Solution hogged to many resources within a 24 hour period, all of your Sandbox Solutions on that Site Collection would shut down until the next cycle, again, helping to save your farm from bad developers. The major downside of Sandbox Solutions is your inability to elevate permissions or effectively communicate outside of your site collection without some sort of hack. Also, in SharePoint 2013 (Office 365 specifically) Sandbox Solutions that use code have been deprecated. This means, that although they still “work”, the plug could be pulled on them without warning. Too bad, too, I really like Sandbox Solutions for many reasons.

SharePoint Apps

In SharePoint 2013, Microsoft decided to turn our worlds upside down. Although Farm Solutions are still supported for on premises installations, we are urged to start using these new things called SharePoint Apps.

Andrew Connell explains SharePoint Apps in his SharePoint 2013 Developer Ramp-Up – Part 2 course. It is super important to note that if you are using Office 365 you CANNOT create Farm Solutions. You will definitely want to learn about SharePoint Apps in depth if you use or plan to use Office 365. My advice?? Look at SharePoint Hosted Apps first. Do as much as you can with SharePoint Hosted Apps and Client Side Dev. Trust me on this one.

Even If you are using SharePoint 2013 in an on premises environment it still might be a good idea to invest in SharePoint Apps instead of farm solutions so that you aren’t deploying code on your farms and causing headaches for your beloved admins. Plus, you are ready for the cloud should you move there someday. Personally, I think it is a rather daunting goal of giving up farm solutions for SharePoint Apps especially if you don’t have to. I would not slight anyone who has an on premises farm with zero intention of going to the cloud if they decided to stick with farm solutions. But I’ve done my part, I’ve made the suggestion.

The BEST managed code training for SharePoint

So when it comes to actual training for SharePoint it comes down to a couple of options. Do you prefer a classroom setting or online video training? Both have their plusses and minuses. With classroom training you get more face time with the instructor and can get your exact questions answered, but with videos you have the ability to playback the courses as needed.

If you are one of those folks who just prefer a classroom setting here are a few options you can’t go wrong with, some of these guys also have some online videos:

If you are willing to give videos a shot, I can’t say enough good things about Pluralsight. The courses are top notch and presented by some of the biggest brains in SharePoint. You can sign up for a free trial and a subscription is only $30 per month. Below are the courses I would view if I was a developer that understood how to use SharePoint and wanted to learn how to be a SharePoint Developer.

There are also courses on Pluralsight for different versions of SharePoint. So even though I’m pointing you to SharePoint 2013 courses, there are SharePoint 2007 and 2010 courses from some great folks for you to check out as well. Look at the entire Pluralsight course catalog for SharePoint and dive in and discover what’s next!!

No matter how you choose to do your training, it is important to have some sort of formal training with SharePoint development so you don’t get stung by the many gotchas that regular developers do not have to face every day. Don’t question it, just do it. Your users will thank me later.

And don’t forget about the blogs!

What about our bread and butter of learning in SharePoint 2007 and most of 2010? Should you still bother with blogs? Well, of course you should! However there is SOOO much noise out there that it is really important that you have a solid foundation for how things SHOULD be done so you just don’t implement the first solution you find from someone’s blog. You might get it to work, but was it done correctly? Having the correct skills will allow you separate the wheat from the chaff and put the right code to good use. It’s very important to understand WHY that piece of code/script you are copying and pasting works. That blogger is most likely not going to help you debug your code.

If I get ONE more message saying “Your code doesn’t work. I did exactly what you do did! All I did was change…”  Winking smile

But blogs… what developer blogs do I know I can trust? There aren’t a ton, but you can’t go wrong trusting these big brains:

I’m sure there are a few others that didn’t pop to mind, but these guys are brilliant.

Are you still around?

Did I scare you off yet? But we are just getting started! There’s STILL so much more to learn! You still need to learn about BCS, Yammer, OneDrive, and definitely keep your eye on OSLO and the new Office 365 APIs. There’s a lot of excitement and potential around those, especially when used with SharePoint.

We really are entering the Salad Days of SharePoint development. With our growing toolset we can do more and more every day. It can be frustrating, painful, and a wee bit insane a lot of the time; but don’t be too overwhelmed, jump in and welcome to the party!

Do you have any training tips? Hey.. look at that. There’s a comment section.. right there!

Cheers!

And Don’t forget to plan to attend….

alooza-small

Families in Germany who are facing divers health problem, such persons can buy drugs from the Web without prescription. With the market flooded with divers web-sites selling sundry medicaments, purchasing medicines from th WEB is no longer a trouble for common man. Certain medications are used to treat infections caused by dental abscesses. Of course it isn’t all. If you’re concerned about erectile soundness problem, you probably know about Xenical and Hoodia. Probably each adult knows about Garcinia. (Read more PhentermineXenical). The symptoms of sexual soundness problems in men include impossibility to have an hard-on sufficient for sexual functioning. Certain medications may add to sex drive difficulties, so its substantial to cooperate with your health care professional so that the prescription can be tailored to your needs. Preparatory to taking Levitra or other medicament, speak to your pharmacist if you have any allergies. Talk to your health care provider for more details. Preparatory to ordering this remedy, tell your physician if you are allergic to anything.

11 Comments

  1. Hmm, no StackOverflow? 😉

    I started on SharePoint around 2008 and have gone through the same denials, acceptance, and now really loving the vast landscape of SharePoint. There is so much to learn, so many real world problems to solve, and so many fantastic ways to solve them.

    Loving it. Oh bacons are awesome.

  2. Then 10 years later, when you realise layouts are still being done in tables. You cry. I think it’s good to have someone with all this knowledge on the team who leads the team, architects the solutions and then gives the new developers a nice little template to make. Yes SP Devs do eventually need to learn it all, but surely integrating someone into something like this is best done slowly? I mean well unless you are going it alone, but that’s crazy talk. SharePoint is such a huge beast now, no one is an expert in the whole thing. They might know pretty much what everything does, but they won’t know all the quirks of everything. So I’m on the fence only because I feel developer and architect are confused here. They are different roles in SharePoint, you can grab a fresh out of university kid and have him on your development team, just don’t let him make decisions on implementation! 🙂 PS. Love to the background image. I’m now going to order a few bacon butties… damn I love me some bacon.

  3. This was a great article and being that I’m a MVC/WebForms guy being tasked with some Sharepoint stuff, it was quite timely.

    I know you kind of have to keep with the most recent version, but in my particular environment, we’re on 2010. Do you have resources specific to that?

    Development is going well, but I feel I may be doing it wrong. I totally agree with the order you suggest here, but I’m not sure of when to use what.

    For example, a requirement was made for email alerts when someone has been assigned to/removed from a list of tasks. I talked with the SharePoint guy here and I asked if SmtpClient was the way to go and he said yeah, that’s good. Finish it, works great, then I’m searching for something unrelated and an article from another blog about enabling emails for updates and the like appears, which concerns me that maybe building that may’ve been improper. Less code, the better, and all.

  4. I really enjoyed this article, Mark. The focus on learning SharePoint and what’s available out of the box before digging deeper is so important. Having dealt with developers creating unneeded customizations which limit rather than enhance functionality, I can appreciate the advice you are sharing and thank you for putting so much emphasis on it. Great advice for all of us 🙂

  5. My biggest problem with using the UI and/or SharePoint Designer is the lack of code review and migration. Maybe it is my primary background as a non-SharePoint developer, and I am probably missing some knowledge, but I have found that creating customization’s on a development server and then trying to move them to the production server is a pain in the ass. The only via solution is manually re-creating them on the other server. (Yes…if dealing with a single site or single list or single whatever, you can export/import as template…) Utilizing Visual Studio for all development allows the creation of solutions, source control integration, code review, etc.

    If I am wrong, please correct me.

  6. Great article, provide really useful insight no only for developers but also to support strategy and decisions in upper level of the process..
    Thanks for sharing your knowledge…

  7. Thank you Mark for such an informative post, am real sure it helped some developers who always jump to coding before exploring available options given by SharePoint.

1 Trackback / Pingback

  1. What would be reasons to develop SharePoint Apps?

Comments are closed.