Home  >  

Moving from being a Flash Developer to being a Flex Developer

Author photo
AddThis Social Bookmark Button

Last November, Rich Tretola asked InsideRIA readers what topics they'd like the InsideRIA bloggers to cover. One of the answers that intrigued me was by a commenter who was looking for advice on how to make the transition from being a Flash developer to being a Flex developer. I didn't feel qualified to answer this, since, though I have done Flash for many years, I was primarily an Authorware developer who also did database and web work. Also, I, too am looking for that first full-time Flex gig, so I can't speak from a position of "been there done that."

However, I sought out people who I knew had a much better perspective on this issue. The first is Scott Gordon, a recruiter with Vaco, LLC, whom I first met when I consulted with a firm that he'd worked with in the past. I asked Scott to comment on how he views this transition from a top recruiter's point of view.

The second person I asked was Greg Burch, the engineer in charge of the Flex Mobile project at Adobe. Greg has worked in both Flex and Flash, but he really piqued my interest when he mentioned at RIAdventure that he was looking to grow the Flex mobile team. I asked him questions designed to take advantage of his experience in both Flex and Flash and his position as a manager who is responsible for making Flex hires.

Scott's take...

First, I'd like to start out by asking you to give me a brief history about yourself and Vaco, and how that relates to aspiring Flex Developers.

I've got 10+ years of recruitment experience specifically with senior level software developers, CIO’s, CTO’s architects and DBA’s. I've  managed and produced in a Top 5 office of an IT staffing and Consulting division of a global Fortune 500 strategic staffing company (100+ offices). While assisting and training recruiters around the United States, I was chosen as one of twelve recruiters globally to develop policies and procedures for recruitment and retention in an information technology market.  I was also recognized as one of the Top Fifteen individual producers worldwide for the same global Fortune 500 staffing firm

I literally escaped the Fortune 500 company in 2004 to assist in opening an office for a now national consulting firm, Vaco, LLC.  That firm has grown over 2000% in just 6 years and recently named as one of the fastest growing companies in the United States by Inc. magazine. I've been a Partner with that firm in the Nashville office since joining in 2004.

Regarding how that relates to aspiring Flex developers...hmm...tough question!  I've sunk in with as many Flex developers as I can over the past few years.  I've got the luxury of a vast network of offices across the country.  When I've spoken to my west coast based partners, they've trumpeted the need for flex developers and typically what happens out there will be in Nashville within 6-12 months.  That was 12 months ago!  It's always been that way though.  Silicon Valley, Redmond, Mountain View, etc...all get the latest and greatest and that tends to move like the weather in to this part of the country.  Plus, I know a lot of bad ass Flex peeps and they are a lot of fun to hang out with!

Some Flash developers feel that Flex development is a step "up" from Flash development.  Do you agree with this?  Why or why not?

I do but that's based solely on the requests of my clients.  Flash always seemed to be more of a front end tool and with the advent of Flex it's taken it to the next level.  Deeper knowledge is required, interviews are getting tougher.

Can you tell me what the typical client you have who is looking for a Flex developer is like (organizational size, culture, team size, etc.)?

It's across the board.  Large and small.  Probably more on the smaller end at the moment but with an ever changing/evolving market I'm seeing more large scale projects.  The culture is growing more towards the open source which breeds the "cool" factor. 

What are their most common requests for a Flex developer position? 

Early adoption of Flex methods, OO skills (design and development).  A history with C++ and/or Java are always plusses.

Of those requests, are there any that they tend to be willing to compromise on more than others?

Not really...clients are sticking to their guns in this market.

Are there any skills that everyone wants that you find hard to find in a candidate?

Each job description has its challenges.  Every client wants something different but some focus more on background and others focus more on personality.  It's a mixed bag really.

Someone looking to make a transition from being a Flash dev to being a Flex dev probably won't have very much Flex job experience.  What specific things could someone without on the job experience do to make themselves more attractive to a company?

Train, read, learn and practice.  Do projects on your own and be prepared to discuss during interviews.  Show your code!  Even though you've not been paid for it, clients are still interested in seeing your style.

Often, the person conducting an initial interview is not technical and may not recognize what skills transfer when there's not a direct match.  Can this situation be turned around so a candidate can get consideration for a job they can potentially do, but their skills aren't a 1:1 match for?

It can.  The worst answer anyone could give during an interview is "no".  If you've not worked with a particular language but you've done something similar, speak up...it never hurts.

Have you ever recommended a candidate with less experience over one with more experience?  If so, what was your reasoning?

It's a rare occasion but I have.  Typically it's based upon the rate the client is willing to pay. 

Do you have any general advice for candidates looking to make this change that I've missed in my other questions?

