Archives

Steve Weiss from O’Reilly emailed me to ask what skills Flash and ActionScript Developers require, beyond the obvious, to progress with their work and careers. I tossed together a quick list, which wound up being longer than I expected, so I thought I’d share my response:

While I don’t think it’s an industry norm yet, I consider ActionScript Developer and Flash Developer to be synonymous. Flex Developer is not – it implies a knowledge of MXML that is not necessary to be a pure AS or Flash Developer.

Skills I would expect any experienced Flash Developer to have include:

This is not necessarily a comprehensive list, and it definitely has a lot of overlap with my “Things Every Flash Develop Should Know” talk, but I thought it would be worth sharing so that junior developers had a rough guide of valuable skills.

Did I miss something important? Disagree with a point? Leave a comment.

74 Comments

Well, every experienced developer should have those skills? I disagree. good developers are no allrounders. why should a developer have skills in photoshop/illustrator/fireworks? why should an AS developer have server knowledge? why of FMS and other remoting services?

in my experience those developers are a little good in each area, but in no area really good.

good developers are specialists. of course they should have very basic skills in those areas. but it’s no criterion for being a good developr.

Ah… one of my favourite arguments. Good developers are specialists. Great developers are generalists.

Without a basic understanding of what happens on the server, you can’t work effectively to integrate with both the web service and the team developing it.

Without a basic understanding of design tools, you are forced to waste a ton of everyone’s time to have a designer resize an image or make a tiny tweak to an icon.

Without having a high level understanding of the different server communication options available to you, you can’t make recommendations to improve that integration.

Being a specialist blinds you to opportunity outside your narrow focus. Being a generalist increases your value by allowing you to increase the value of the project through recommendations and increased efficiency.

Check out my talk linked above, I have a great quote from Dune (nerdy, yes) that touches on this topic.

I second the allrounder thing. I believe a good developer should have knowledge about anything that can interact with the Flash. How are you going to tell your serverside programmer what you need if you don’t what can be stored on the server. Also some setting on the embed code(html/js) can greatly impact the speed of your application so you need to be aware of that.

There’s also a matter of degree. Most Flash developers shouldn’t be designers, or UX experts, or video pros, or DB admins, but as I tried to convey in my list they should have a general understanding of those things. Yes, their overriding focus should be ActionScript, they may even see a benefit in specializing in a specific aspect (data visualization, games, etc), but to close yourself off from understanding the elements you are forced to integrate with limits your potential. In short, it makes you a code monkey – a dumb tool for writing code, and nothing more.

I like it.. and totally agree. I don’t necessarily think a good Java or C++ developer needs to have sound knowledge of porting graphics from Photoshop or Illustrator, but a good AS developer must know this. A lot of the other items, however, can be applied to most programming platforms. ActionScript is a special ‘monkey’ because of its origins and the media it’s targeted for.

I’ll agree with the idea that the more knowledgeable you are about the various “hats” involved in a project, the more useful you are, AND the more specialized you are in at least one area the better your team. It’s fairly stupid how the argument is often debated. In the realworld cases I’ve experienced it’s really NOT specialization vs generalization, what you want is someone who is specialized with a minimum general knowledge/ability. I want my designers to be far superior at design than my developers, but I want them to have an idea what the developers do, and vice versa, so that they can interact well and do more than the same old BS that we see on the web most of the time.

I agree with the list. Being a self taught Software Engineer I believe it’s very important to be well rounded. That being said, you should not try and be an expert in every field listed. Enough UX understanding to be able to speak up when a flow makes no sense, enough backend knowledge to know what is an extremely difficult task vs low hanging fruit, etc, makes you a much higher asset to a company.

One of the problems in our trade is that there are a lot of “specialists” who don’t know enough about the big picture (server infrastructures, databases, distribution options and other important areas such as communication, project management and design principles, to repeat part of the list Grant gives) to be able to successfully complete a project.

