Learn SharePoint Development in 10 minutes

http://pocketoption.uk Heh, that title is a complete lie :) No, you can’t become a SharePoint dev in 10 minutes, there’s just no way, but if you’re a competent .NET developer you can pretty much become an expert in the space of a week. I did just that, for a gig I got at the end of 2009 — I wasn’t taken on to do SharePoint, I was there to write XML processing code, but it became kind of a critical requirement that we had to get the SharePoint system written asap. I’d held out as long as I could, but I caved. If you need or want to learn SharePoint, here’s my advice to you.

When I learned SharePoint I did it entirely by poking around in other people’s code (which was ultimately broken and we were going to have to fix) and seeing what was going on. I also had a couple of experienced SharePoint developers on hand who I could ask questions of and clear things up with. That helped massively, and I suggest that if you don’t have access to a real person who can fill this role, you find a forum with helpful experts.

Really, these are the various blocks I had to get over. I learned on Office ShrePoint Server 2007. SharePoint 2010 really smooths a lot of the pain away, so unless you really need those 2007 skills, I’d strongly recommend going straight to 2010:

1. Installing Office SharePoint Server. Thankfully SP2010 can be installed on Windows 7 64-bit, which makes life much easier. There’s an MSDN article on this very thing.

www.pocketoption.uk 2. Configuring SharePoint and creating a site. SP2010 creates a default site now – it really is much quicker to get started. SP2007 was more involved. You still need to learn how to create and configure sites though, so spend some time learning your way around the Site Settings screen and also Central Administration.

3. Learning about lists, document libraries, pages etc. This is standard SharePoint stuff – you need to learn where you create lists, the types of columns, how to create look-up columns and so on.

4. Creating web parts. To start with, I just created really basic web parts using the old ASP.NET techniques I already knew (this.Controls.Add() etc) in the code-behind. SP2010 supports visual web parts, which are much easier to work with. You need VS2010 at this point (I suspect the Express edition probably won’t work for this) and the SharePoint 2010 SDK.

5. Deploying web parts. Again, this used to be hard (until you discovered a free add-in called WspBuilder), but now the SP2010 SDK and VS2010 take care of it pretty well. You just right click the solution and hit deploy. At that point, you can edit a page and add the web part to any of the web part regions.

6. Writing code that used the SP Object Model. This is where you need to go to really make SharePoint work. There’s a whole set of classes that you can use to programmatically do anything – access and update lists, create stuff, everything that you can do in the front end. I don’t have any good resources on hand right now, but I’m sure there are plenty. This is where you’ll really get the benefit of seeing other people’s code and talking to people who have experience.

7. It used to be that querying lists needed you to use an odd thing called a Camel query (might be called Caml query, I forget). You still need to know about that, but the Linq provider should make it mostly obsolete from 2010 onwards.

8. SharePoint Designer is worth knowing and is a free download – you can use it to modify templates etc. I ended up using it quite a bit for some stuff.

9. Once you get good at that stuff, there are workflows, timer jobs, features, templates, security models and a few other really important bits, but by the time you get to this point you’ll be really comfortable working in SharePoint and that stuff will be quite easy to pick up as and when you need it.

http://www.pocketoption.uk I’d use that list as a rough guide. SharePoint is an odd beast, but it’s just another framework/programming environment like any other. Unfortunately, the on-line community for MS stuff is a bit lacking (especially compared to the young upstart communities like Rails) so you’ll search for something and just come up with loads of woolly blog posts by MVPs that don’t really help anyone.

The most stupid idea I heard today

This is a really dumb idea. It’s from some corporate-monkey exec at Microsoft – Scott Charney, the “VP of Trustworthy Computing”, whatever that means. Here’s his blog post on Technet. It’s almost unreadable, but give it a go. I haven’t tried to read the paper that Microsoft publish to go with this post (and his speech).

OK, so why am I using such angry language? I don’t often call people’s ideas outright stupid, and I definitely don’t usually call people I don’t know ‘corporate monkeys’, but there you go. I feel quite strongly about this.

Microsoft are suggesting that ISPs should require people to have a certificate to prove that their computer is vaccinated before they’re allowed to use the internet..

Look, Microsoft, Symantec, Norton et al have been ‘protecting’ us for years, at our great expense… YET IT HASN’T WORKED. So, what this fool seems to be suggesting is this: we allow these same companies to become the gatekeepers of our internet access. No thanks.

