Friday, August 28, 2009

10 Things Every Senior Flash Developer Should Know

I've interviewed quite a few Flash/Flex developers as potential employees for Roundarch. The hard part for me is knowing exactly what questions to ask to be able to gauge a Flash dev's skill level.

So, I made a list. From my experience this list allows me to judge the skill level and experience of the devs I interview.

If you're not quite "Senior" level yet, read through the list and study up from the links. If this stuff is "old hat" to you, please critique this list add more references in the comments.

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.
http://www.craftymind.com/2008/04/18/updated-elastic-racetrack-for-flash-9-and-avm2/
 
2.      FlexSDK, mxmlc, compc, and all that jazz
You need to know what’s going on when you hit that “run” button in Eclipse.
http://www.senocular.com/flash/tutorials/as3withmxmlc/
http://livedocs.adobe.com/flex/3/html/help.html?content=apparch_08.html
 
3.      Player Events, Custom Events, Event Bubbling
I can’t imagine where flash player would be without frames and mouse clicks.
http://www.adobe.com/devnet/actionscript/articles/event_handling_as3_03.html
http://livedocs.adobe.com/flex/3/langref/flash/events/package-detail.html
http://www.tink.ws/blog/custom-events-in-as-30-dont-forget-to-override-the-clone-method/
http://jacwright.com/blog/70/how-to-listen-to-flash-events-that-dont-bubble/
 
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.
http://livedocs.adobe.com/flex/2/langref/statements.html
 
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.
http://livedocs.adobe.com/flex/3/html/help.html?content=asdoc_3.html
 
6.      Managing visual assets (images, fonts, CSS, etc)
Flash is visual. So you need to know how to manage assets with code.
http://www.gskinner.com/talks/flexlovesflash/
http://code.google.com/p/queueloader-as3/
http://code.google.com/p/bulk-loader/
 
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.
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Array.html
http://www.gskinner.com/blog/archives/2006/07/as3_dictionary.html
http://code.google.com/p/as3ds/
 
8.      Programmatic motion (tweening, easing)
If you wanted things to stay still, you should’ve stuck with HTML
http://blog.greensock.com/tweenmaxas3/
http://www.amazon.com/Foundation-Actionscript-3-0-Animation-Making/dp/1590597915/ref=sr_1_1?ie=UTF8&s=books&qid=1243014431&sr=8-1
 
9.      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.
http://www.adobe.com/devnet/actionscript/articles/oop_as3.html
http://www.actionscript.org/resources/articles/684/1/Object-Oriented-Programming-in-AS3/Page1.html
 
10.  Version control
Unless you think your code is worthless, you need to learn how to back it up properly.
http://tortoisesvn.net/downloads
http://versionsapp.com/
http://en.wikipedia.org/wiki/Revision_control
http://git-scm.com/
http://www.nongnu.org/cvs/

