Sunday, August 15, 2010

Scrum (Part 1: Planning & Poker)

One of the things I have really enjoyed here at Sony is working within a Scrum.  I plan on covering this topic in three separate posts.

1. Sprint Planning Meeting
2. Daily Scrum
3. Pros/Cons

Lets start with the basics... What is a Scrum? As Wikipedia says:

Scrum is an iterative, incremental framework for project management and agile software development.
That seems a bit wordy.  I typically read at a 5th grader's reading level, so from my perspective: its a process for breaking up a large project into manageable bites.  In Sony's case, 2 week 'sprints'.

At the beginning of each sprint we hold a Sprint Planning Meeting, which is the official title for figuring out what the hell we need to do in the next two weeks to meet our deadline.  This meeting usually starts by prioritizing the list of 'stories' we need to complete and estimate how long each one should take.  A story could be 'I would like to able to log in and out of the game.'

We (anyone involved in this story) then estimate how long this story will take to complete by using Planning Poker.  Planning Poker involves giving each person a deck of cards with numbers on them representing days of work.  Each deck has cards with numbers (1,2,3,5,8,13,20,40,100,?).  Each person decides how many days he/she thinks the task will take, finds the appropriate card (rounding up), and then at the same time everyone flips over their cards.  So if you think a task will take 6 days, then you will find the 8 card and flip it over.  If everyone agrees, great, move on to the next story.  Otherwise, the people with the highest and lowest estimates plead their cases on why they think it should take as long as they estimated and then everyone gets a chance to pick a new card and flip again... this process continues until there is a compromise/majority.  Once a good chunk of stories have been estimated we look at how many days of production we have available for this sprint and figure out how many stories we can tackle.  This entire process of choosing and estimating stories usually takes most of our morning.

In the afternoon we meet with our teams (in my case, the client team or Flash team) and we break down each story into tasks.  A task might be 'Create a modal for when you get disconnected from the server."  For each task we then estimate how many hours we think it will take, using a similar process as above although we are usually less formal at this point.  We give ourselves 6 hours of work each day to buffer for everything that comes up during a normal day as well as to help counter underestimating on tasks.  Tasking out all of the stories for the two weeks usually takes the remainder of the day.

Thus, we just spent 10% of our two week sprint in initial planning alone.  From here, we jump into our work while monitoring our daily progress.  I will explain in more detail in a future post.

Monday, August 9, 2010

My Sister is a Badass (Stippling, Pointillism, Portfolio)

Besides being a 5'2 buck nothing powerlifter, she is also incredibly talented artist.

Last year I helped her get her portfolio together by tooling around with a simple Flash site that takes one of her pointillism drawings and makes it somewhat interactive by using a custom particle engine, which you should check out here.

The pointillism/stippling pieces are incredible. They take her months of concentration and patiences to complete. But once done, they are truly impressive. If you have any beer drinkers & Yeungling fans in your family, check this canvas out on etsy. The detail on it is crazy... the pictures do not do it full justice.

If you get a kick out of her work, be sure to add her on flickr and follow her blog. She is working on a 45 North Wine stipple that I am sure she will be posting more about in the near future.

Alright, enough pimping. Back to work everyone!

Wednesday, July 21, 2010

Powers of the Subconscious (ref: Malcolm Gladwell, Jesse Schell)

I discovered my subconscious's persona. Its true. He was swimming around in my head this whole time. He is an old man with a short white beard and disheveled white hair. He has thick black rimmed glasses with a round frame. He tends to wear a purple robe and has a cartoon appearance that falls somewhere between wizard and mad scientist. He is very agile for an old man and is a mischievous prankster. I'd say he is roughly half a foot tall, lives underwater, and keeps within a turtle shell for protection.

Still with me?

I've been doing some reading lately and have been very much inspired by Malcolm Gladwell's Blink as well as Jesse Schell's Art of Game Design. I highly recommend both.

Each book touches on a similar topic: the power of your subconscious.

Gladwell focuses more on how it solves complex problems in the blink of an eye as well as impacts your daily actions without you even realizing it. Would you believe me if I told you that you would score 10% lower on a Trivia game if you spent 15 minutes before the game thinking about being a Football Hooligan? I don't have the reference in front of me, but read Blink and it has hundreds of examples like this that will make you ponder what is really going on in your head.

Schell mentions the subconscious in a chapter on brainstorming. He explains how powerful it can be at solving problems and coming up with ideas, especially while you are focusing on other things. Ever wake up and suddenly have the answer to a problem you had been working on for weeks? That is the subconscious at work.