Find a recruiter that you trust and will help you along in your career and one that will be a partner vs. a pimp.  Seriously.....if they care about you, they'll do all they can to help.  It's like a marriage.

Greg's take...

Greg, can you give me a bit of history about yourself and describe how you came to be working on the Flex team and, more specifically, the new Flex Mobile team?

I have been working in the mobile industry for around a decade and have been using Flash since just after Macromedia acquired the technology. About 8 years ago I started working primarily on getting Flash onto mobile devices and consumer electronics. Five years ago I finally made the decision to join Adobe, then Macromedia, to start a team that was tasked with creating a component framework for FlashLite. That project eventually got rolled into our FlashCast product that enabled OEM's and Carriers to deploy a content network on top of FlashLite. My original goal was always to create Flex for mobile but the hardware, application market and our runtime were not yet at a place where it would make sense. It took until about a little over a year ago where we had a line of sight to our goals and that is when I moved to the Flex team and started the Flex Mobile project. This is the point where I realized that I had a lot to learn about Flex and how it had changed since 1.0.

Some Flash developers feel that Flex development is a step "up" from Flash development. Do you agree with this? Why or why not?

I disagree. First of all while the Flex Framework can be used for a lot of things it is primarily meant for application development. Everything else falls under Flash development. Secondly, 90% of Flex itself is just Actionscript. We just layer tools on top of that to make it easier and more elegant to define application UI's by introducing an xml based declarative language (MXML). I still love the freedom and the blank slate "Flash development" allows but when it comes to application development Flex saves me a lot of time. And last but not least I much prefer the Flex development tools, namely Flash Builder. Even as a Flash developer Flash Builder can be a very useful addition to your toolset for Actionscript-only development.

What do you see as the biggest difference, if any, between the skills that make a good Flash developer and those that make a good Flex developer?

I think the skills are complementary so I wouldn't say there is a big difference. You have to be a Flash developer before you are a Flex developer in that you need to understand the Actionscript language. If you spend most of your time making web or desktop "applications" I would highly recommend Flex. Also, with more and more advancements being made to Flex it is becoming useful for other types of content as well.

However, to answer your question, I would say the biggest difference to me is the lack of a library. When working in Flash the library is the centralized place for everything. This does not exist in Flex. You still work with assets and components but there is not a centralized place for them.

When you're looking at someone to hire them onto your Flex team, are there specific things that candidates absolutely must have? How do you determine if the candidates have them?

Passion, Drive. It doesn't matter the task or the complexity of the task someone with passion and drive will always get it done, no matter what it takes. If you don't have those it will be a tough interview. Outside of that we generally look for a formal background in computer science. Flex or even Actionscript experience doesn't matter that much we have people from all types of backgrounds from C to Java etc. As far as determining if they have what we need we give coding tests and ask coding questions. I am not a fan of logic questions because that tells me nothing about a candidates ability to code or problem solve. Passion and Drive are the easiest and I know within the first minute of speaking to them if they have it or not.

In the wider world than just Adobe, do you see certain skills that companies are looking for more?

One word. Mobile. That is where Adobe is putting a lot of its effort, it is where companies are looking to expand to and it is where there is still room for a lot more experienced people. And this doesn't just have to do with Adobe technology. Any type of experience regarding mobile on a resume is a big win.

If a Flash developer is new to Flex, would you recommend that they learn Flex 3 before learning Flex 4, or just dive right into Flex 4?

Dive right into Flex 4. In my opinion it is much more powerful and flexible than Flex 3. It is built on top of the core classes from Flex 3 but there is enough difference, and benefit, to just start with Flex 4.

What things can you advise someone trying to "break into" Flex development from the Flash world do that might not be obvious?

Take your components and port them to Flex. This will help you learn the lifecycle methods of components. This allows you to concentrate on the architecture of Flex while not having to worry about the logic of what you are building, since you have already built it. For instance if you have a ReallyCoolButtonComponent in Flash there is no reason you couldn't reference this from an MXML file with only a few modifications (extend UIComponent). After you have it up and running take a look at the component architecture and lifecycle (see link below) and change it one step at a time. Once you understand the lifecycle of components in Flex you understand most of the system. Flex is mostly visual components and a few managers that all follow a common set of rules. Here are a couple of resources:

Deepa has a great article on the component architecture here: http://opensource.adobe.com/wiki/display/flexsdk/Gumbo+Component+Architecture

If you happen to already use Flex 3 then Joan Lafferty has a useful article up explaining the differences between Flex 3 & 4 here: http://www.adobe.com/devnet/flex/articles/flex3and4_differences.html