And what about Linux, Mac OS X, iOS, Android, etc. If this ever got any traction I can’t help but think that maybe, at the back of MS’ plan is the idea that they can make non-Microsoft OSes that little bit les accessible to the general population — after all, I can’t certify that my Mac runs Norton AV because it doesn’t.

I don’t know. I guess I’m over-reacting — people publish wacky research all the time, it doesn’t mean it’ll happen, and crazy ideas often spark interesting discussions. It’s Microsoft though, and they have a certain amount of history, which I guess raises my hackles.

Addendum: Until now I didn’t actually know what hackles were, but I just looked it up — it’s the hair on the back of an animal’s neck that stand up when the animal is angry or afraid.

The bad news about your amazing product: you still need to do marketing

Us techies don’t really understand marketing. Ask any young entrepreneurial techy how they’re going to gets customers and you’ll usually get the same answer: “Our product is amazing! We’ll get tons of word-of-mouth referrals, it’ll lead to masses of organic search, loads of free press, we’ll be all over Twitter, it’ll go viral!”.

I hate to break it to you, but having a great product isn’t enough. If ‘great product’ is your marketing strategy, you’re going to fail. You either need to get down to basics yourself, or get a partner on-board to take care of marketing. Here are the areas you need to think about.

Brand: People need to know about you. Ideally they’ll like and trust you. How do you get your message out?

Message: People need to know about your product and what it can do for them. They need to be able to place it in their life and justify its existence before they can commit to becoming a customer.

Value: You need to be adding value. Having a cool thing isn’t enough if it doesn’t add value. You need to be improving somebody’s world in some small but significant way.

You need to take these three things and hammer them repeatedly. You need to keep putting your brand and your message out, over and over again, and it needs to be consistent (assuming it works — don’t worry about being consistent if you need to change a bad message).

So what are the best ways to get your message out without spending a ton of cash on advertising? You need to win people over. In the tech space, bloggers are great for this. Study what Tim Ferris did to promote his 4 hour work week book. Do the same. Make contact with bloggers, ask them if they’ll review you in return for a free account, free product or whatever. Don’t try and buy favorable reviews — you need them to be honest and true. You can do SEO, which’ll help, but the most important form of SEO is getting people to link to you and the only way to do that is to make friends with people who are in the right space. Don’t buy links, ever, because Google could well blacklist you form their search results. Get in touch with people who write for magazines that cover your area — their contact details are usually in the magazine. Introduce yourself as wanting their advice; ask them what they need from you to review a product in their magazine, how you’d get them interested, stuff like that. Most people are very happy to share their advice – it makes them feel quite special, because it demonstrates their expertise.

The list goes on, but you’re probably noticing a theme — you need to talk to people, befriend people and work at this constantly. Marketing is not easy, but nor is it voodoo. You can do it, and you need to do it if you are to succeed. If you can’t do it, get someone who can. I think this is probably the most important lesson a new entrepreneur needs to learn if they’re going to make it.

Just a word of advice — having a Twitter account that you use to repost links is not marketing. Unless you’ve got 1000s of followers who hang on your every word, your tweets will be lost in the ether. Twitter is a great forum for supporting and keeping in touch with existing customers, but not so great for acquiring new ones.

If you’ve got a story related to this, please do get in touch, I’d love to hear it. I’m really interested in finding out how other tech people got over the marketing hump, because we naturally shy away from that aspect of business.

A Techy Tip

I specifically don’t want this blog to be a place for sharing code snippets or other techy tips (though I do want to recommend useful products/services, but that’s a bit different). However, I’m throwing out this one tip because this is something that drives me mad, and I’m likely to forget how to fix it next time I come across it.

Are you using a Mac with Bootcamp to do Windows development? Does your keyboard layout keep going wrong in Visual Studio? For example, does ” randomly become @? If so, the answer is that your hitting Left Alt + Shift and this is a global Windows hotkey that switches between installed keyboard layouts.

To stop it, open the language bar, drop down the little menu and go in to Settings. In the Advanced Key Settings tab you can see ‘Between input languages’ is Alt + Shift, and you’re hitting those keys in Visual Studio. Click Change Key Sequence and change them to None.

I can’t tell you how much that annoyed me until a Microsoft product support guy worked out what was going on.

My Personal Goals

I thought I’d share my personal goals here. My thinking is this: the more I talk about these goals, the more I’ll push to make them happen. Here’s what I’m currently shooting for:

1. More time with my family