Personally, I had always been under the impression that the subconscious does what it wants and if it speaks up, hopefully you are listening. However, both authors disagree with my assumption and they describe how you can practice, train, and hone in on your subconscious. Gladwell makes an effort to teach you how to be aware of its impact and to try to pick and choose when to let it affect your actions. Schell describes ways of keeping in touch with it, focusing it on a direct problem, and listening for the answer to pop-up down the road.

One way Schell suggests using to get in touch with your subconscious is by giving it a persona. Try to understand how it acts and picture in your mind what that person/thing may look like so that every time you want to 'use' it you can think of that image.

I tried this the other night as finished reading the chapter and was about to fall asleep. The first thing that popped in my mind was the tiny old wizard in the turtle shell I described above. Completely random, I know. Somewhat crazy, sure I admit it. But it could have been worse, it could have been...

Friday, July 2, 2010

Which Developer Tool to use for Flash AS3?

Sony has an interesting Flash Dev setup here in Tucson in that each developer can use whatever tool they want. Typically, I have always worked on teams where everyone used the same tool. But here, they want you to use whatever you code best with and the projects are setup in such a way that it really doesn't matter. There is an ant build template that everyone copies & customizes for compiling. As long as you exclude your customized ant build and your personal development files (such as a flex project file) then everyone is good to go and work environments are compatible with whatever tool you want.

Soooo, the question then is what tool do you want? I began my action script endeavors back in college in the Flash IDE. When I was at Simulex I upgraded to the FDT plugin for Eclipse in AS2. When AS3 came out, we switched to the Flex Plugin for Eclipse mainly due to the profiler. I stayed with the Flex Plugin when I moved to the Basement as it was and is a very solid development tool. When I arrived here at Sony and was given the choice of anything... I took some time and tried out three main options:

1. Some form of Eclipse (FlashBuilder, FDT, Flex Plugin)
2. FlashDevelop
3. JEdit (or a similar text edit)

I am not listing the Flash IDE as a coding tool. Its not. If you are using it, promise me you will spend 1 week and learn one of these other tools... you will not regret it.

The first option was my top choice coming in since I had been using one form of Eclipse or another for the past 4 years. Its a solid tool with the standard bells and whistles of autocomplete, jump to method/class, code highlighting, etc. Adobe is backing it. It integrates into SVN, CVS or whatever check in/out system you are using. You can get errors on save which is a nice little feature. And it manages multiple projects and libraries very easily (this is the main reason I have stayed away from FlashDevelop in the past). On the flip side, it can be a bit cumbersome, seemingly overly complicated, and sluggish. Its almost as if it is trying to do too much.

I was very curious about the 3rd option which is JEdit since I had never customized a text editor for actionscript coding before... it seemed very l33t ;). Chris Hill, the technical director here at Sony, made and excellent plugin called flexulous which allows you compile ActionScript or Flex projects in JEdit. The beauty of JEdit is that you can customize it in a million ways with all sorts of plug-ins as well as short-cuts to increase your development time drastically once you have been working in it for a long time. The downfall of JEdit is that it does not have any suitable jump to method/function plugins, auto-complete, or instance highlighting (tho it does have syntax highlighting). I really tried to give JEdit a chance because I feel it could fit very well with time. And who doesn't want to be l33t??? but I rely too heavily on jump to and auto complete to dive in completely.

Finally, I tried FlashDevelop. I have spent some time with it in the past but always left because it can't handle multiple projects without opening multiple instances of FlashDevelop, which I still find somewhat ridiculous. However, now I will be working on a single project for months at a time instead of jumping between 5 projects in a single day so multiple projects are no longer a deal breaker for me. With that hurdle out of the way, FlashDevelop is a happy medium between Eclipse and JEdit. It is a focused AS tool and therefore not as bloated or slow as Eclipse. It does has the main bells and whistles such as auto complete and jump to, but it is lacking the highlight occurrences that Eclipse plugins offer. I found an OK plugin that allows for highlighting all occurrences of whatever word you have selected... its not as good as Eclipse's highlighting since it doesn't take syntax into account and it doesn't give you hot-spots to jump to on your scrollbar, but its better than nothing. It has some very nice snippets and macros which are fairly customizable, not quite to JEdit's level but seem to be an improvement over Eclipse snippet tools.

Overall, each tool has its pluses and minuses and all of the options can be solid choices, it just depends on your personal needs. For me, FlashDevelop seems to be the happy medium and it is now my editor of choice. If I wind up jumping between multiple projects throughout the day then I would most likely switch to FDT or FlashBuilder. And if anyone created plugins for jump-to method/function, auto-complete, and instance highlighting in JEdit then I would jump ships as well since JEdit is amazingly customizable. In the meantime, I'll be happily chugging away on FlashDevelop.


Now I wonder if anyone is going to make me eat my words from a year ago? Iain? ;)

Wednesday, June 30, 2010

Facebook Throttling: A Bird's Eye View for Game Developers

