Darkened Software

What happened to leaders having values

by on May.02, 2011, under Lessons

I have ran into way too many “Lead Programmers” lately that were not really leading but more like just holding things together.  These are smart enough guys that know what needs to be done and were successful at getting people organized enough to do it.  But they were not really leading the group forward, inspiring excellence or making their work environment a better place.  In fact no one on the team really knew what they stood for, what the future would bring or even why they worked for them vs anyone else.  If people on your team work for you because “It does not suck” you kind of have a big problem (although not the worst possible one) and are not getting the best out of your team.  Which means you have failed…

What gives, 10 years ago it seemed that every 3rd lead in our industry was a serious butt kicking freak of nature that was getting crazy amounts of work done.  Today it is not uncommon to go through 3 different companies before finding on of these guys.  I have a couple theories as to why the leaders in the game industry are not what they use to be just a short decade ago.  First, game companies have been trying to “Grow Up” and might have inadvertently taken this politically correct thing a little to far.  Leaders are now judged more on the results of the “360 degree” reviews held every year and less on their ability to get their team to produce great results.  Thus leads have adapted by becoming the lowest common denominator in terms of their personality so they never get negative remarks in their reviews.  It makes them safe; Safe = Bland; bland does not inspire.

Now this be itself does not have to be a problem if leads could pick the people they work with.  They would just hire or gather people that like their motives, personalities, directions, values and then they could both inspire people and get good 360 degree reviews from everyone.  But the second problem is companies do not like the HR management restrictions this causes, they like the idea of being able to move anyone anywhere at any time and thus vastly overvalue leaders that seem to be able to manage anyone.  Well that is fine if you never want great performance and just lowest common denominator output from your teams.

Maybe I am just getting old and bitter but I do not want to spend the rest of my career trying to please everyone just to end up hating myself more and more each day.  I want to collect a bunch of people that share some common values and charge off into the world of orders of magnitude more productive and happier team than 90% of the other ones out there.  I am more than willing to accept that not everyone will like working with me or in the environments I create for my teams.  They should move on and find a place that better meets their need, companies should recognize that this is a good thing.  Because if they allow a leader to build a team that gets inspired it will make the rest of the teams in the company look like they are standing still.

Likely you can’t get your company to change their review policy’s for leads and they are unwilling to give you more control over who gets assigned to work with you.  One thing you do often control as a lead is the people you hire into the company even if they are not on your team.  So during every interview I try to impart on them what environment I am creating and find out if they are going to respond well to it in case I work with them on the next project.  My top 3 values that directly influence my teams environment.

  1. Accomplishment – My biggest motivator is to succeed at something, thus I now only pick projects that can be made to succeed and then make sure they do.  There is no more fighting the good fight but it was sadly doomed from the start, there is only time spent charging toward the inevitable ship parties.  Its not that I do not like a good challenge, challenges are the times you learn the most and I like to learn.  But I am not longer young enough to believe I can move mountains with my bare hands and old enough to know that if I am asked to I can just move on.
  2. Impact – My second biggest motivator is creating something that will make a difference, thus I now try to only pick project that when we get done there will be a shot heard around the world.  Long ago I lost the ability to make myself happy solely through the learning that came just by working on anything at all.  I am now experienced, somewhat jaded so I need projects that if completed there will be a payoff that satisfies higher psychological goals.  No more crappy clone games or another under powered engine that will be forgotten once the company eventually goes under.
  3. Intelligence – My third biggest motivator is I only want to reach my goals through acquiring and applying knowledge to the problems in my world.  I do not want to solve anything through insane work hours, taking stupid amounts of risk, or anything else that causes enough stress that my non-work life is impacted.  If our only way to meaningfully contribute to a project is by is by dropping our lives and coding 14 hours a day till it is done then I am not going to be signing us up for it.  Every day we are going to learn more so we can do it better and faster than all the rest which leaves us more time to learn and get even smarter.

Now there are 50 or so values that leaders could have selected from as their top 3, and they are all going to sound pretty good if you list them out.  Who is going to say they do not want want a leader that values honesty, family, creativity, caring, dedication or any of the other ones.  What they have to realize is that these are the 3 things that provide the greatest influence on a leaders every decision.  eg.  If I have surplus budget and the option to spend it on training for the team or pizza night at the bowling alley then given my values you know which it is likely going to get spent on.  If you are the kind of person depending on their work life for a good chunk of their social life then your going to be often disappointed and my team might not be the best fit for you.