A broad general understanding, as per this list, is essential if you want to be seen as a solid professional developer. Gaining that understanding over years while developing your own focus on the areas you are particularly good at or really enjoy will make you a highly desirable and valued developer instead of just another coder on the team.

You’ll step up from coder (or code monkey, as Grant succinctly puts 😉 ) to advisor/developer – not a bad place to be.

It’s Flash’s ability to integrate with all these different components that makes it so unique. Flash dev’s are a hybrid. We get into Flash not only because of a our abilities to code, but also our graphic abilities. I completely agree with your list, Grant. If someone is looking to be more of a “pure” developer, then Flash is not for them.

I agree with the general concensus that being a generalist when it comes to Flash is a great advantage and makes for a more efficient workflow.

I find it a strange idea that some people working with Flash don’t want to know anything about other areas of production. For instance I’ve encountered designers who almost take a strange pride in not knowing anything at all about programming and other technical things. Almost certainly the reverse will be true.

Probably mathematics, algebra and some 3D knowledge could also be recommended… not only for doing 3D, phisics or games, but having some understanding in those areas is great to solve (and optimize) some problems inherent to graphic/motion programming…

Basic math is definitely a great suggestion. At the very least, being able to utilize and combine +, -, /, *, % and basic trigonometry is hugely beneficial – I’ll add it to the list. Algebra and 3D knowledge are definitely useful, but I wouldn’t consider them to be core.

I’d also be interested in comments on what are the “pain points” that people tend to run into while developing their skills. You’ve listed a lot of technologies, so obviously the list of pain points could be large, but if you have insight into what are the major stumbling blocks that can either really trip people up, or, once past them, really leapfrog them into the next level of competency and expertise.

I’d say as the very nature of being a Flash Developer involves multimedia related work, you need to have more than basic knowledge in more than a couple of those points to become experienced and valuable, for example, I’m a self taught Flash developer, 10 years of experience in the field so far (movie websites, online games, you name it) and I do this at my office, and for freelance works too:

Main Flash developer and AS support at my work, so I get to code all the complex stuff, also teach the other Flash devs new things from time to time(frameworks, code optimization and stuff like that).

Translate texts from english to spanish, spanish to english.

All audio related stuff form composing tracks to fix loops, audio mastering, etc. (I’m a musician when not working, been doing that far longer than Flash work).

Video formats exchange/compression and optimization.

Small server side php development, but only when the php/asp/SQL guru is on vacations.

As I can beat half of the designers around my office at photoshop and a couple of them at Illustrator too, I do graphic design when needed.

Guess who’s the one more appreciated and collects the biggest pay check besides the server side guru at the office?

My rather small list of skills (in my point of view) has landed me some nice and well paid freelance works around the world too, not bad uh?, and that reminds me of another skill useful for me and the field I work for (movies):

The ability to understand at least another language.

The point is, you want to make progress on your career, take the effort to learn and embrace more skills, your current ones are never enough in this times 😉

Great points, Grant. I’ve only been working with Flash/Flex recently (and I love it) and I’m certainly still in learning mode (probably will always be), but I have most of the rest of the list.

I’ve been developing for quite a long time. I’ve found that a well-rounded background and experience (i.e. a generalist) has served me and the companies for whom I’ve worked well. It has allowed me to see a bigger picture and come up with “out of the box” solutions that were exactly what was needed, but the “specialists” couldn’t come up with or create.

Obviously, it’s not practical to be an expert in every area, but it makes sense to make sure you know enough in each area so that you can do your job better and work better with other people that are experts in those areas (e.g. designers, sys admins, etc.) and your lack of understanding doesn’t have catastrophic effects for the project.

I’ve been involved in cleaning up a lot of other people’s messes because their knowledge was too focused and what they were missing caused the project to fail partially or completely.

The points you made are so true. Knowledge verse the ability to learn and adapt!