If you don't have too much interest in learning the innards of Flex then it is obvious what to do - build a simple application. However if you are serious about Flex development sooner or later you need to understand the architecture. It will save you time in the long run..

Do you have any general advice for Flash Developers looking to make this change that I've missed in my other questions?

I touched on this earlier but I will mention it again. Don't be intimidated of Flex, it is all Actionscript in the end. There is even a flag you can pass to the compiler to keep any generated Actionscript code. When I transitioned to developing in Flex I used this frequently to understand what was happening behind the scenes. The flag is "-keep".

Thanks, Scott and Greg, and I hope InsideRIA readers will find this as informative as I have.

Read more from Amy Blankenship. Amy Blankenship's Atom feed

Comments

9 Comments

Richard C Haven said:

I come from an old-school OOP applications development background (Delphi/Object Pascal). I know nothing about animation and timelines. Flex and OOP-Actionscript are the closest thing I have found to what I'm used to.

I've had to accept asynchronous actions and the event model is a little different. In Delphi VCL framework, we used virtual protected methods for descendants to participate in the component life cycle; in Actionscript, descendants sometimes register event listeners on themselves! (actually, on their ancestors). Pascal let me type functions so I could pass in a reference to a function that took a string and an int parameters; in Actionscript, I would listen for an event that had a string and an int members instead of passing in a function reference.

For anyone moving into Flex, I recommend taking the time to learn the fundamentals of OOP. IDEs and frameworks have made it easy to use objects; learn what makes a good object and why OOP is so pervasive these days.

Cheers

Amy Blankenship said:

Hi, Richard;

It's not really considered good practice for a component to listen for events on its parent. Instead, many developers recommend making a public method or property available that the parent can call when the event happens.

However, more and more developers are using a callback functions as you describe, rather than dispatching an event, because this performs better. I agree with you that it would be nice if there were a way to have the compiler do some type checking to make sure that the function passed in as a callback has the correct signature.

Thanks for your comment.

Tink said:

"You have to be a Flash developer before you are a Flex developer"

So often I go and work for people who have a Flex team in place, they know how to use the code in the Flex SDK, but have very little idea of what can be done with the Flash Player, things like ColorTransform, BitmapData etc.

They basically know how to use MXML and Bindings.

Having a good grounding in the Flash Player makes it much easier to tweek Flex to do exactly what you want.

Tink said:

-keep-generated-actionscript is the compiler argument. It seems that have been cut short above

Greg Burch said:

Tink - Agreed that too many teams "just get by" with Flex. This is one of the reasons I like that we have combined livedocs now. It is a bit easier to discover what you can do in actionscript vs flex.

-keep works as well its the short hand version. You can use either. Not sure if the docs mention that.

Lee Fernandes said:

It seems so easy to create SWC component's in Flash that I struggle with figuring out what to use Flash Builder for other than Eclipse's coding environment. Most Flex guys I've talked to can be summed up that it makes app architecture development easier. In general I assume it's one of those things that if I don't see it now, I'll see the benefits once I've made the leap.

Amy Blankenship said:

The reason I chose to pick up Flex was the end of development of Authorware. The core of my Authorware business was building eLearning presentation engines, where the content was coming from a database or other external source and the tools to populate the data source. Flex, like Authorware, is a fantastic agregator of content from different sources.

I'm less happy with it for editing data, but that's probably because I haven't yet embraced any of the frameworks that were created specifically because the management of data flying back and forth in Flash and Flex is not as intutive as it is in a procedural language.

The thing that most Flash components I've encountered lack is a concept that the data driving the component may change several times over the life cycle of the component, and this concept is integral to the Flex Framework.

This is just my persona POV, so feel free to disagree :).

Tink said:

"-keep works as well its the short hand version. You can use either. Not sure if the docs mention that."

Thanks, ya learn something new everyday!

I agree the combined docs are much nicer (although maybe a little slower).

André Malkine said:

"Flex...is primarily meant for application development. Everything else falls under Flash development."

I've been a Flash developer for about 10 years and for years I keep hearing that Flex is "for applications". I'm still trying to figure out what the difference is between a Flash/Flex "Application" and "Everything else". Flash websites (static or dynamic), audio/video players, cd-rom/desktop apps, etc. - they all seem like "Applications" to me. Perhaps if the difference was clear, I'd be inclined to make the shift.

Leave a comment


Type the characters you see in the picture above.


Tag Cloud

Technical Speakers

Who is the best technical speaker you have seen?

Answer

Latest Features

Recommended for You

@InsideRIA on Twitter

Archives

  • Or, visit our complete archive.  

About This Site

Welcome to the premiere community site for all things RIA sponsored by O'Reilly Media and Adobe Systems Incorporated.