Wednesday, May 20, 2009

The Rebranding of Flex: Back to Flash We Go.

You may have heard that Adobe is rebranding their Flex Builder tool to "Flash Builder". The FlashBlog goes into Adobe's perspective, read more here.

I don't market myself "a Flash guy", even though the majority of my projects are UIs delivered by the Flash player. My brand is "ActionScript developer" with expertise in OOP, widely used frameworks (like Flex, PureMVC, Mate, etc.), and back end technologies that feed the UI (remoting gateways, rest services, xml and JSON feeds, built out of PHP, Java, .Net, Ruby, etc.). I'm good with PaperVision and Facebook development, and can do all kinds of motion and graphic stuff as well, but the latter usually falls under, "yes I can handle that if you need me to." 

Why the distinction? From the perspective of this self-employed indie software guy, three major reasons:

- Type of work. "Flash guys" do banner ads, click-through widgets, simple video players, that sort of thing. It tends to be short-run, short-notice work that commands the lower end of Flash-based developer rates. Lots of pick-up ad agency work, holiday campaign work, that sort of thing. It's sort of like cooking tacos; once a month, if I have the time, it's fun.

- Customer perception. I've heard this so frequently that I just accept it as the truth; a "Flash guy" is not perceived as a serious programmer or technologist. At best, you'll get considered a good designer that can do a little scripting.

- Availability. There are so many "Flash guys" out there it's unbelievable (interestingly, if you're any good at all, even today, there's no problem finding work). But there are very few proven, independent ActionScript developers; I personally know of about five in my area, and we're all very busy. 

In short, the longer term and more interesting work comes if you can brand yourself as somebody that can work with the back-end team to implement a robust interface to the UI, and then build the UI using frameworks and patterns that can be represented as repeatable architectures with consistent implementation methodologies. This is lead programmer/architect work, which is a lot more interesting to me, and of course commands a considerably higher rate. 

A few years ago, Adobe introduced Flex. Everybody thought it was a different technology; it wasn't, it was just a more programmer-centric way of creating UIs with ActionScript and a form of XML markup called MXML. "Flex" is actually nothing more than an ActionScript framework, but like any other framework, it encouraged a well-factored, consistent development methodology. On top of that, MXML could be used in top-level component files to represent where these components got placed on the screen, and ActionScript could be used to populate those components with data in a variety of ways, including databinding (which sort of auto-magically updates the UI as data changes), and so forth. 

The "Flex Builder" was also released as the programming environment for the Flex framework and MXML. It was built on Eclipse, which is a world-class, industry standard programming tool. It has integrated performance analyzers, full-featured debugging tools, and just about everything else a serious programmer would expect to find, and of course, you can use it to build other areas of the same project, like a Java back end. 

Note: you can still build crappy apps in Flex. But, because of the nature of the tool and use of a real framework, it attracted more academic programmers, who usually have more training, or at least interest, in real professional programming methodologies. 

This was extremely well received by the "Flash guys" that had evolved beyond the ad-hoc, inconsistent spaghetti generally seen in Flash widgets. This sort of Flash developer was truly a a professional programmer, but it was very difficult to get a customer to understand why we were different than your run-of-the-mill banner ad guy. 

Flex was not extremely well received by the "Flash guy" designer type, who, from comments I saw at Adobe events and projects I've worked on, seemed to be afraid that they'd have to actually learn programming to continue doing banner ads in Flash. Imagine that.

Of course, the answer is, you need both. I do the heavy lifting as far as programming is concerned. I work with "Flash guys" to create things like sexy loaders and animations, which I integrate into the application. There's room for both kinds of developers, and Adobe managed to pull this off by having the "Flex" developer, and the "Flash" developer. Customers have come to understand the difference, which is why you'll see people looking for one or the other depending on what they need. 

But now, Adobe has decided to turn "Flex Builder" into "Flash Builder". They're even changing the logo (though it's still the Flex grey, as opposed to the Flash red). Hmm...does this muddy the waters, does it compromise a distinction that, after all these years, made it easy to explain to a customer why I'm better for this role than the designer/Flash type?

Adobe says, "On the contrary, Flex is now much more understandable. Flex is an ActionScript framework for creating RIAs and that is not changing. This name change actually makes the Flex brand more solid and understandable."

Oh c'mon. That might be true from the perspective of a technologist that understands Flash technologies, but I know technical recruiters and business guys that depend on the distinction. 

"I thought Flex programmers were more serious than Flash programmers, but now there's no more Flex.". 

"Err...no. There was actually never a 'Flex programmer', we are all Flash programmers, what you thought of as a 'Flex Programmers' is actually a Flash programmer that uses the Flex Framework, and the Flex Builder, to build Flash applications". 

Customer: Huh? Are you a Flex programmer, or not?
Me: ...yes sure. I'm a Flex programmer. 
Customer: Ok, why didn't you just say that? 

I know for a FACT I will have this conversation. The customer will be frustrated and make comments like, "damn engineers, fixing what isn't broke". I'm confident I can manage it, because I worked for Microsoft and got used to explaining to customers why something that was a certain way was actually better if we changed it, even though nothing had actually changed other than how we want you to look at it.

So, Adobe has given me a job to do. I don't mind all that much; I'll reach out to all my clients and make sure they understand it. That's good client relationship work--and might even drum up a little business. However, I do think Adobe is understating how difficult understanding the difference between Flex and Flash initially was, how successful and welcome it was at differentiating the two kinds of developers based on the two distinct brands, and how confusing it's going to be for a lot of hiring organizations when they're told "I use the Flash Builder to build Flex programs."

Maybe what we now know as Flash CS3 needs to be rebranded as "Flash Designer".

Like any other change of this ilk, it'll rumble for a while and then be gone, we'll get around it. My advice to the independent Flex developer out there though...erm wait, the independent Flash developer that knows the Flex framework...or however you brand yourself: let Adobe do the explaining. Forward your clients the FlashBlog link. 

Aside from that, leave it at "it's a marketing thing. Nothing has actually changed. You can still refer to me as a Flex developer if you like." 

1 comment:

  1. Well, I think they were right to change the name, but I don't think they did a good job with the name change they chose.

    The branding should cater to non-developers. Developers will quickly understand the distinction between Flash and Flex (or whatever it will be called). But the CLIENTS of developers won't get it.

    "Builder" is an ambiguous word. Animating is "building" just as much as coding is.

    I'm not crazy about the word "developer" either. WITHIN the programming world, that has a clear meaning. But if I tell the Average Joe that I'm a Flash Developer, he won't necessarily assume I'm a programmer.

    If I were Adobe, I'd rename Flash to "Flash Animator." And I'd rename Flex to "Flash Coder." That way, they'd keep the word Flash in both, which I do think is a good idea. But they'd make a clear distinction between the two authoring tools -- one that should be easier for lay-people to understand than developer or builder. They could get even more verbose (and clearer) and rename Flex to "Flash Programming Platform." FPP has a nice ring to it.

    I think they should avoid putting Actionscript in the name, because I've met many non-developers who don't know what AS is. (I wish they'd named Actionscript "Flashscript.")

    While they're doing all this renaming, they should make .flash or .fsh an alternate filename extension for .swf. They can't get rid of .swf, because that would destroy backward compatibility, but they could easily make the Flash player capable of knowing that .flash, .fsh and .swf are all the same type. And they could encourage people to start using .flash instead of .swf.

    That would clear up another big confusion.

    ReplyDelete