Top 20+ Things every Senior Flash Developer should know

by Sidney de Koning

Lately I’ve been doing a couple of job interviews at the place where I work and what I notice is that people give them self more credit that they have. I guess this is human :). But if you apply for a senior function, you also need to have a specific skill set. If you say you have the skill but cannot show it in practice, we have to fire your ass again and that’s bad for both parties involved.

That is what this post is all about, I’ve tried to compile a list with things that I think you need to know as a Flash Developer. (The first 10 points are written by John Lindquist. So John if you are reading this, I credit you for the parts you wrote. I love you :). The original article can be found at Johns site some stuff was written by Grant Skinner and can be found at this blog post. Grant I love you too!). The rest I wrote.

1. The Elastic Racetrack
You need to understand when events fire, when code is executed, and when the player renders. It’s really the foundational concept of Flash Player.

2. FlexSDK, mxmlc, compc, and all that jazz
You need to know what’s going on when you hit that “run” button in Eclipse.

3. Player Events, Custom Events, Event Bubbling
I can’t imagine where flash player would be without frames and mouse clicks.

4. Statements, Keywords, and Directives
You should never be surprised by a new “word” in as3. If you don’t know what “static” or “override” or others are, learn them. Now.

5. ASDoc
Someday, you’ll re-read your code and have no idea what it does. The stress here is on proper documenting, but generating asdocs is nice too. ASDoc is a tool that does just that, generating documents from comments in code.

6. Managing visual assets (images, fonts, CSS, etc)
Flash is visual. So you need to know how to manage assets with code.

7. Arrays, Collections, Dictionaries, Mapping
You’re not just working with one MovieClip here, so you need to know how to control multiple objects at once.

8. Know the difference between MovieClip, Sprite and Shape.
And know when and how to use them. What is used for what circumstance and what is lighter.

9. Programmatic motion (tweening, easing)
If you wanted things to stay still, you should’ve stuck with HTML

10. Programmatic drawing (assets, gradients, fills, lines etc.)
Since Flash is all about being visual, take some time to understand why you need to draw stuff in comparison to using assets. Drawing is much faster and takes up less memory. Lots of assets bog down your application.

11. Cleaning up.
Understand how the Garbage Collector works, how you can make use of it and how to dispose objects, listeners, graphics and other stuff you don’t use anymore.

12. OOP and Coding Against Frameworks
The days of a one huge .as file are over. You need to smartly move your code into organized and reusable objects. Also, now there are plenty of popular AS3 frameworks to help manage your code. Read up on them and start using one.

13. Version control
Unless you think your code is worthless, you need to learn how to back it up properly. – SVN Application for Windows – SVN App for Mac

14. ANT
If you start working with an industry standard IDE like Eclipse or FlashDevelop, there will be a day when you need to automate the build- or other processes with ANT. Its fun, its easy and you should learn it :)

15. Know Your IDE
No matter what IDE or editor you use for writing code, make sure you knwo how it works, know the shortcuts, know the file compare function, know the search and replace. Let it work for you, not against you (or your time). If you don’t, make sure you spend some time getting to know it, it is well worth the time.

16. Know you MVC from your Factory.
Design patterns, use ‘em wisely.

17. Good Writing skills (for team / client communication, documentation, comments, etc)
I’d rather hire someone with good writing skills than someone who cant write. someone who writes knows how to structure things and can explain things clearly.

18. Verbal communication and interpersonal skills for team / client interaction
No explanation needed really ;)

19. A drive to learn and experiment.

20. A love for problem solving.
And of course the ability to think logical and methodical. And look at problems from a higher level.

BONUS: 21. Community awareness.
What is happening around you in the development/Flash world? What libraries exsist? What framework are out there?

BONUS: 22. Reasonable understanding of UX and interaction design / feeling for design.

If you have more to share, don’t agree with something or want to shout at me, post a comment!