I totally believe that you aren’t the measure of what you have done, rather your potential/ability to do achieve. The ability to swim any waters, not to fear failure or learning something new (the same thing), to push yourself beyond your comfort zone.

A year ago I had 11-12 years web experience, most of that as a flash developer but I can say 6 of the points I missed (but I have other skills obviously), mainly due to the fact that my fulltime role didn’t involve those technologies and I was working with non-abobe SDKs/IDEs {hint: Lead Senior Flash dev at swishzone.com}. This was the path that I took and it gave other skills yet once I moved on I needed to break all of my comfortable methods and throw myself in the deep end.

Now after a year I know that I can tick all of those boxes and more. And it is completely due to the ability to learn, constantly push, research and involve myself with the community(again).

And most importantly listening to good constructive advice and ignoring gimps/those who don’t believe in your potential.

I don’t understand the specialists pigeon holed mentality. You need flash game experience? What is a game – maths,optimise scripting, physics, spatial maths, collision detection etc. Yet the industry expects working knowledge in what they want, which is obvious as they can’t gamble.

I have to say existing in a big agency driven industry like in Sydney, it is hard to find those willing to believe you when you say “you can achieve anything” but when you do meet those rare individuals/group you have to push it to impress.

Over the years I’ve found really good Flash devs tend to have their own framework they carry around and adopt from project to project. I think that is just a reflection of hard won experience not wanting to be lost (rather than they are library writers), which is ultimately what it is all about in flash. They also tend to be desperate for better to come along, and used to disappointment : ).

Perhaps this is covered by “Reasonable understanding of UX and interaction design”, but one thing I’d like to see made more explicit there is an understanding of accessibility issues – both in terms of making Flash content accessible, and knowing when Flash isn’t the most appropriate tool and making the same content available in a different format.

Great list. That’s extactly the things I’d expect from somebody I hire.

I’d add a elementary understanding of how the Flash Player’s VM works, handles GC and so on. I’ve seen too many fancy, well designed (code & graphics) flash projects, which refused to perform on an average pc. It’s like knowing the world you’re living in, I guess.

Great list, although I miss creativity and the ability to learn new concepts and apply them to previous acquired knowledge. I think those two outrank pretty much anything except the Flash Platform skills.

Next up: Flash Game Development, which brings in an unsorted bagload of multimedia, game-theory, interaction, psychology, additional math and some basic physics into the mix.

I am working with a advertising agency to build internal development capabilities, Flash being a major part of it, and I agree with every one of your bullets. I don’t think they are all of equal importance, like the external code editor, but have found that unless we’re supporting a single product, generalists are def. the way to go.

As @Wes wrote, I also think the list can be applied to any language specialist, not only Flash.

Even if at first glance the list might be a bit overwhelming, there is definitely more to add !

– Soft skills, like @Justin pointed out & @Elliot confirmed

– Knowledge of another languages, like @Freddy mentioned.

While keeping the focus and expertise in specific areas is important, as new growth areas continue to arise (just to name a few: web/Internet, mobile, platforms, frameworks) we need to keep up with different technologies and the evolving world around us.

The flash platform alone is evolving, we have different tools, frameworks and languages available we need to be master or at least be aware and not afraid to adapt.

I think times are changing. I have met more ActionScript developers who have only ever known AS3. Are we going to say that to be good one needs to have AS1 experience? I think the focus reflects you Grant, but is not true to the scope of real trends and career focus.

These guys are not designers really. They are focusing on building the code behind the presentation layer. On that point I know there are quite a number of shops that have now drawn that particular Flash distinction and the designers do not have an opportunity to code while the developers will not be opening Photoshop any time soon.

All of that to say, I do think the list might still reflect the history of how many Flash developers grew up with Flash, but I don’t think it is an accurate list of the skills that specifically make for a good Flash/ActionScript Developer. That list should look more like the list for any traditional develop but with a few Flash-specific client/server technologies included.