The important thing is you figure out what your values are, how you are shaping your projects around them and make sure the team knows what it is signing up for and going to get back in return.  The right people will eventually build around it and then you can make the serious butt kicking freak of nature team that gets crazy amounts of work done while making it look easy.

2 Comments :, , more...

Waterfall, ISO 9000, CMM, Agile, Scrum, what fad is coming next

by on Apr.06, 2011, under Development, Lessons

Seems like every 3 years I am asked to learn a new system of project management that ends up being a 98% complete waste of time.  Why have there been so many systems created and thus so many books written about this single topic.

  • Projects are hard to manage because they are often complicated ( Budgets, locations, schedules, resources, cross group coordination, feedback, testing, customer satisfaction, marketing support )
  • People are hard to manage because they are always complicated ( Interests, skills, communication styles, personality, work habits, schedules, needs )

So “Project Management” is thus complicated * complicated = really dam hard.

The first factor is “really dam hard” problems take a lot of time to fully understand, plus even more time to develop a good solution and then several iterations to practice the solutions enough times that one will always get it right.  In terms of large projects this means people are going to fail at some level for many years before they get good at it yet less get it 100% right.  But we humans are not that patient of a species and we tend to treat big problem like small problem in terms of expecting resolution far too quickly.  If we do not get the results we want right away we conclude that the approach must have been wrong and there must be an easier solution.  Very rarely do we do enough research to predict what a reasonable path of improvement milestone would be and even if we do we commonly get sidetrack with just the rumors of someone else getting better results.

The second factor is every tech director’s misguided need to standardize across the company, they wants each group using the same systems so people are transferable within the company and their job of monitoring is easier.  But given that each project is very likely to be somewhat different than the rest of them this will only end in pain as square pegs get forced into round holes.  Still they try and after awhile a each solution fails to work across the entire company so they go looking for the next one instead of trusting their managers to build the solution each project needs.

The third factor is fear, fear that we are getting left behind in terms of process, fear that people will not want to work with use if we are not using the latest and greatest system, fear of not getting it right so covering your butt by taking a name brand solution.  Companies are more than willing to throw away all lessons learned by their teams just for the false hope of that some method will make the scary unpredictability of software development go away.

Thus millions of dollars get spent on books, courses, software consultants and seminars only to have each company end up roughly were it was before the last project management system came along.  Parts of the company will still be doing really well while other parts will still be under performing.  Not surprisingly it will be alone the lines of people have an understanding of the principles that influence development and those that do not.  So stop wasting time forcing processes onto your groups and just ensure they have the base knowledge needed to figure out what should be happening.

Our group just had Scrum shoved on it so each day the good little “scrum masters” we are gather around the whiteboard to update our color coded post it notes with what we are working.  Everyone declares what they got done, are working on next, what changed, and if they blocked on anything.  From this one tiny part of the bigger scrum process we can quickly find issues with trying to apply it to our project.

  1. We only have 8 people and this already takes 45 min – 1 hour ( wasted $’s ).  This is not going to scale well when we are 30 plus people in a year.
  2. Our dev manager and many people are out of the office quite a bit, why are we putting all our important information on a whiteboard were it can only be seen or updated by people standing right in front of it.  Microsoft spends a ton of money to give us great remote access to all our data which we have just rendered useless.
  3. Why is all our important information in paper form so it can not be shared, tracked, have versions or be compared to other groups.  I get it that it is more visible to the management people that might walk by ( also has to be a security risk ), but the price is not worth it.
  4. If anyone on my team waits an entire day to bring up someone that has him blocked I would like him removed, if your blocked there should be an email to the entire team about it instantly.

Seems if we had looked at the principles of communications we would have realized this system of post its would not work with our distributed and multi time zone team.  If we had looked at the principles of project feedback and constant improvement we would have realized that not being able to easily update and trend our data would be a issue on a long term project like ours.

“As to methods there may be a million and then some, but principles are few.  The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble”.  — Ralph Waldo Emerson  (1803 – 1882)

Leave a Comment :, , , , , more...

Job Interviews: People that close their eyes a little to much

by on Feb.04, 2011, under Interviews

I had and interview candidate that closed his eyes quite a bit during the interview.  I was not really sure what to make of it so I watched it for patterns and found that it happened often at the very start of his answers for a couple of seconds and occasionally during the middle of a sentence when he was suppose to be switching from overview to details.  Still not sure how to interpret this odd behavior I just made a note to research it afterward and move on.

Several papers on psychology later there seems to be two possible answers:

  • People that try to  visualize a problem might close their eyes for a second to help them focus on only seeing their representation of the problem in their mind.
  • People that are not confident or even scared of the results of their actions will close their eyes so they can delay having to respond or deal with the outcome.

