My Microsoft Internship Experience

It is always a weird change going back from a working environment daily to actually going in to university daily. Mostly this is because the traffic increases exponentially as terms at all the universities begin at more or less the same time, but despite the traffic annoyances I am still getting back into my old routines from before I did work at Microsoft.

So, first of I will step back to before the internship. Last year had its ups and downs, as every year before has never failed to deliver, but last year particularly the ups were particularly amazing. Throughout the year I had been driving myself to try and actually finish a game that I have designed called Shuri, which will eventually be released for WP7 if I get around to it, but by the start of October I hadn't made much progress (in 4 months or so of failed attempts at getting into it), mostly due the the Windows Phone Emulator not running on my PC. At that time there wasn't any realistic drive in me to build a windows version of the game and then port it, specifically because translating the controls would be messy. Through being an Microsoft Student Partner I ended up receiving a loan device (an LG Quantum) to show the device to other students, and for me this was an opportunity to write a game.

I started off experimenting with developing and deploying to the device, and shortly afterwards received word of the Nokia promotion that would give out 2 Kings Of Leon golden circle tickets to one of the apps released before the concert, this became a good motivator (despite not really listening to Kings of Leon usually). Two days and 1200 lines of code later I had made my first version of Galactic Jump (originally called "Worm Holes", I changed it after finding that there was already a game called "Worm Hole" on the marketplace), and within the week it was published, my first submission the the WP7 marketplace, and the first game I completed developing in quite a while. This game was not only my first step into my internship at Microsoft, it also won me the tickets (yay!).

So, skipping the boring part of the process involved in getting onto the list of candidates for the internship positions, and the humorous story of when the contracts were signed, day 1 came. First thing that happened when the other two interns and I arrived at the office we were taken into one of the meeting rooms, and the South African DPE team who we would be working with (and for) let us know why we were selected, what we would be doing as interns, and the targets they had for us as interns. Simply put, we were selected as interns for the work we had previously done (my game, they each had an app on marketplace), what we would be doing is writing apps (and games), and we had to try and release 1 to 2 apps a week. There was more to it, but that is the short and sweet, which I would prefer to stick to.

For the first month (being December) we only had roughly 3 and a half weeks with which to work with, of which 3 days were taken up by ImagineCup (I came second in my category and won a Samsung Omnia 7), and one day was taken up by a Christmas party that we were surprised to hear we were allowed to attend. Despite the shortened office time, we managed to get 10 or so apps out between the 3 of us in December, learning lots of new things along the way. Also, in the first week we were meant to make "frameworks" (basically apps that could be reskinned, and be given new content easily) and get someone to develop and submit an app to marketplace. The frameworks took longer than expected, and we only managed to do 2 or 3 submissions out of the frameworks between the 3 of us (that I know of). We also each had people supposedly developing their own apps, but as far as I know none of us succeeded in getting someone to complete that goal. So that was a bit of a flop from that perspective.

After the end of year compulsory week off, we were fresh, had lots we had learnt from December, and Dave decided to make our app development competitive. Whether it was due to that or not, all three of us got it down to making roughly 1 app per day. Unfortunately though, this got slightly slower as time went by, but it was still impressive to me none-the-less. Simply put, January we were more productive, and we did more than 30 apps between the 3 of us, and we each got 2 or 3 more done through friends. Not particularly bad.

So, now for what for some might be the more interesting part:

What did I learn?

  • Drag and drop solutions suck. You know the services I am talking about, they are quite popular in some circles I hear. Simply put, the less actual dev work you have to do, the more headaches you will have debugging, submitting, and maintaining the code. For some this is a more prominent problem than with others obviously, but with some "better than" others, the "better" ones are still a headache.
  • Simple sells. Content sells. The principle works like this: If your app/game doesnt need feature X to be a full game, or it complicated how you play the game, leave it out. Chances are your users wont understand it even if they dont have to do anything at all for it to work. If you make something that requries content, you HAVE TO have a decent amount of content. If you have an amazing game that has 1 amazingly fun level, people wont play the same level over and over. It is unfortunate, but it is important to keep in mind.
  • There is a better way to do X. This is something that I hope to take as one of my personal goals, if I find a better way to do something, I will go back and fix up the places where I did it in a worse way just because it makes mey code so much more maintainable. A simple example is moving from plain XML handling to using LINQ to XML for getting data from my XML files, its simply better.
  • There is no perfect model. I am still experimenting with monetisation models on the platform, and my final conclusion is that I should stick to a single model for trying to earn money from my apps and games and get it working rather than trying every possible combination out there. Ultimately though you should pick the model that suits your app best. If your game is fun to the elite few that can play it will, there are people willing to pay for it, if you are getting tons of downloads and enough users daily, adverts will work best. You get the picture. I personally like things being free and advert supported, though I will be releasing games you will have to buy to play the complete game of some time in the near future.
  • Learn from other people on the same platform. Simply put since starting my internship I have been reading the topics on the forum where people ask questions I want to know the answer to as well, I've been reading the blogs of people that have successfully made decent amounts of cash from their apps and games, and I have been reading up on how other people achieved things similar to what I've done. Its a great way to keep focussed on code without burning out, and you can always learn new things. Win win situation.
  • This is a get rich quick system. I lied. It isn't, and I'm tired of people expecting it to be, from the start I have aimed to make some pocket money off my apps and games, and so far that could be realised soon, but regardless of what you make and release you shouldn't be expecting to become an overnight millionaire on the WP7 (or any other) platform. Put some effort into what happens before and after releasing marketing wise, it helps.
  • Realistic goals? Take off 25%! Planning an app or game? Cut off 25% of what you want to put into it. Only leave in the essentials. If the app wasn't successful with just its main purpose I just saved you 25% of your dev time that you can put into something else that will do well. Not every app or game will have lots of downloads, and not every tacky flashy feature will make a difference. Try to weed out the things that the end user doesn't actually care about in the app you are making.
  • Have fun. This is what makes all of it worth doing.

Lastly, I would like to apologise if you feel I have wasted your time after you have read this, but this summarises what working at Microsoft taught me, and without this becoming a talk about actual tech I learnt about it would be difficult to say anything more substantial. I hope that at least I can point out that anyone can do what I did, and that you just have to concentrate on your goals.