A lot of things changed in the Adobe Flex world since I wrote my last entry.
Adobe stopped the development for the Adobe Air Runtime for Linux systems, Adobe wanted to support Maven officially, Adobe stopped the development of FlashPlayer for Android and Adobe decided to give Flex to the Apache Foundation as a new project.
So what does that mean to Flex developers? Well, thats hard to tell for all developers, but I can explain how hard it was for me to work as a Flex developer in Germany.
I started using Flex 1.0 when I wrote my diploma thesis about Flex in 2005. Since then I tried to work as a Flex developer. It took me about 2.5 years to convince my first employer to use Flex in a project. We successfully finished the project but it should be the last Flex project for that employer.
My second employer explicitely searched for a Flex developer and for about 2 years I didn’t do anything else than Flex and Java development – which I enjoyed a lot. The result of this work ist the probably first open-source Flex based web analytics software: eAnalytics (www.eanalytics.de).
In my current job I haven’t done Flex for more than 6 months now and I don’t think I can convince my bosses to use Flex.
Why? That’s not easy to say but here are some reasons:
- I think german customers often don’t understand Flex. It takes a lot of time to point out the advantages of Flex in contrast to the competing technologoy and it’s not that easy to establish a new technology here in Germany. For web application development Flex is still a new technology (after more than 6 years!). Have you ever tried to explain a customer or even your boss where which part of an application run – in the client or on the server?
- It is very hard to find skilled Flex developers. I live and work in Cologne, which has about 1 million inhabitants and lots of it-companies but normally there is no joboffer for Flex developers. As a result there are no Flex developers (because there seems to be no demand) and it is very hard or even impossible to find a skilled and experienced Flex developer. You have to educate developers in Flex which is really time consuming. If you need to scale your team in an urgent project and you can’t do that – that may become a real problem for the project or your company.
- In my opinion the way how to develop Flex applications never really was enterprise ready. For an enterprise application there is the absolute need for an automated build (Continuous Integration) and testing system. flexmojos was invented by the community but Adobe didn’t support it and that caused a lot of trouble. Flexunit could be run in flexmojos build but my attempts to integrate FlexMonkeys for automated UI tests failed. Flashbuilder is very slow if you work in a complex project.
Flexmojos was a first good step but complete development stack should look like this: generate project i.e. using a Maven Archetype, get the project seamlessly into your IDE, build the project on a CI server and test the UI automatically. All this should just work and mustn’t take days and days of frustration because some configuration or tool is not running.
- Adobe kills the best rationale using Flex.
One was: “write once, run everywhere”. Well, nope, the development of Android Flash plugin is stopped. So one needs to create a project for Web and one for mobile Air. Air for Linux is no longer supported.
Another was: “Flex is supported by Adobe and therefore future maintenance is guaranteed.” Well, Adobe assures us they will support Flex. But they reduce the Flex development team dramatically. So what can they do with their reduced manpower, if the community does not accept and presses ahead with Flex? What about Adobe’s plans to invest a lot into HTML5 and Java Script?
Another: “Flex is the superior technique to create RIAs”. Maybe thats true but unfortunately the customer does not care about that. He/she wants to have a working result and for the customer it doesn’t matter if the result is made with Flex or any other RIA technology.
Please don’t get me wrong, I still like Flex. I like to have a strong typed programming language and I like the capabilities of MXML. I like to have a container (Flashplayer) which behaves the same in every platform and the results look every (mostly) the same. Maybe the community does an excellent job and fixes everything Adobe messed up (Maven support, official Maven repository, UI Testing Tools, improvement of FlashBuilder etc.).
But at the moment one has to face reality and has to recognize the other RIA frameworks out there which have a more certain future than Flex has. They provide CI support, work and the results are very similar to Flex.
So currently I don’t recommend any customer to implement a new project in Flex. Maybe my opinion will change, maybe…..