The list is good but not complete. A developer doesn’t have to know everything on that list or more. What is much more important is developer must be able to learn when he need specific information. Maybe developer wants to be specialist about ActionScript but this is not mean he/she shouldnt learn anything else. Other information are usefull as ActionScript.

From my perspective a developer should also know what is Silverlight, not because he loves it or he use it, developer should know that because it is a platform for internet and it is our job to learn what are the negatif and positive site of platforms.

Actually I do agree with Grant, altough I’ve read some comments here and many of them say that you don’t need too much stuff or need to learn other technolgies the list is focused in, as the title says, “Flash / ActionScript Developer Qualifications”. I mean, not just a developer but a Flash / ActionScript developer. I also have around 9 years working with the Flash Platform and a good ActionScript developer should really know all the points in the list. Flash is a very dynamic technology, we can communicate it with almost anything. not just web, so you need to know the limitations and advantages of the technology (flashplayer) and what you can do to solve those troubles.

I haven’t read every single comment, and not sure if this is covered in some of the more vague topics of skills, but I would specifically add some knowledge of gaining a web presence, things such as ISPs and installation and configuration of Web Servers as some clients may not even currently have a web presence and might seek advice in this area as well, so some general or specific knowledge in this area would be beneficial in providing a complete solution for someone who hasn’t a clue. I see myself as a generalist who has some knowledge across many areas of computing, expert in nothing, but understand how to resource things out of my current skillset.

The importance of specialization often hinges on the size of your company (if you have 20 very busy Flash devs you can have one who’s a server comms Ninja) and the strength of the job market. In a depressed market like we have now, we have a limited number of full time Flash devs in our web department, and those guys are going to have to cover a wide variety of tasks. Plus the closest thing we have to an AS3 specialist is now learning a lot more about the Flash IDE to help us get things done.

Also, I agree with @nilanjan.rc above, I think one of the most important skills in a Flash developer is understanding the eccentricities of Flash and knowing where the IDE and the compiler have breakages/odnesses. Working knowledge of a tool isn’t just knowing what’s in the manual, it’s knowing where the published rules don’t perform as stated and not losing a day in a tight dev cycle to figure out the workaround. We might call them “undocumented features” 😀 I learnt that the hard way in my html/css days, knowing that the html spec is a document of hope more than a statement of working fact.

Now this might be getting too specific: if we’re talking Flash in an advertising environment, I know I spend an awful lot of my time having to deal with the Atlas, Double-Click, Eyeblaster and Eyewonder publishing platforms. On almost every project I have to make requests and recommendations to producers and designers based on knowledge of these, and it effects the way the Flash is built from the outset. I’m also endlessly helping our new Flashies with those platforms, and if we find one with that knowledge at the hiring stage, that would help them get in the door.

Well, I see some points. Wes Grubbs wrote that other developers need no skills in photoshop or illustrator, but AS developers need this? Why? The only reason can be that flash was an animation tool and before some years you need to be an allrounder. But now you don’t need this skills.

Of course you need an very(!) basic understanding of everything around flash.

I know many developers and many very good developers. If I took your list, most of them wouldn’t be good and even some of the not so good AS developers would be rated better then the very good ones.

Nice list. Anyone have a good suggestion dor a solid resource to help understand design patterns? I’m a designer turned dev and I pick upmost of the list pretty easily, but design patterns continue to throw me for a loop.

To the list I would add: Estimation. Someone who can estimate well on a project has usually become not only technically savy, but has a history of evaluating their own performance (and perhaps that of their team).

An exhaustive list, and informative. I think UX is probably one of the most important, and difficult to implement parts of being an AS developer and it fits closely to the system architecture. So I think being a thorough planner is also extremely important.

I would say that UX is probably the most important aspect of the development process as it affects the entire architecture and design process. Keeping this in mind, being a thorough planner, communicator and team player are vastly important, regardless of what skills you have.