If the eye closing behavior only happened just before they answered the question then the first explanation of visualizing their response to your question would make a lot of sense.  But given he was doing this as he responded to a question or as he needing to provide details that he would later have to defend the second explanation of lacking confidence make a lot more sense.

In this case the interview was going so badly that we did not need any more re-enforcement that the candidate was in way over their head.  But in interviews with more open ended answers to questions this could be a great indicator that although the answer sounds plausible the interviewee is just trying to run a “Hail Mary” response by you.

Related is if you do notice issues in their story do not start questioning the issue right away.  Make detailed notes but save up all the possible inconsistencies till the end and come back to them when you have got the full story already.  If they are being deceptive then putting time between their original signal and when you question them makes it less likely they will realize what gave it away and the time gives them more chances to mess up as they have to try and remember what they originally told you.

1 Comment :, , more...

Why game development Middleware pitches are wastes of time

by on Jan.31, 2011, under Development, Industry, Lessons, Programming

I am a really big fan of Middleware as there are many things I never want to be an expert on and just want to pay money for them to work.  I really wish that during the process of trying to obtaining said software I did not have to sit through the dreaded “Middleware sales pitch”.

Why do we have to sit through them at all:

Unlike other industries most game middleware companies will not just let you download their SDK, see if it works for you and then let you pay them money if you so desire.  They insist on coming and giving you a presentation before they even allow you have access to a time limited trial version of their SDK.  This makes very little sense, if I am coming to you to download your SDK then it is very likely I do not need to be sold on it.  What I need is time to integrate it and see if it solves my problems, you forcing me to meet with you is actually slowing down your eventual goal of selling me anything.  The only good thing you could do is bring with you so much information about best way to integrate it and other best practices that saves me time in my investigation.  But sadly these sales pitches do not contain this type of information…

Even worse sometimes we are forced to sit through them even when we are not interested in the middleware being presented.  For example someone above you in the org chart decides they like middleware X and unless you want it to be forced on you and your team you need to go to the presentation and ask the right questions to get it shut down.  These are the worst meetings possible as you have to piss off the presenter by asking “bad” questions and also make your boss feel like you are effectively dumping on his idea. 

How can we make them better:

Its unlikely we can make such meetings go away but maybe we can convince middleware providers of what they really should be providing in these meetings to make them a little less painful or more useful. 

A way too standard middleware presentation:

  • Most middleware presentations start of with a great little store of how middleware company x came to being.  Some guy in his mother basement had a mission to solve problem X and after years of blood and tears he has grown solution Y into the coolest company ever. 
  • Then they tell you just enough about how they solve the problem to sound impressive but not really give you enough information to see if it will work for your case.
  • Next they show you a bunch of really bad demo’s because they are not game developers and are too cheap to hire real game developers to build them examples that might prove anything at all.
  • They tell you about a bunch of companies that are using it but have not shipped any games on it yet.
  • They answer any questions about features with the standard “That is in the next version coming out this summer”.
  • They answer any tech questions with “It is easy”, “Send us an email, We will get back to you” or “Can’t answer that as it depends on the level”

But does this do us any good, they are telling a story of thier accomplishments and how wonderful everything is which makes them feel good but does not really help us in our struggle.  They need to remember that in order to get our money they need to tell us a story that makes us believe everything in the furture will much better than it is now.  The only way they are going to do that is by understanding our problems and convincing us they can and are dedicated to helping us solve them.

What are our problems:

  • Time ( the complete lack of it )
    • We don’t have time to write all the software we would like to
    • We don’t have time to find and hire all the people to build all the software we would like to
    • Most of us have very unmoveable milestones that we are under contract to hit.
    • Most of us have teams of people that are waiting for software to be done so they can be productive
    • When we have issues or questions we can not wait on answers we need them a long time ago.
    • Games are highly iterative and anything that slows down the pipeline is scary ( crashing / reliability / slow builds ).
  • Resources( aquire &  managing )
    • People with specific skill sets are hard to find.
    • People in general are hard to manage.
    • Large amount of hardware and software resourcs is a huge maintance cost
  • Money ( the complete lack of it )
    • There is not a lot of profit margin in most developer contracts so the team can not afford to be wrong very much.
    • Developers do not just get 20 million to do a game up front, we get a little bit each milestone which is usually just enough to each the next milestone.
    • Also our requirements change quite a bit over the project so we do not like to spend a lot of money up front as we can not get it back when things change.

