Native App Development
I was recently asked about yet another .NET framework that promised cross-platform wizardry and how we never have to write native code ever again …and it got me thinking about why I do what I do.
A lot of the problems I have with these ‘cross-platform development frameworks’ is that they seem to ignore the cultural aspects of each platform.
Each platform has their own sub-culture …each of which is very easy to offend. Lists/buttons/navigation all have nuances specific to each platform, and that’s what makes each platform special to the end user; they have formed a bond with that particular ‘way’. Trying to force each device to show the same software is often more than a little insulting to each device’s end user (and if not insulting, it certainly creates a bland experience).
Anytime someone tries to make a generic version, you often lose the speed, efficiency and beauty that native apps have to offer (PhoneGap case in point). The obvious exceptions here are games or custom software that taps into DirectX/OpenGL libraries to create something truly special from a UI perspective.
From a development point of view, these frameworks also tend to suck the life out of the development experience. None of these tools contain the level of professionalism I experience from Visual Studio or Xcode, and it’s the love for the development tools that often drives innovation within each sub-culture from the developer community (I code .NET and iOS as a hobby because I love the way the development tools allow me to express myself …I didn’t get that from Mono).
Responsive websites solve the majority of this problem for companies wanting a low-investment-one-thing-fits-all solution. For clients who want exactly that, but in an app, these cross-platform-frameworks may be the perfect fit. But do we really want to be populating the world with more generic ‘stuff’, or do we want to make software that is beautiful, unique and something that people remember because we took the time to learn what makes each platform special? ;-)