57 comments:

  1. Great list John!

    I will say though that I think these are all things not just a Senior should know, but mid-level developers also. I think you're right though, this is the minimum for a solid senior really.

    Thanks for yet another great post!

    ReplyDelete
  2. John Lindquist10:27 AM

    @Jeff - Just as a reference, this list doesn't cover what a "Flash Architect" should know. Which is one level up from "Senior".

    ReplyDelete
  3. You are missing one of the most important skills ANY developer should know: How to be work with and be part of a team! Large scale Flash applications at this point in time are no longer one man jobs. If you can't go with the flow, contribute where appropriate, and communicate with your peers you will never be able to make it to the next level of architect or team lead.

    ReplyDelete
  4. [...] 《10 Things Every Senior Flash Developer Should Know》frompv3d.org [...]

    ReplyDelete
  5. One important skill is a basic of math, that really make all difference for a senior. cheers!

    ReplyDelete
  6. Useful insights from a trainers' perspective John, thanks for posting. It's good to know that many of the areas we stress as important in training are aligned with the 'real world', and I may look at covering more in the fields of docs & version control too, now.

    ReplyDelete
  7. seand5:08 AM

    I think some kind of conventions is good so that code is easily transferable between team members.
    Flex team provides some basic conventions http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions#CodingConventions-Formatting

    ReplyDelete
  8. [...] So here is a list of stuff you need to know when you say you are a senior Flash/ActionScript developer: http://pv3d.org/2009/08/28/10-things-every-senior-flash-developer-should-know/ [...]

    ReplyDelete
  9. Hendrik9:59 PM

    Nice list, seems I still got a lot to learn :)

    ReplyDelete
  10. Linto3:43 PM

    Great Resources!

    Now each developer can prepare for Sr. Developer ;)

    Keep posting good resources. Thanks

    ReplyDelete
  11. xmllo6:28 PM

    practice them from practice.

    ReplyDelete
  12. Ricky9:34 PM

    Great!! post, I wasnt aware about some of these though :D . I ll iprove these areas. Thnx

    ReplyDelete
  13. miru109의 생각...

    10 Things Every Senior Flash Developer Should Know...

    ReplyDelete
  14. For Version Control I would add some links like better SVN client for MacOS X users: http://www.syntevo.com/smartsvn/ (Basic Version is free and it's much more to Tortoise than "Versions" Client) and http://trac.edgewall.org/ for SVN remote http control

    ReplyDelete
  15. since AS3 and Flex these are pretty much the things a Junior should know.

    ReplyDelete
  16. Cedric11:12 AM

    Good to know, it seems that I am almost a senior then :)

    @Tom: if a junior should know all that stuff, what are your criteria for a senior developper ?

    ReplyDelete
  17. Sounds like
    10 things every junior flash developer should know!

    Man...these points are basics for every actionscript developer!

    ReplyDelete
  18. Pablo6:42 AM

    This is a good way to guide new programmers in the right path! greate stuff!

    ReplyDelete
  19. zorder6:13 PM

    this post helped me to better understand the flex profiler and find memory leaks
    http://blogs.adobe.com/aharui/profiler/ProfilerScenarios.swf

    ReplyDelete
  20. I'd say even junior and mid-level developers should be familiar with this stuff. At least at a basic level. A senior dev should be an expert in all of this and know it well enough to be able to teach it to someone else.

    One thing missing is design patterns and programming concepts such as controls, decorators, singletons, states, etc. Stuff that goes into building your own framework. Knowing this stuff really distinguishes the advanced developer from the intermediate, but maybe these fall under architect, as John said above.

    BTW, keep up the good work! I always find something useful here when I visit.

    ReplyDelete
  21. third link under number 7:
    http://code.google.com/p/as3ds/
    says "Forbidden"

    btw, great post! although i agree with cipriano, design patterns would fit nicely somewhere in this list, it helps application developers share a common vocabulary and prevents having to "reinvent the wheel" when solving many common complex problems.

    ReplyDelete
  22. Nathan5:06 AM

    #5 - My personal fav. "Someday, you’ll re-read your code and have no idea what it does" - SO true.

    ReplyDelete
  23. Hey John,
    you made a great list.
    A few links helped me on my current project.
    Thank you.

    Greetz
    Andy

    ReplyDelete
  24. Kenis1:08 PM

    I wrote an loader lib for my latest project which will load multi objects into flash, but I found it's not flexible enough and finally I found bulk-loader here, a nice, beautiful and flexible loader lib which I think will help most of flash developers.

    Thanks for your article!

    ReplyDelete
  25. Hernan12:24 PM

    A senior needs to really understand networks, how to load dynamic content and use sockets.

    Also, using tweens is not nearly as important as the other items in the list.

    ReplyDelete
  26. Great list - thank you.

    ReplyDelete
  27. Great!! post, I wasnt aware about some of these though :D

    ReplyDelete
  28. Good to know, it seems that I am almost a senior then :)

    ReplyDelete
  29. If I'm a flash dev why I should know about flex ?
    :)

    ReplyDelete
  30. [...] 近日John Lindquist谈到了在为Roundarch公司招聘Flash/Flex开发人员时的一些感受。他认为最难的地方在于问什么问题才能最好地了解到应聘者的Flash/Flex开发技能。因此,他给出了一个列表并说到:“根据我的经验,通过这个列表能更好地判断面试者的技术水平和经验”。 [...]

    ReplyDelete
  31. [...] 近日John Lindquist谈到了在为Roundarch公司招聘Flash/Flex开发 人员时的一些感受。他认为最难的地方在于问什么问题才能最好地了解到应聘者的Flash/Flex开发技能。因此,他给出了一个列表并说到:“根据我的经 验,通过这个列表能更好地判断面试者的技术水平和经验”。 [...]

    ReplyDelete
  32. [...]   John Lindquist认为Roundarch公司招聘Flash/Flex开发人员时的一些感受。他认为最难的地方在于问什么问题才能最好地了解到应聘者的Flash/Flex开发技能。因此,他给出了一个列表并说到:“根据我的经验,通过这个列表能更好地判断面试者的技术水平和经验”。 [...]

    ReplyDelete
  33. [...] 近日John Lindquist谈到了在为Roundarch公司招聘Flash/Flex开发人员时的一些感受。MySky他认为最难的地方在于问什么问题才能最好地了解到应聘者的Flash/Flex开发技能。MySky因此,他给出了一个列表并说到:“根据我的经验,通过这个列表能更好地判断面试者的技术水平和经验”。MySky [...]

    ReplyDelete
  34. [...] a list with thing that I think you need to know as a Flash Developer. (Some of it you can find here and [...]

    ReplyDelete
  35. [...] Un article très intéressant sur des questions que l’on ne se pose pas vraiment (mais oui ? Que fait le bouton “Run” dans Eclipse exactement ?) mais dont les réponses deviennent vite vitales. Ca se passe ici ! [...]

    ReplyDelete
  36. [...] W każdym bądź razie, notka jest inspirowana właśnie jego notką. Oryginalna treść 10 Things Every Senior Flash Developer Should Know dostępna jest na blogu [...]

    ReplyDelete
  37. Great list! I've also compiled a similar list that aspiring Flex developers may find useful. It is entitled "10 Things A Good Flex Developer Should Know" and can be found here: http://blog.flexdevelopers.com/2010/04/10-things-good-flex-developer-should.html

    ReplyDelete
  38. Pjakobsen10:51 AM

    10. Version controls. This is less about backing up, more about setting up the ability to collaborate, and experimenting with branches, etc.. If someone came to me in a job interview and told me that it's just for backups, I'd assume they were previously on Microsoft SourceSafe , and I wouldn't hire them. ;)
    But being a fan of your videos, I know you know this, and that's what you mean. So my apologies for being a smart-ass

    ReplyDelete
  39. johnlindquist11:26 AM

    No apology necessary ;) Very valid points.

    ReplyDelete
  40. Владислав Коробов8:20 AM

    flexSDK big part
    so AMF, design patterns, integration with server side...

    ReplyDelete
  41. Hey John, this list is great.

    I might suggest event logging, testing, and even CI.

    Thanks again for your community support!

    ReplyDelete
  42. Hi John,

    Nice post! As you can see from the twitter commentary i have a list on my site aswell where i gave you credit for the partial list i posted.
    I also came up with 12 items myself. Dont hate me, just spreading knowledge.

    If you want I can write an updated header to the post giving you credit for the items you wrote. You can DM me on twitter if you want.
    Kind regards,

    Sidney de Koning

    ReplyDelete
  43. johnlindquist10:07 AM

    Unfortunately, copy/pasting makes it look like you're just trying to steal traffic even if you do give credit. I doubt that was your intention, but with everyone trying to be the #1 rank on google it just feels like you're scraping content.

    Frankly, your post should be "12 things John missed" or "John is stupid and this list sucks" or "Ignore that idiot, this is what is really important". I honestly don't care that you use the same points, just re-write the supporting paragraphs to add your own point of view or critique mine. I won't be offended because we all learn from clear, honest discussion (and everyone loves the added drama of name-calling :) ).

    Anyway, I just saw that you updated your post, but I'd still rather see you delete my content and make your own list with your own words and opinions. That way you'd be adding to the discussion rather than just "spreading knowledge".

    ReplyDelete
  44. Hi John,

    I posted a 'X things John needs to add to his list' article on my blog, http://www.funky-monkey.nl/blo.../ , all new stuff, hope you can comment with a smile :)

    Take care ,

    Sidney

    PS There will be a followup on plagiarism on there aswell, hoping other people will learn from it.

    ReplyDelete
  45. Nice job! How about some optimization? As a game developer I need to optimize my AS3 code all the time to not leak any memory or use too much cpu, there are a few tricks here. Oh, and some design patterns maybe.

    - Istenes

    ReplyDelete
  46. [...] http://johnlindquist.com/2009/08/28/10-things-every-senior-flash-developer-should-know/ [...]

    ReplyDelete
  47. Thanks for the great list

    Thanks, very useful selection, I think to me it is useful.

    ReplyDelete
  48. Thanks for sharing this great information and really helpful and useful post for me.

    ReplyDelete
  49. Anonymous8:57 AM

    Senior Flash Developer need a computer to make flash.

    ReplyDelete
  50. Thanks for sharing the tips ,I will share this with my developer. I  think this would help him out to work easily .

    ReplyDelete
  51. Anonymous11:39 AM

    Flash developer is my dream

    ReplyDelete
  52. [...] MisterSaisho on Oct.28, 2011, under Uncategorized Tweethttp://johnlindquist.com/2009/08/28/10-things-every-senior-flash-developer-should-know/#comment-2838 Print window.fbAsyncInit = function() { FB.init({ appId: '136642053037999', status: [...]

    ReplyDelete