In regard to remoting, a simple event driven MVC model using PHP and a free database is usually enough. I find AMFPHP a bit clunky especially for smaller projects, when you can just pass a URL request and pass the variables inside an event. Very easy to implement and also robust.

Wow, that is a big list. I agree with almost all of the items. Only “external code editor” feels like a stand-out, more a plus then a needed skill in my eyes. But what really bugs me is a lack of a skill I find myself hard to describe, and which I think is the most vital for any developer.

I would call it the ability to read and visiulaize code, or more accuratly the logical structure behind the code. This isn’t the same as knowing actionscript, a language is just a syntax. It’s the ability to imagine the logical construct your program will become and the ability to transfer that to code. I’ve seen lots of developers who copy-paste code and use it without truely understanding the structure behind it. It’s this understanding that enables both debugging and using design patterns, the ability to imagine the program as a logical construct.

In regards to design patterns, I find “actionscript 3.0 design patterns” by o’reilly (william sanders & chandima cumaranatunge) to be one of the best books I ever read on D.P.

This list is awesome. I think what it highlights is the most intrinsic quality to a great developer, someone who likes to problem-solve. And having that quality will take you to all sorts of places and you will learn many different things.

I’ve been a little disappointed lately with the realization that it’s not common to enjoy problem-solving, and that in fact most people are content with knowing just enough to get by.

– plays video games (we are interactive media and gaming is always on the cutting edge)

– can admit to mistakes and learn from them

Man that last one is a BIGGIE. I’ve had dudes on my team that would blame everyone else for their mistakes. The problem is that if they can’t admit they messed up, they will never learn from it or improve and that, from what I have learned, is a hard quality to manage.

This really depends on what you are doing with Flash. Are you web implementing? Are you game developing? Are you etc.

I looked at the list as a game developer, I feel that I am a 9/10 flash developer, I have use every version and been an advid fan for years… the general list is correct if you implement website designs etc. or write extensions for Flash etc. but as a game developer there are just some things that you will probably never touch.

My skill set is with everything on the list. But here is what the list should like if you want to be a games developer.

-High level understanding of server development and databases (not necessary an ability to implement anything, but a small amount of experience / understanding of the models)

-Basic understanding of HTML, JS, CSS

-Integration with HTML, JS

The flash business is still in Black and white, filled with amateur and professional developers, and we as professionals try to help out the amateurs and vice-versa and this is what I really love. However the Black and white eventually has sound and then color, then the credits list become longer than a novel. The Flash business will soon enough become untouchable to amateurs as the boundaries move further in the favor of the professional as we have seen with Flash 10.

I like the way it is and I enjoy debating this kind of topic so I hope I add something to pot.

To someone who said an external code editor isn’t important – if you’re not using one you’re being extremely inefficient. Use FlashDevelop for a few weeks and you’ll loathe coding within Flash for ever more.

@Sean – you _cannot_ make a game without programmatic motion – so it is 100% essential. That is just silly to suggest.

Lastly the list is a bit like life – being a specialist makes you ‘dumb’ in other areas.

Grant, I think some of those points are redundant. Have you ever met an experienced programmer without problem solving abilities. Yeah? How long did they last before getting the sack? (Don’t name anyone of course if you have =p) I do think you are correct regarding the: UX, design and animation side of things. All to often really good devs have problems with Developer/Designer work-flows.

The basic English/Math requirement should have been taken care of as part of the candidates Degree? Although, that’s not to say *all* experienced Actionscript Developers have or even want Computer Science Degree.

Grant, some agencies I have worked for in the past require all candidates to either sit a short exam or complete programmatic tests infront of a lead dev such as: “fizz/bang”

Grant, I think some of those points are redundant. Have you ever met an experienced programmer without problem solving abilities. Yeah? How long did they last before getting the sack? (Don’t name anyone of course if you have =p) I do think you are correct regarding the: UX, design and animation side of things. All to often really good devs have problems with Developer/Designer work-flows.