I adore my children, and I love spending time with them. It’s so sad that we spend so much time working exactly when we would benefit most from not working so much (when our children are young). Then, once the children are all grown up and living their own lives, we retire. That’s ass-backwards, surely. That said, I’m lucky that my wife doesn’t have to work, but I’d like to free up more of my own time too.

Goal: to spend one extra day per week with my children until they turn 5, then to not work during school holidays.

2. To build a company that I can be proud of

I have a company, Arctus Limited, but right now all the money we get comes from consulting. I need to take this company (or another one that doesn’t yet exist, I’m not fussy) and turn it in to a real, sustainable business that solves problems for lots of people all at the same time. This is what I’ll mostly be blogging about here – my experiences as I try and find and build successful products.

Goal: to develop a product that can replace the income we get from consulting, and that people like using

3. Financial security

2 feeds in to 3 and 3 feeds in to 1, so this is really a by-product goal, but it’s important enough to state it on its own: I don’t want to worry about money. It’s that simple. I need the space and freedom to not worry about paying the mortgage or school fees or whatever. This alone would have such a huge positive impact on my life that it’s worth shooting for in isolation. Don’t get me wrong: I don’t want fancy cars, big TVs or any of that. We live a pretty basic lifestyle, and I don’t want that to change.

Goal: I want to make enough money that I don’t need to work for anybody else, if I don’t want to.

They’re my personal goals right now. They’re pretty small. Definitely achievable. Once I get there I’ll set new goals, and don’t get me wrong — I do have bigger, vaguer goals too. For example, I want to change the world. But, as I grow older, I realize that only by setting my own personal goals will I even get a slim chance of doing that. We’ll see how it pans out.

Why I like Apple’s locked-down approach to the app store

It is the fashionable thing to moan about if you’re a developer: Apple’s restrictive policies in the app store. Even non-iPhone developers like to moan about it. In fact, they especially like to moan about it. But, while Apple do sometimes get it wrong and do deserve some stick in those instances (pulling Google Voice, for example), it’s actually a pretty good thing all in all.

Today there’s an article on ars highlighting some research that found 15 out of 30 tested free apps in the Android app store were sending data to servers on the Internet (usually for advertising). The data in some instances included GPS and phone numbers. That’s not acceptable.

Google’s response is that you shouldn’t install apps you don’t trust. That’s either naive or idiotic – how can you trust any app that you didn’t write yourself? The main problem is that google let apps request a list of permissions at install time. Most users, especially non-technical users will always say yes to those kinds of requests.

The reason the Apple method works is because Apple take responsibility for the apps in their store. They test the apps, they run diagnostics to try and weed out any dubious behaviour and the iPhone is purposefully locked done so that some information is simply out of bounds to the apps. Some people equate all of this with censorship and limits on personal freedom, and that’s a valid view. The thing is, I’m actually really happy to trade that bit of freedom for the service Apple provide. I like knowing that I can try an app and it won’t be sniffing around in my files or telling some random ad company exactly where I am.

Ars article: http://arstechnica.com/security/news/2010/09/some-android-apps-found-to-covertly-send-gps-data-to-advertisers.ars

P.s. Apple have eased their restrictions lately, and google voice was reinstated just a couple of days ago. That’s great news.

Are phone games less creative than console games?

A few weeks back I got in to a really interesting (albeit stunted at 140 characters) debate with somebody on Twitter about the merits of casual games, like Angry Birds, that are so popular on phones right now. It got started when I replied to what I think was meant to be a throw away comment:

When games like Tetris makes the list of the top 25 paid apps, something is wrong. #noinnovation

I asked the author why classic computer games don’t deserve their place in the charts if they’re still as enjoyable as ever, especially to a new generation of people who typically didn’t play computer games before (in particular middle aged professional types). The debate went back and forth, but ultimately, his feelings were that small budget independent game makers can’t compete with the mega-blockbuster titles like Halo and Gears of War. They can’t be as creative because they don’t have the resources.

I take his point. It turns out he’s a serious gamer and he wants the very biggest and best experience gaming has to offer, and is willing to invest the time and money to get it, which is fine. I think he under-estimates the sheer scale of the emerging casual gaming market, but that’s an aside to my point that I’m slowly getting to.

