Let’s start with the title. Unless you’ve been living in a cave you’ve seen the Matrix series of movies. As Morpheus says to Neo:
You take the blue pill—the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill—you stay in Wonderland, and I show you how deep the rabbit hole goes.
The red pill takes you to the real world – that’s what this series is about: Going down the Xamarin rabbit hole and making cross platform apps for the real world.
What this series is NOT…
This is not an introduction to coding or intro to C#/WPF/XAML/MVVM. We aren’t going to walk through console apps for a year, then WinForms for another year, then SQL for 6 months. This is not a college course where the goal is to stretch things out as long as possible in order to charge as much as possible for course credits. There are lots of resources for that approach. I’m not going to waste my time or yours trying to duplicate what so many have already done and done well.
It is not about ‘How to use Visual Studio’ or ‘How to use Xamarin Studio’. Everything we do in Visual Studio on Windows you can do in Xamarin Visual Studio on Macintosh. The screen might be slightly different but you’re an experienced developer and can figure out that “Options” on Windows is “Preferences” on Mac and so on. UPDATE Nov2016. Microsoft announced Visual Studio for Macintosh and made it official that Xamarin Studio would be going away. If you’ve already been using Xamarin Studio you probably want to start transitioning to Visual Studio.
What this series IS…
This series is going to take your existing development experience and help you transition it to a new space: The creation of cross-platform mobile apps, using Visual Studio and the Xamarin eco-system. If you’re like me you’re past all the ‘intro’ books and spend your time actually *doing*… Writing code… Making applications… Developing for a living… And now you want to move forward, out of your comfort zone and out of the legacy world you’ve been in; and into the future of mobile apps.
You wouldn’t be here if you didn’t already have some idea of what Xamarin is and the potential it offers you, but let’s hit the key points really quick to make sure you’re in the right place.
Xamarin is a company that pioneered a cool eco-system of support for C# and XAML that lets developers use a single code base to create applications that can run on Android, iOS, Windows UWP and Windows Phone. Let me say that again because it’s pretty amazing. Using just C# and XAML you can create a program that will run on your iPhone, Windows desktop, Mac desktop, Windows Surface tablet, iPad, Android phone or tablet… Even the new Gen4 AppleTV or AppleWatch… Without having to learn Swift, Cocoa and Java… Without having to master all the minutia of all these platforms… Without having to re-code for each one… Without having to make 20 different specific UI layouts… If that’s not what you’re looking for then you’re in the wrong place.
UPDATE: As of the Connect() 2016 conference you can add Tizen as a Xamarin friendly target OS, because Samsung has jumped on board as well.
While Xamarin-based applications can be built from a Macintosh-centric environment that’s not what I’m going to do. This series is Windows-centric using Visual Studio as the IDE. If you’re a Mac developer, there is still plenty here for you. I am not a Mac hater. I love my Macs and have had everything from a MacClassic running OS 6, to my own Xserve and XRAID, Quad Tower, MacBookPro… iPhone gen 1-7plus, iPad, AppleTV, AppleWatch… But I like putting food on the table and developing for Windows gave me more job opportunities: It’s that simple. And now that I can use Windows to develop across multiple platforms it’s not an issue. So Mac users, don’t run away. Remember this is about embracing all the platforms. At the Evolve 2016 conference 90% of the attendees were on Mac’s virtualizing Windows so it can be done.
There is another more practical reason for this being a Windows-centric series. If you develop on a Mac you still need a Windows environment to make the Windows projects in… If you develop on Windows you still need a Mac to be the build server for your iOS project. But with the latest improvements to Xamarin your Mac can run headless. It’s just a build server. It can be a little Mac Mini sitting on the side of your desk taking up next to no space. It can even be a hosted/shared cloud-based Macintosh service you subscribe to without having to buy a Mac. Visual Studio accesses it remotely and shows you most everything you need from the one Windows environment. So in one place you can do Droid, iOS, Windows. That’s just dead-nuts common sense easy from my perspective.
The third reason for suggesting you take the Visual Studio route is simple: Microsoft owns Xamarin, as of 2016. Before that Xamarin was its own company but it was bought by Microsoft. Microsoft created the XAML markup language. They also created C#. Well… Hmm… Who would have the best tools for dealing with two Microsoft languages built around using Microsoft’s .NET framework? Plus if you were Microsoft and you bought a company making its own IDE would you put as much resources into keeping it powerful, or would you put the money into the eco-system and tell people to use the IDE that you’ve been developing for decades that is part of your Enterprise-grade development infrastructure and major part of your revenue model? Update: As of the Connect() 2016 conference they made this official. Seems I predicted well.
Once we get passed all this introduction non-sense we’re going to move with a purpose in life. This series is about making cross-platform apps. This series is about actually getting your skills up to date with 21st century needs of employers and expectations of today’s users. I might even lose you here and there on some points because of the pace and the assumption that you’ve been in the industry for a while. Since this is the real world… Google it! If I lose you because of a casual reference to ‘singleton pattern’ don’t sit there like a lump being lost: Use the resources at your finger-tips and find an article or tutorial that covers that one item in more detail-BEFORE you move on. Do not move forward when you are lost thinking you will pick it up later or that it will be covered again.
Who am I?
That is a totally legitimate question. One you should ask of everyone trying to teach you including university professors. The education you gain is only as good as the person teaching it.
I’ve been a Windows developer for about 15 years and other systems before that. I’ve developed programs used in a variety of industries but mostly centered in the retail or entertainment sector. Point of sale systems, photography systems, radio station software etc. Software that interacts with hardware such as controlling cameras, RFID readers, industrial controllers. Software that interacts with sales clerks, digital artists and the paying customer. The software I’ve made has been used by industry leaders in environments that make a ton of money every year so they have high expectations about performance, ease of use, ease of learning for new staff, long-term reliability, scalability and even globalization to their locations where English is not the dominant language. Yeah, that really does happen in the world.
I’ve worked (and still am working) in the big businesses with multiple teams in several states, TFS code repositories and dedicated build machines. Following all the buzz-word principals of AGILE and SCRUM and Continuous Delivery. But my first real paid developer gig was in a shop with just a few people, one other developer that had his head firmly planted in the past with no desire to move forward… Where ‘code repository’ meant a folder on a server and ‘version control’ meant making a copy of a folder at end of each week or feature. But I was lucky enough to have a boss that was all about robust coding and being innovative. His fearless approach to diving head-first into new things while scary sometimes also gave me the environment and outlook to always grab the next technology and charge ahead of the competition. That approach keeps me from sitting on my arse skill-wise like so many other developers do. I’ve gone from Windows-only development in C to C++ to C#, from MVC, WinForms to WPF, to Xamarin and cross-platform development that works on desktops as well as mobile devices and set top consoles.
I’m here to as a member of the previous generation of developers that has already lived through the transition from small company to large and through the endless transitions of new development technology. I’ve watched everyone jump onto the latest thing of ‘thin-net’ or Silverlight. Nobody has a crystal ball to predict the next hot technology that will stick around a while, but I’m going to try to impart some of that experience and some of those lessons on you the next generation of developers. Hopefully you can learn from some of it to jump start your progress.
Programming is a huge topic and everyone wants and needs different explanations. So it’s important to narrow down the scope of the series. As the reader you should know how that was done to know if these tutorials will even apply to you. Many of the main points being talked about in this series come about in response to questions I see on the various coding forums where I participate. I have answered literally thousands of questions on various sites… Heck thousands of questions on one site alone. Which means I’ve seen thousands more and have come to recognize the questions that get asked over and over (and over and over and over and over and over). Common sense tells you that the more something is asked, the less it is understood. Combine that with having been in this field for a couple decades seeing where students have had to be re-trained in order to become worth-while developers and you have the basis of this series and how certain things were prioritized.