Over the past few years of learning Flex and being a participant and manager of a Flex user group I have become aware of a the learning process of new Flex users. I hope this post will be helpful to those considering or are in the process of learning Flex. Radley Marx and I manage is a large and active group in the Greater San Francisco area (SF, SJ and the East Bay). Radley and I complement each other (regularly, I might add) in that he has a Flash/Designer background and I have an enterprise/ business Flex background. We have had more than a few conversations over the content of SilvaFUG events and how we need to consider the demographics of our members.
To start with there are two distinct groups or sources of Flex developers, which is important to understand as each of these have slightly different paths:
- Designers and Flash Animators. This ‘Designer’ constituent is largely made up of Creative Arts graduates who use Creative Suite applications for website graphical design and animation. Given the Creative Arts (CA) versus Computer Science (CS) training there are relatively few coders in the crowd although the numbers are increasing due to the need to code to get the best out of Flash Pro and other packages.
- Software Engineers and Developers. The ‘Developer’ contingent originates from the somewhat gargantuan, software development community. Lately the has been a large influx of developers into the Flex community due to economic and professional factors. Although some of these developers are ‘new grads’ the large majority are experienced engineers and developers with 3+ years professional working experience in Java, Microsoft, PHP, database and other technologies.
There is an emerging sub-group, to use Kristopher Joseph’s term ‘developsigners’ who can carry design artifacts into code. That being said these two groups are very different and have little knowledge of each other’s ‘dark arts’. Until Catalyst and FXG hits the streets that is.
Sticking with what I understand best, the evolution of a Developer new to Flex occurs over 3-6 months depending on how much time, training and mentoring is available. There appear to be five stages, the time associated with each stage can be 1 week or 1 month depending on your circumstance):
- Flex Framework Stage. This involves learning to build applications based on the Flex Framework using MXML and the Actionscript. The first projects involve using the design view to layout controls (buttons, combobox,….), navigation containers (TabNavigator, Viewstack, …), and states (save me Catalyst and Flex 4!). This is followed by adding handlers and logic using Actionscript. Anyone with experience in object oriented languages will quickly explore building and using new classes.
- Flex and Data Services. You quickly learn that Flex is about building client-side RIAs and that clients need to be fed with data to really come alive. As you continue to explore the framework you will now learn about connecting to data sources and services (check out Yahoo and Flickr). Creating and using HTTPService, RemoteObject, and WebServices to bring data into your application is second only to understanding how that data is managed and consumed by the different components. During this stage the nuances of XML, XMLList, and Collections as data providers come clearer (however frustrating that can be at times). Many developers with ‘backend’ experience will get deeply into available and suitable back-ends for Flex, particularly remoting based on ‘Action Message Format’ or AMF that is available in such Flex-oriented implementations of WebOrb, Granite, BlazeDS, ZEND_AMF, etc.
- Flex and Frameworks. Now that you have applications that have a few screens and pages, a number of viewstacks, popup dialogs, and states you start to wonder ‘how do I coordinate all this?’. Additionally, your components have a mix of visual components, data and logic making it difficult to follow and even more difficult to re-use and maintain. At this point you start to look at Frameworks to help bring order to the chaos. There are a growing number of available frameworks with very cool and unusual names such as Cairngorm, swiz, robotlegs, mate (the French not Australian pronunciation)… Frameworks are/is a favorite subject at user group sessions every three or so months (note how that syncs with the evolution). Checkout this presentation on frameworks which I am starting to maintain.
- Styles and Skinning. Depending on your creative nature this may have been something that interested at an earlier stage. Essentially you realize (or someone tells you) that your application looks a little grey and boring (it might not be on such nice terms either). At this point you start digging into styles, CSS and skinning. I highly recommend start attending Designer oriented user groups to get familiar with the CS Suite of applications that produce the graphic design artifacts you need to deal with as a developer. You will also learn that designers are nice people however under-privileged they may be in terms of having the benefits of a few years of coding.
- Custom Components. This is not a subject that everyone will agree is important, until you attend or watch a session from Ely Greenfield or Deepa Subramaniam. At that point you realize you should rebuild everything that you did in the last 4 months 🙂
Now I am going to go out on a limb and talk about Designers getting into Flex. Designers have an advantage of knowing the CS suite and artifacts that can be created for applications. Here is are the variations to the Developer evolution:
- Flex Framework Stage. What is this MXML stuff? and please release Catalyst – NOW! Seriously, with a little background in Actionscript it just takes a little time getting used to the Flex Designer and how MXML is used to declare visual components.
- Styles and Skinning. This is where Designers will start to feel at home in Flex. The difficult part is learning patience with Flex as it is challenging (a nice word, you will have others) to get the look and feel that was so easy to do in CS and Flash.
- Custom Renders. This again is arguable and arguably essential. These are similar to custom components and get easier in Flex 4 – see Deepa and Ely’s blogs above.
- Flex and Data Services. Remember Flash Remoting, this is largely the same thing only make friends quickly with a Developer with backend experience. You will make a great team because they are scratching their heads over symbol libraries from Flash.
- Flex and Frameworks. After watching Radley suffer through the first hour of Frameworks at MAX I can tell you this is only for the bravest of Designers. As per Stage 4 – find a Developer friend.
I hope this post has informed and entertained you. Remember you are not alone and if there is not a Flex user group near you then you should start one. Strength in numbers.