Saturday, February 11, 2012

Thoughts on Frontend Windows Development



Disclaimer: the statements I’m about to make can be quite polemic, specially for developers working on platforms other than .NET. My intent is not to undermine other technologies or developers. My objective is to establish the need for .NET developers to step up in the frontend interactive application development field and learn the existing awesome tools that make .NET frontend development the best platform for visual interactive experiences for the Windows environment.
If you are a .NET developer without experience on this field, I urge you to get into it, it is probably the best time ever to get on-board. If you are, on the contrary, a developer on other frontend platforms, please don’t take this personal.
In the past, when working on .NET interactive applications development, I have had the help of experienced user interface developers who mastered Expression Blend, which in my humble opinion is the best user interface visual development tool in the market. I might be biased towards Blend for being a .NET development tool, but trust me, I have invested time exploring iOS, Mono, Android, Php and other development tools and environments, and I can say that they are far behind from the experience you can get from working with Visual Studio and Expression Blend.
However, since I moved to the UK I have found that .NET frontend development experience is actually rare on this side of the Atlantic ocean. Most .NET developers are focused on ASP.NET and server side development, which is kind of a shame if you take a look at all the exciting trends and development happening on the front side of things. WPF and Silverlight are not well known, and surprisingly Silverlight is just seen as a poor flash competitor attempt, which is incredibly far from the truth, since Silverlight has been quite successful and has evolved as a platform from being a mere browser plugin.

Traditionally front end interactive development was done in Flash at first, and then in Flex and Air. However the problematic resources consumption of Flash and the ban from Apple to run Flash on their mobile devices have undermined the evolution and reach of the platform. Also the evolution of web technologies, the JavaScript frameworks, the advance in CSS 3.0 and the support of HTML5 have overwhelmed Flash and Silverlight as web platforms.
Without question, .NET technologies are currently far better to develop interactive experiences for the Windows platform, and HTML/CSS/JS are the way to go for web development and cross-platform experiences.
imageThat being said, currently all interactive development for the Windows platform should be done in .NET and using .NET development tools. The productivity, integration, scalability and flexibility of the platform and the native tools are far better than anything else. When developing .NET interactive applications, Expression Blend is actually THE tool to develop user interfaces for .NET powered technologies, and it will be the de-facto tool for Windows 8 interface development, no matter the language developer chose (C#/XAML or HTML/CSS/JS).
The beauty of Expression Blend is that is a powerful visual user interface development tool that allow UI devs to create amazing custom interfaces in a visual environment similar to Photoshop or Illustrator but generating optimized XAML code as they create the UI elements. The XAML code generated is seamlessly integrated into the project structure and the code behind. This allows UI/XAML and C# developers to work closely together and interact with the same code, which is by far the best integrated application development environment in the market, beating up any other language and platform out there.

Blend is, as I said before, a user interface development tool. Is not a design tool, although many people think that is the case. Blend was created to create presentation code in the most productive way keeping it totally integrated with the code development process. all modern interactive .NET technologies benefit from this integrated environment, including WPF, Silverlight, Windows Phone, Surface, and Metro Applications development for Windows 8. Soon, web development for next generation platforms will be totally integrated too.
I guess that one of the big problems of Blend adoption is that by tradition, .NET developers are not very good designers. Although Blend provides advanced importing tools to consume design files produced by Photoshop and Illustrator, it will be require to re-draw and rework some of the design parts to take advantage of XAML. After all, we don’t to work with bitmaps, jpgs or pngs always, we want to transform as much as possible into XAML code to increase performance and flexibility. This requires UI developers to understand design concepts and be able to recreated the UI design in the correct way. On the other hand, UI developers need to understand how the underlying code works and how XAML integrates into the overall application architecture, so basically they are also require to understand the .NET framework and how the UI interacts with code. This represents a barrier for people coming from other platforms like Flash, since understanding the .NET framework is generally out of reach.

So, if you are not a .NET developer and want to get on-board, my suggestion is to start by learning C# and OO practices. Learn the fundamentals and understand the framework and then move to a specific frontend technology you like, like WPF, Silverlight, Windows Phone or such. If you fail to understand the .NET framework and the OO fundamentals, it will be quite difficult to implement robust, optimal and flexible frontend applications in .NET.
If you are a .NET developer and have been just staying in the backend side of things, now is the time for you to actually come forward and get into frontend development. You are the best fit to create Windows interactive applications since you already know the fundamentals, the OO principles and the .NET framework. You will be able to jump into it right away since you will only need to learn the XAML specifics for the technology you want to use, that being WPF, Silverlight, Windows Phone, XNA, Metro and Windows 8 (WinRT) and even Kinect development !
Hope this generates reflexion and help you decide to take some time and learn some new things. Is not my intention to offend anybody out there or undermine the great power of other platforms.
Cheers!

No comments:

Post a Comment