The basic English/Math requirement should have been taken care of as part of the candidates Degree? Although, that’s not to say *all* experienced Actionscript Developers have or even want Computer Science Degree.

Grant, some agencies I have worked for in the past require all candidates to either sit a short exam or complete programmatic tests infront of a lead dev such as: “fizz/bang”

Let me start by saying, and at the risk of summoning the rath of “real” developers, that I came into Flash development from the design and production world. And most of the Flash developers that I know have taken the same route. So although I agree with what’s on this list, I can say with some confidence that a large portion of Flash developers out there do not possess all of what’s in it including myself. I’ve learned through self teaching and work experience. So if I haven’t had a need to use it chances are I don’t know it. I think the world of Flash development has, and still is, gone through a revolution. The advent of Flex, AS3 and Flash frameworks has attracted high end disciplined developers who are creating some really amazing work. Developers like myself were somewhat blindsided and are trying to play catch up.

I think that posts and discussions like this are being triggered by these changes. We’re in the process of trying to figure out what it takes to be a good Flash developer. And while I believe these discussions are essential for the continued growth of the Flash technology and it’s community I hope it does not serve to discourage those like myself to keep at it.

Building on jt’s point, I feel the list is simplistic in its assumptions. I – like a growing number of developers – have come to flash due to what AS3 and flex 3 have to offer. I’ve no knowledge of – or interest in – the timeline, Photoshop, Illustrator, Fireworks, video / audio compression, nor programmatic motion. The timeline has no place in my flex-based applications, I use Paint Shop Pro or Paint.NET to manipulate images and I can’t see me ever wanting to embed video or audio in an application.

Does this mean I’ll never be an experienced flash developer? I think the question moot, as from my point of view, its more about being an experienced flex developer. I’d measure that in terms of the knowledge of AS3 and the flex compiler & framework, rather than timeline knowledge. I’d expect an experienced flex developer to be able to tell me whether SS3 supports closures, abstract classes and generics, rather than be able to run an expensive image editor. I’d expect them to already know about various language “gotchas” I recently described on davidarno.org etc.

Flash has grown way beyond using that rather odd – and from my perspective, pointless – authoring tool “Flash Pro” to create games and annoying navigation bars and adverts on websites. These days it can even be used – via AIR – to create desktop applications. The concept of what makes an experienced flash developer needs to grow too.

Surely all that matters is the overall output and quality of the project that you’re working on?

Unless you’re a one man team, you’re more than likely to be collaborating on most of your projects with other team members who have different skills than you.

If you can’t make recommendations or help drive the project because your focus is too narrow or your understanding of other areas is limited, then your effectiveness in terms of influencing the output of a project is surely therefore reduced.

This to me is what sets apart a great developer from a good developer – somebody that’s not only great at what they do but also has a fantastic knowledge of other areas of the project, to ensure that their bit is integrated perfectly and the end result is a greater overall quality of output from the team.

We have taken a similar approach as mentioned above with regards to our online and mobile games platform development.

It has been crucial for us to make sure that we have more people who are not just the specialists in the respective areas, but as you called them “generalists”.

The result is a turnover on projects that is far greater. We used to encounter regular bottlenecks, but when we decided to work on broadening the skills base for a few employees, the results started coming.

I’m afraid I totally agree with this list. A good developer needs to have a good understanding about how all these things work together (from a helicopter view) and then this developer can be strong in whatever makes him feel better but it is extremely necessary be focused in something specific otherwise he may be in disadvantage all the time on front of the whole market. Something that I could add to this list is the ability of reading others code, that’s quite important in most of the jobs, during my last years working as a Flash Programmer more than 50% of the time I had to read others code for many reasons and unfortunately this is something that not many people can easily achieve. easy… easy… not everybody likes your way of working and you may hate the others way.