If you are a .NET developer, this blog post is my challenge to you. We live in a time where we can do very powerful things with very little money. However, this does require an investment in time.
What are some things you can do?
- Make websites: ASP.NET and MVC combined with WebApi, jQuery and other tools make for a powerful platform to create websites, web applications, and web API’s.
- Make Windows 8 Store Apps: you can do this for fun, or even make some money at it.
- Make Windows Phone 8 Apps: Windows Phones still don’t have a lot of market share. However, they are really great phones, and a lot of fun to program against. The problem with Windows Phone isn’t technical and it’s certainly not usability – it’s just not marketed correctly. Don’t let that stop you though, you can easily write fun and powerful programs for this platform.
- Host “computing” apps in Azure: Azure is a pretty cool computing platform. You can host things like databases and websites there, but you can also run the equivalent of Windows Services there too (the Windows equivalent to a Unix daemon, for those that are familiar). So, you can host long-running process, Windows Workflows, etc also – or maybe in addition to the other types of apps above.
Where do you start? Well, I say start with what interests or motivates you. If you are up for getting a new phone – get a Windows Phone 8 instead, and start doing development for it. If you are up for a laptop upgrade, get a Windows 8 laptop. Use that to host your development environment and do Windows 8 or web development.
Regardless of the platform, there are some key pieces that are needed…
As a developer, it’s important to know what tools you have at your disposal to solve a problem. In fact, the more tools you are proficient with, the more efficient you’ll be. How do you learn about new technologies and keep up with trends?
- Get Certified: one way to get current is to get an MCTS or MCPD certification. During the course of your studying, you will likely pick up lots of little tidbits of knowledge. If you can’t or won’t do this, at least consider checking out the 70-536 book, as this has many .NET fundamentals like streaming, threading, encoding, etc. Certification doesn’t mean “you know everything”, it’s simply a way to make sure you’ve covered all the major areas of a technology and know them at least well-enough to pass an exam!
- PluralSight: find a way to get a subscription to PluralSight. For an individual, it’s $299/year, but see if you can get your company to pay for it? At my company, they bought a pool of 50 licenses, and developers can “borrow” that license for a few months at a time. PluralSight has no-frills videos that go into a deep-dive on every major topic. The videos are made by many of the industry leaders. If you need to get up to speed quickly on any .NET topic, this is a must-have resource.
- Bob Martin/Robert C. Martin/@unclebobmartin: known him, learn to love him. He is one of the best thought-leaders on software craftmanship around. Either read Clean Code or watch the videos for $12/each. Either way, really get to know this stuff, it will (should?) change the way you approach software development.
I stay current using two methods: blogs and twitter. For Twitter, I simply follow technology leaders, publications, book authors, etc. In fact, companies often publish twitter-only coupon codes on really great deals. So, twitter isn’t just about mindless celebrity updates – it’s a powerful tool for the modern-day technologist!
Now, for blogs – this is what I do… I use http://reader.google.com to aggregate all the RSS feeds that I want to read. When I find a blog that I want to follow, I log into Google reader and add that subscription. The reason why I do this is that there are a zillion “Google reader” apps for: Windows 8, Windows Phone, iPad, Android, etc. What this means is that on my Surface tablet, I can use “FeedReader”. On launch, it will sync with Google reader and see what unread posts I have to read. I go through them, tweet the interesting ones as I go, and then mark the rest as read. Now, later in the day, when I use my Windows Phone Google reader app, it will synced too – and will only show me more recent things that I haven’t read. So, by using Google Reader as a centralized, aggregator, it allows me to keep all of my feeds in one place – and an indicator of what has been read and what hasn’t, so that all my devices are in-sync.
Set up a Pseudo-Company:
If you are doing development outside of work, I find it helps to have a “company” or organization to help organize my efforts and my code. In my case, I’ve been using SederSoftware for quite a while. That means that all of my code uses this namespace – like: SederSoftware.Framework, SederSoftware.IpCamViewer, etc. While I’m at it though, why not take that to the next level? Why not create a web site? If I did that, then if I do publish things on the WIndows 8 or Windows Phone 8 app stores, then I could have an official site for those apps.
Wait a second, also, if I have a website – I can get BizSpark for free, BizSpark gives me MSDN Ultimate for free, and enough Azure credit to host a single website for free. So, if I did invest in setting up a website, I could ultimately host it for free AND get MSDN. It’s a win-win on all fronts. It costs me minimal money (under $80 total), and time.
So, getting up a pseudo-company has many positive aspects from simple organization, to allowing you to get Azure and MSDN for free, for your professional development efforts! How do you start this process?
- Finding a name: this is perhaps the hardest part of this effort. On the Internet, virtually every combination of words is already used for domain names. Because of this, you will see many business startups just use unique combinations of words – like circlesquaresoftware.com (which is available as of right now, so feel free to take that). So the point is, take some time on the WhoIs page of a domain registrar (like Network Solutions or GoDaddy) and try a bunch of domain names that you like until you find one that is free. I would always recommend getting a domain via a registrar because it gives you the freedom to move and change webhosts at-will. When you buy a domain via a webhost, that can (and often does) turn into a dramatic mess. They will drag their feet for months all while they try to convince you to stay – all while holding your domain hostage. Pay the $35/year from the registrars and “own” your own domain!
- Set up a web host: If you are going to go for BizSpark (which you should), then you only need a web host for a couple of months. I have had good experience with www.discountasp.net – they have plans for $30 for 3 months. Create an account, then go back to your registrar and have your DNS to point to this web host.
- Create a website: you don’t need to be a graphics genius to create a basic, professional looking site. In fact, I highly-recommend Adobe Photoshop Elements. You hear people talking about things being “Photoshopped” – and the full version of Photoshop is expensive and complicated. However, (as of this writing), Photoshop Elements 11 is $69 on Amazon. This is very powerful tool, yet very simple and will do more than what you need to make a professional-looking website. So, between Photoshop and using the free Visual Studio Web Express, you can create and publish your site.
- Register for BizSpark: go to http://www.microsoft.com/bizspark/ and start. Fill it out as the founder/proprietor of a startup (use your company name and web address). Note that I think your About Us needs to specifically say that you are an independent software vendor (ISV) working in Microsoft technologies and your Contact Us page needs to have a phone number and address (or PO box). Once they verify your information and your website, you get an e-mail with your MSDN subscription (and Azure) information.
- Move your website to Azure: go to this page to activate the Azure part of your subscription. You can then go the Azure portal to create your site: https://manage.windowsazure.com/ – now, re-publish your website to Azure, and go back to your domain registrar and re-point your DNS entries to the new Azure ones (the screens on the Azure side tell you what to do for this).
One of the significant features of MSDN is that it gives you access to virtually all of the software that Microsoft produces – including server-side operating systems and server software. For example, you get licenses for Windows Server 2012 and SQL Server.
It may not be readily apparent why this is useful, but let me explain. First and foremost, as a developer, it only helps you to be more familiar with infrastructure. It only helps if you are in a meeting with infrastructure people and you can speak intelligently on the topic, because you’ve actually done it before! You can say “Yes, I’ve actually installed SQL Server 2012 on Windows Server 2012 before”, for example. So, from a professional development perspective, this is great for your resume and makes you a more educated, well-rounded developer.
On the functional side, MSDN really puts you in the drivers seat. Windows 8 now comes with Hyper-V, a virtualization product that let’s you “host” other operating systems, in a window, on your Windows 8 machine. These can be other MS operating systems, Linux, Unix, etc. That means that you can have a test Vista machine, a test Windows 7 workstation, a dev and qa database and web environment – all that live in virtual machines, hosted on your laptop! Here’s an example:
Here is a picture of me running an instance of Windows Server 2012 on my Windows 8 laptop. With MSDN, you have licenses for all of this and can do all of this for free – and legally! Here are some details on this idea:
Getting Started with Hyper-V and Windows 8:
Win8/Hyper-V: “What works and what doesn’t” edition (which operating systems will work in Hyper-V)
So that is my challenge to you. Have a plan for getting educated, staying current, creating a “company”, and then using that to get onto Azure and leverage MSDN. What do you think?!