Thursday, September 20, 2012

Cross Platform Development

More recently I have been playing with the range of projects from the Xamirin team, specifically Mono and MonoGame. Mono is a .NET equivalent framework that works across other platforms. Xamirin's tools even spread across the mobile space with MonoTouch and MonoDroid. Now, even though I've just been saying how good it is to look vary your experience with different tech, there are obviously major productivity advantages to being able to write same code in MS space and run it on other platforms whilst only having to worry about device specific UI and application life cycle events.

Cross platform work is very important these days. As MS is becoming less dominant across the varying devices people use in their day to day lives, being able to write software that will work on multiple is vital. With web development, this is less of a focus as what you make already 'works' across all devices with a browser. However, as the popularity of native apps on mobile devices has shown, the speed, responsiveness and UX on specific devices is still very important to the end user. The browser might one day prove to be place you can build anything once to run everywhere, however in my opinion at least, that day is not now, nor any time soon. Part of the reason for this is the tools and technology involved in web development. These tools have come a long way in a short time, however your basic combination of HTML, CSS and JS is still less than ideal, and to be honest, quite frustrating . I'll be the first to admit, I'm just not very good at CSS, where possible I leave it to people with a lot more talent than I. On the other hand, I've used Javascript quite heavily over the past 3-4 years I've been doing web development and I'd like to think I understand enough of how to use JS to write my way out of a lot of problems, however, rarely without feeling like I'm fighting with the nature of the language itself or the limited debug/support tools (these are improving at a good rate though). Dart is something that I very much hope continues to improve and gains popularity as giving developers options with web development will end up giving end users better solutions.


Scale of Project

One thing I will give Javascript/HTML5 is speed of development, with an important condition, Complexity. Javascript/HTML has the same advantage of most interpreted languages, which is that you can see the results of your work very quickly. However, something I've battled with myself and I'm sure others have also, is that it can be very easy to produce a 'write only' code base. The structure of your JS application is crucial to how maintainable your application will be. Though this is some what true of all modern programming, it is something I see other developers ignore. Backbone is probably my favourite framework that really helps with the structure of your Javascript application whilst not forcing the developer down a specific path.

Another aspect of Javascript I really enjoy is the openness of it's community. So many free frameworks have been produced of really high quality, making Javascript applications is getting easier and easier which I think has attributed to it's success. One of the speakers at Teched this year had a great line which I think is quite true, "The C++ game community scorns newbies. The HTML game community wants to give you a hug when you don't know "