So if they were designing a presentation that would tell us how they can solve our problems it seems like they would start the presentation off with a few questions:

  • Is there any experiences in your games you feel need improvments?
  • Is there any parts of your game development process that you would like to improve?

Then instead of giving us a shot gun overview of everything the have ever built they could focus in on solving our problems and concerns.  Now that they have our goals in mind how can they make us believe they can solve our problems.  The last part of the their problem is how to take us down the path between our problem and believing they can solve it in a way that is worth us paying them money. 

Most presentations really fail in this area as they might start off by showing us a very limited demo that only proves that their system will work in a most limited case.  Then they jump back to the very start of the process and show you how to set up the tools, build the assets and get into their simple test level.   The problem is from the very start I am not convinced it will work in my case so I am not going to give you my full attention to your demonstration. 

The improved presentation:

  • Show me that produce X can solve the problem at the scale and complexity I will be faced with.   This might mean going out and getting a game developer to build real world levels for you to demo with and not just showing us your internal test levels.   
  • Next show the real run time costs, be able to bring up memory, cpu stats.  I am not going to listen to the rest of your details if I do not believe that what your showing me could ever co-exist with my game.  Absolutly nothing turns a developer off faster than hearing “I do not know” to our critical runtime questions. 
  • Working backward show us the pipeline that gets the goods into the game.  If we do not know that it will not turn our finely tuned pipeline into the bottle neck of production we are not going to listen to anything else you might say.  Remember Time is our #1 development problem
    • How long does it take to run and how much will it add to our iteration time?
    • Can it be distributed?
    • On average how long does it take to integrate into a tool path?  Provide both examples and references.
  • Next part is the content generation iteself, again this must be shown on a real world examples.  I need to be able to determine total time for my game and how this might change the makeup of my development team.  If I can not figure out how long it would take me to process our assets then I am not going to risk switching my system over to something that is suddenly going to require massive outsourcing or hiring.  Remember Resources  is our #2 development problem
  • Support, turn around time, escalation procedures, avalibility ( I work nights & holiday, are you guys there too? ), ability to help debug, bug patching, source if needed, how often releases, how far back in releases do you support, how quickly do you upgrade to new console libs? 
  • Total Cost and payment schedule, what is the price for everything between now and when we are scheduled to ship.  There is way to much hidden costs in these presentations and we are always hearing things like $40k per platform.  But then 2 weeks later we send an email and get informed that email support is another 10k per year and god forbid if you ever need to get someone out to help you do last min debugging during ship.  Also can we pay over time so that is it does not completely restrict our budget?  Lastly Money is our #3 development problem

 These changes to a more customer concerns focused presentation would move middleware meetings off my list of least favorite development activities and might even make them finally useful.

Leave a Comment :, , more...

Game industry, there are server farms for hire!

by on Nov.22, 2010, under Industry, Programming

Seems in ~30 years we have come full circle on the transition from big university run servers to the desktop computer and back again.  With very accessible systems like Windows Azure and Amazon Elastic as soon as your personal computer or meager company network is not enough for the task you can submitting jobs to the big server farms and go on to other work while you wait for the results.  It is just like the 70’s except much faster, easier and not done on punch cards.

An interesting time in development when you think about it, anyone with a credit card and a little programmer time can now get server farm scale work done almost instantly without the lead time and overhead issues.  Since your renting time from a massive server farms even the size of your problem is really no longer an issue in so as much as your task is able to be subdivided and distributed.

In the game industry we are all tired of completely wasting  > 12 hours on a lighting builds that ends up failing right before a milestone because they are run on hobbled together network of users computers that run so slow because they are also being used to generate content.  Every company wishes they could run a 128 unit server farm like Bungie were artists just submit the job and then go back to doing other stuff.  But not a lot of publishers will cover the overhead for a little developer to build out a server farm for their game.

Well the playing field has just been leveled, get one slightly parallel threading aware programmer to port your lighting and other slow pre-processing systems to Azure and the whole export level process can get done in minutes for just a few dollars.

Think about it the possibilities are endless.  There are so many things I have in the past resisted from putting into the level pipeline because I did not want to make the already insane 12 hour build time even bigger.  But now those concerns effectively go away and one should put the collision optimization, lighting, audio pre-processing, texture optimization, pathfinding generation and everything else we currently know about today in there.   Offload it from your content generators computers and give them their time back to be creating pixels and levels for the game.

I can not wait to see what we will have in games when companies start throwing some real calculations at their levels as part of the iteration process.

Leave a Comment :, , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...