Facebook Throttling... What does that even mean? To the average Facebook user, not much. To a Facebook game developer, quite a bit.

Basically, Facebook Throttling has to due with the number of invites Facebook allows each user of an application to send out per day. The more invites Facebook allows, the more viral potential the game has. A game whose users can invite 20 friends a day is going to have a chance of spreading exponentially while a game whose users can only invite 3 friends a day is going to struggle.

So how does Facebook decide how many invites each game gets? Its science. Facebook keeps track of all of your game's social interactions. These interactions include invites, but they also include gift acceptance/request, sharing, etc. Facebook is interested in knowing the ratio of accepted interactions versus denied interactions. Therefore, if 1 out of 10 people accept an invite to your game you will have a low acceptance rate and then Facebook will "Throttle" your game and lower the number of invites players can send a day. However, there is a trick. Gifts sent to people already playing the game (such as your neighbors in 'whatever'-ville) also count towards your ratio. Players are much more likely to send gifts more often than invites AND they have a much greater chance of being accepted than invites. By integrated gifts heavily into a game, the developer is helping to insure their game has a positive ratio and therefore Facebook will increase the number of invites one can send out a day... or at least not Throttle it back.

I am not sure how I feel about Facebook's logic on this. On one hand they are promoting games that people are accepting and promoting. On the other hand, they are promoting games that spam people with gifts. Hmmm. There is an argument that its not spam since they are accepting it... but sometimes it can feel that way. The only compromise I can think of is to only use invites in determining their ratio. Ignore Gifts. Ignore Add requests. Ignore wall shares... etc.

We'll see if my opinions change once a get a few games under my belt.

Sunday, June 13, 2010

New Job. New State. Still Ugly.

Besides a study abroad stint in London, I've never lived outside of Indiana. Right now I am typing while sitting on the floor (I have no chairs... or table for that matter) in Tucson Arizona. I accepted a job with Sony Online Entertainment and begin working full time tomorrow.

What does Sony want with a Flash Developer? Well, there is a huge gold rush for Flash based games in Facebook/social media. Google Flash Game jobs and you will get hits from Zynga/Playdom still growing, EA/Sony making the transition, and a plethora of startups trying to make their mark. And let me stop you right there before you mention farmville or mafia wars. I am sure some projects I work on will have similar features that many indie develops scuff at; however, it is my belief that the projects I will work on will have a bit more meat and strategy involved. At this point I should be very clear that this post and every post here-after are just my thoughts/opinions/etc. They in no way represent Sony. Just me rambling and spouting off.

I think that covers my bases. If you are in the Phoenix/Tucson area, hit me up. I am still trying to get a feel for the Flash & Gaming networks out here.

Friday, May 28, 2010

User Group Recap, Links, and Parting Shots

Thanks everyone for coming out this month to Flash Indianapolis. Great turnout!

Building Flash Indianapolis with you guys has been a blast this past year an a half. I am going to miss the meeting of the minds followed by the great conversations and nachos each month. However, I do plan on staying a member so I can keep in touch via e-mail, forums, and the like. So please keep in touch and stay active on the boards. I look forward to seeing where everyone takes Flash Indianapolis under Todd's guidance. Best of luck to you all. Keep in touch by following me here!

As promised, I have a bunch of links to post from the presentation:

First off, we have the amazing Third and Seventh video:
http://vimeo.com/7809605

Eric Romer's networking and social media hustle lands him a job at Headblade:
http://hiremeheadblade.com/

Vizibility - a way to tailor how people search for you:
https://vizibility.com/

Template Portfolio Creators:
Free: www.weebly.com
Monthly for your own domain: www.wix.com

Untested Template Creatorss:
www.behance.net
www.coroflot.com
carbonmade.com
deviantArt
www.indexhibit.org

Great custom portfolio example:
http://mightydream.com/

Crazy Resume Examples (I think I got this from Josh Corken)
http://ht.ly/1LIPF

Standard Templates:
http://jobsearch.about.com/od/sampleresumes/a/sampleresume2.htm

Feel Free to build off of my resume. Take what your like and improve on what you dont:
MarkGrossnickle.doc

Want to get into Blogging? Check out Goggle Blogger or WordPress.

Want to find Industry Professional Blogs to Follow? Check out Adobe Feeds or find employees of companies you look up to.

LinkedIn - Use it! Join groups, search for jobs, and find employees and HR reps of companies you want to work for and reach out to them.

Monster/Indeed/CareerBuilder/Krop - all great job searches. Refresh your resume occasionally to stay on the top of the list.

Last but not least... check out the cartoon: http://impoop.in/ (classy humor, thanks Eric!)

I think that is it for my brain dump. Feel free to reach out with questions.

Best of luck to everyone!