MSP Buzz: Programming for Beginners

We’ve asked a couple of our MSPs to answer some questions around how to get started in programming, including developing for Windows platforms, beginner web development, beginner cloud development, and more. They’ve even shared some of their personal stories and favorite resources to help you get started. And remember, for more information about the MSP Program see our website

Our MSPs answering questions are:

I want to build a Windows Phone app how do I get started?

DT: There are a numerous resources out there at your disposal. One of my personal favorites is Microsoft Virtual Academy (MVA). And all you need is a Microsoft account and you are good to go! MVA has a variety of video tutorials in a variety of categories including "For Beginners", "HTML5", and "Windows Phone App Development". These tutorials have video,transcripts and exercise files so you are completely immersed in the experience. And the best part is, you can watch them in parts! You do not have to give up your entire day to learn app development, you can pace yourself. I highly recommend checking out these tutorials to get a grasp on the concepts. But in order to become a really skilled app developer, you need to create an app. First off you need an idea, if you have an idea, that's great! But like most of us, you may not know where to start. In that case, just copy an idea - create your own version of flappy bird, or a YouTube player for your favorite YouTube channel (this is how I learned :). Once you have your idea, you need to give yourself deadlines - "By the end of the day today, I want to have this button doing this function". These little deadlines are key to learning a new technology. It forces you to do what you may not know - therefore forcing you to learn (kind of like chooling!)

TC: Personally, I'm a fan of MVA. They have a lot of great videos for both beginners and more advanced individuals looking to improve their developing skills and know-how. The Windows Dev Center also has a lot to offer in terms of tutorials and guides!

I want to learn more about programming on my free time, how do I get started?

DT: Programming is a skill that people are going to need to know in the future. I applaud you for taking some of your valuable free time to learn the art (science?) of programming! At first it can be very daunting - especially when you just peruse the Internet and see giant blocks of code that mean less than nothing to you. Where to begin - I recommend you checkout MVAs "For Beginners" section as wells Codecademy. Codecademy is one of my personal favorites, it provides a simple user interface for new users, and provides tutorials on some of the hosted languages used today! The best part is that you do not need to download anything! You do it all on your browser and they even keep track of your progress through particular course and give you achievements! Once you feel comfortable in a particular language, try challenging yourself a bit, and give yourself homework on a topic of the language that you do not understand. Having deadlines is a great way to increase productivity and to solidify what you learn. Just sitting at home and coding for 10 minutes a day might not do much for you if you do not have a goal in mind or a deadline to meet.

TC: This is a tough one because there are so many ways to get into programming, but I'm going to recommend the "Introduction to Programming with Python" course on MVA. After you have a basic grasp of what programming is, you can dig into tougher languages such as C# or C++.

I'm curious about developing for Azure, how do I get started?   

DT: For Azure development, I highly recommend checking out MVA. Being a Microsoft platform, you will not be able to find any better tutorial than you will at MVA! Their step by step tutorials complete with video and exercise files are the perfect way to learn Azure development.

TC: Right now, there's a free one-month trial that gives you $200 to spend on Azure. If you know you want to develop on a cloud platform, this is a fantastic opportunity to take advantage of. If you're unsure as to whether you actually want to develop a cloud service, the overview page on their website has a great list of various services that you can provide by developing on Azure.

I'm interested in the Internet of Things, how can I get started connecting devices?

DT: The Internet of Things (IoT) is become more of a hot topic every day! With the release of smart cars, watches, houses, and toasters, the possibilities for interconnecting random devices is endless. Maybe you want to program your shower to turn on as soon as you enter your bathroom – this is entirely possible (but how do you do it?). First off, you need some sort of computer to control whatever it is you want to control. I highly recommend checking out the Arduino or the RaspberryPi. These are two of the most well support mini computers that you can use to just about anything – both run on their own derivative of Linux but RaspberryPi and Microsoft announced that Windows 10 will be able to run on the newest version J. The best part of these computers is that they are cheap! Once you have your machine of choice, you will need to learn a little bit about networking and electrical engineering to configure it to a device. For that I direct you to the Internet – The Arduino site and RaspberryPi site have blogs about new things you can do with their products. You can peruse these sites to get inspiration or to mimic and idea. Once you comfortable, the possibilities are endless.

TC: I'd first look into what device you want to work with - if you're really eager to get something connected to the internet, I recommend the Spark Core. It has a more powerful processor than an Arduino and it has a wireless connection on its board, so you don't need to worry about purchasing separate adapters. Once you have a Spark Core, they have a great "Getting Started" page (to help you jump right into the action!)

How do I build a simple mobile app that is cross-platform?       

DT: For building a cross platform application, there are 5 really good tools that allow you to do this. These tools allow you to write your app in one language or two (Java, Objective-C/Swift, HTML/JavaScript, C#). Once you have created your app,the tool compiles and builds your code and creates different executables for each platform you want to release it on. Each tool is different in how they want the initial app to be developed and which platforms you can release on. I highly recommend you check you this link for all the pros and cons for the top 5 cross platform app development tools. Getting started developing cross-platform apps is no different from developing regular apps for a single platform, I recommend you checkout my answer to "How do I get started on Windows Phone app development". The process is more or less the same for most platforms - just syntactically different.

TC: Windows Universal apps. While these already exist in Windows 8.1, Windows 10 is going to make this process even better for developers. The Windows Dev Center and MVA both have in-depth walkthroughs and tutorials on the subject, but the idea behind it is this: You have a little bit of platform-specific code you write for two types of platforms (say, phone and tablet), and the rest of your program only has to be written once. This is a huge timesaver, as well as a great way to reach a larger audience.

I want to build a simple computer game, how do I get started?

DT: Building a computer game is something a lot of programmers really want to do (including me), and the issue with it is a lot of people want to start off by building games that rival triple A titles. And that is simply not feasible. In order to get start, you need to start small - with a clone of Flappy Bird or Doodle Jump). There are a number of friendly libraries that help ease the user into game programming. One of my personal favorites is PyGame - a game programming library for Python. Python is a very user friend language - no nasty syntax or typing. PyGame gives the programmer complete control over everything - the difficulty lies in learning in syntax. Now if you want to step away from programming and want a simple user interface, I would recommend the Construct 2 game engine - no coding is required. There are plenty of tutorials to get you familiar with the layout and the functionality of the engine. And once you are comfortable, the possibilities are endless. The best part is, when you are done with your game, you can export it in a form that would allow you to upload it to the Windows App Store! If you want a little more advanced (maybe 3D) gaming engine - you can checkout Unity. I don't have too much familiarity with Unity3d but I do know that is very robust and there are tons of wonderful tutorials out there on the Internet.

TC: There are a lot of great tools out there for game development. For those with little or no coding experience, I recommend Construct 2 - it's a great suite for making 2D games that can help you get a prototype up and running in just a few hours. If you're a little more confident in your ability to write code, MonoGame is a fantastic successor to Microsoft's XNA framework!

Apply to be an MSP by July 15th, 2015. For more information about the MSP Program see our website.