Software application development
This blog is intended to provoke discussion and exchange between like minded software application developers, engineers, architects, project managers - and keen hobbyists too.
Thursday 16 October 2008, 7:27 AM
Qt's Developer Days: the top 9 challenges for programmers in 2009 are...
Aside from an entertaining Forrester presentation themed around software and music which I will write up shortly, there's probably another takeaway. Namely, if Qt as a company is the cross platform strategist and guru-driven knowledge base that it would like us to think it is, then its predictions for the years ahead should be worth listening to.
So, in the world according to Qt - what are the key challenges facing software application developers in the years ahead..? I don't expect any of the below to be shock horror headline news wake up calls, but I think it's quite nice to encapsulate a few of these thoughts in one area.
1.IDENTIFIABLE DIFFERENTIATION: the bar has risen for software developers and products must now have more clearly identifiable differentiation in terms of usability as well as look and feel.
2.A GREAT UI IS NOT ENOUGH: to differentiate a piece a software, a great UI is now a basic requirement.
3.THE SINGLE CORE FREE LUNCH IS OVER: developing with threading and concurrency techniques will become the norm.
4.NEW FORM FACTORS = NEW DEVELOPMENT METHODS: from multi touch screens to electronic poached egg machines, new machines will mean that there is still a need for constant reinvention of programming methodologies with an eye on emerging form factors.
5.SHRINK-WRAPPED TROUBLE: in some areas, shrink-wrapped off the shelf solutions have become increasingly popular and commercially developed software is suffering as a result.
6.1st CLASS WEB: we've heard it plenty of times from Abobe and others, so just one more time... “Web pages must now be first class desktop applications.”
7.SYNCHRONOUS DATA IS OVER: it's not the end of the world as we know it, but it is the end of synchronous data as we know it – and this is having an impact right down the software application development food chain.
8.GET YOUR FILTHY HANDS OFF OF MY IP: it is becoming increasingly difficult for any developer to create something new without touching IP already owned by somebody else, so in future it may become harder and harder to innovate.
9.IT'S A TOUGH LIFE: “Software application development is, and always will be , fundamentally hard.” Those aren't Qt's words, that comment was made by (IBM's Grady Booch). Shame really, I thought you invented UML to make things easier Grady? Just kidding, we knew what you meant :-)
You might well expect a company that extols the virtues of cross platform interoperability to try and come up with a list like this. In truth, Qt didn't list them all in quite this fashion, but they have certainly been recurrent themes through this Developer Day event.
If you Google, “Key challenges ahead for software application development in 2009,” you don't get a nice shrink-wrapped easily identifiable first class web page to look at that presents these thoughts in an easy-to-digest GUI that works well with any form factor for any type of processing method or data type.
So maybe we should attack this subject and build a list? Or maybe we just did.
So anyway, thanks to Qt for bringing those thoughts together. Thanks also for ruining my idea for a, “Things to think about in 2009” end of year blog. Oh well, at least we beat the Christmas rush this way huh?
Comments on this post
The writing of multi threaded apps strikes a chord Adrian! There are people out there whos 1.6 ghz 2 cored rigs are left in shade by the 3.2 ghz P4 chips. Something I have had to mention elsewhere already! This translates into even more disappointed and downtroden consumers. Yes I am seeing the effects of single threaded apps running on the lower duel core chips, it isn't very nice and is I believe part of the reason that vista has been freekin out and chattering away to itself all the time.
At present, the only real advantage of a multi-core system is that the system might run cooler or require less power to do a comparable amount of work. I've got a dual core system at work and I've monitored the cpu and process stats at various times. Unless the software is specifically written to take advantage of a dual core, it seems that the OS runs in one core and the highest priority application runs in the other.
I agree that the software writers and the tools they use need to catch up.
Asynchronous data is not an answer at all times. We have an application that the salesmen promise our customers 2 second latency. That's not technically "synchronous" data but its not "asynchronous" either, at least in human terms. Being a hardware oriented engineer I cringe when I hear a software programmer throwing synchronous and asynchronous terms around.
Every version of Windows ever released, no matter how its programmed, has always been "asynchronous". Linux isn't any better! You don't know precisely when the data will return or show up on the screen. You as a programmer have very little control as to when the data will arrive. I find it especially annoying not being able to even guess when to expect results or the effects on response time using different sorts of commands or subroutine structures in VB.Net or C#. Until you bolt on a real time module onto either Windows or Linux, you can't really control the precise instant the data comes back from the subroutine or onto the screen.
Web pages as "desktop applications" is a scary prospect not just for a Windows based desktop but for a Linux one as well. Unless the application runs completely on a remote server, something gets run on the desktop OS. Beyond the security issues, there is the issue of dealing with software API compatibility, browser render compatibility etc. FireFox 3 still has grief with Microsoft served pages especially those that seem to want to run in a Silverlight context. I've gotten in the habit of using FireFox and IE7 simultaneously. If it doesn't render well in one, I'll try the other. What I find funny is that sometimes pages on Microsoft's websites won't render without errors in IE7!
So Qt's programmers and its programmer-customers have a pile of work to do. For that matter, until all the http programmers and other network protocol gurus get together and tighten up the web page specifications and browser compliance, render engines will be messing up on pages served from one server source or another.