I believe that measuring innovation in terms of graphical realism is not where casual gaming is going and it definitely doesn’t need to to be innovative. I also don’t think you need a giant team to be creative. In fact, I believe the opposite is true — if you throw a big enough team and enough money at an interesting idea you will more than likely turn it in to something very conservative and unimaginative. I don’t play computer games anymore, but I did when I was a teenager back in the 90′s. Back then there were several teams that made magnificent games with a staff of less than 10. Geoff Crammond and F1GP, for example. Sid Meier and Civilization. Sensible Software wrote several amazing games over the course of 5 years, including Mega-lo-Mania (which would port perfectly to the current generation phones/tablets).

I hope we’re going to see a rise in these small independents who create imaginative and interesting games on small budgets. It seems so, given the companies behind Doodle Jump and Angry Birds fit that mould. It’ll be interesting to see if they can build on their early success. I would love to set up a team doing just this, but it’s so far from my area of expertise that I don’t suppose I have a chance of actually doing it — apart from anything else, I don’t think my family would appreciate such an wild change of direction right now. Besides, I’ve already got plenty of other markets to conquer…

News Blackout

I saw this article the other day: Fidel Castro, Internet junkie. Castro reads between two and three hundred online news articles a day. He really is a junkie.

It reminded me that I used to be a bit of a news junkie. I used to read most of the non-tabloid British papers daily, some financial papers, The Economist, a few science journals, many technical websites and more besides. Then I stopped.

I needed more space in my life, and I hadn’t realized just how much of my useful time I was devoting to absorbing news that, in truth, had no real impact on my life whatsoever. I didn’t need to know this stuff.

At first I cut out the sensational stories — anything to do with murder, rape or child abuse. Those are very serious things indeed, and do need reporting, but I don’t need to know about them. If any of these things affect me personally some day, I’m sure I’ll know about it without needing to read it in the news. I think for these stories having young children was the catalyst — especially with stories that involve children. I found myself feeling terribly sad after reading certain news stories. I had to remind myself that the world isn’t a bad place on the whole, and that these tragedies affect a tiny minority of people. So I stopped reading the really bad news.

About this time I read Tim Ferris’ 4 Hour Work Week book. It’s a good book, but one of his tips for freeing up more of your time to do more interesting things really resonated — he suggested a total news blackout. I thought I’d give it a go. I removed Radio 4 and Radio 5 from the programmed radio stations in my car and I stopped reading news – even sport news. It was great, and only once did someone find me out for not know what was going on in the world. I explained the news black out and they explained the news item. I can’t remember what that was about now.

Unfortunately, things slipped a bit during the UK general election. Then I did want to know what was going on, so I read a couple of papers every day. I got back in to the habit, and since then I’ve read the headlines on the Guardian website most days.

It’s worth pointing out that I do still read some tech journals. It’s OK to read stuff that I really do want to read, I just need to make sure I put a sensible cap on it and be honest about whether my time is being used wisely.

Positive Programmers Do Better

OK, so I don’t have any real evidence to back up what I’m about to say, but this is a pattern I’ve witnessed time and again throughout my career and I think it is important: programmers that tend to complain about stuff don’t do as well as programmers who don’t. That’s a bit of a vague statement, so let me explain.

Techies like to complain. It’s in their nature, I suspect. They complain about their tools, about the requirements, the designs, the specs, about the customers, about the sales team, about their workstations, about Microsoft, or Apple. They complain about everything in fact. This is equally true of all techies, not just programmers. I haven’t watched it myself, but I would imagine that much of the I.T. Crowd’s humor is based on this fact.

But there are always those who don’t complain. These people suffer the same problems, face the same challenges and work with the same tools and the same colleagues. The difference is, when they’re asked to do something that sounds difficult or vague, they don’t throw their hands up in frustration or make some derisory comment about the stupidity of the sales team — they try and understand the problem and find a solution that will work. These people don’t curse at Internet Explorer because it breaks their application’s layout, they realize that it’s part of their job to make it compatible and they get on with the job of making it work.

What I’ve seen, across hundreds of projects in dozens of companies, is that the more complaining programmers (and they make up the majority) don’t tend to do as well as those who tend to be positive. By not do as well I mean they don’t get responsibility for delivering the great software, they don’t get promoted to the senior positions, and they don’t get the big pay rises.

It seems to me that if you want to really want to accelerate your career as a programmer, the first thing to do is look at your attitude, not your technical skills. Do you complain? If so, try and check yourself. Try to think what the positive response would be in a negative situation. Don’t feel bad if you slip occasionally. We’re all human. I complain a lot. But do try and recognize when you do it. I think it’ll work for the best in the long run.