Best of Comments - by Jeff Ward

Quite often in the world of blogging, comments get ignored by the general readership. And that’s a damn shame, because often the comments are just as insightful, if not more insightful, than the actual post. To combat this, and in an attempt to open up dialog about the problems we all face as tools developers, we’ve decided to dedicate a post every so often (hopefully every Monday) to highlight some of the more insightful comments.

To start, Erik, in response to Dan’s 6 Reasons, give’s a 7th reason your game tools suck:

7. Not enough dogfooding
Often, the people who develop the tools don’t actually use them. This can lead to a number of problems, including an overly complex interface and a host of usability issues.

I absolutely agree here.  If you want anyone to make something better, make sure they have to use it in their daily work routine.  If this isn’t possible, I’d say at least make them sit, silent, in the same office as a user and witness all the user frustrations first hand.  Sure, you might loose a day of programmer time, but certainly gain a lot more than that in team productivity.

Anthony Brien comments on build process, making points about team communication and what I call isolated builds:

On large teams, you also need a way to effectively communicate with everyone the status of the build, you may want to block all other checkins until a fix, and if your team is large or in disconnected location, a system to know if someone is working on a fix to avoid multiple programmers working on the same fix.

[O]ften developers will break the build cause they simply do not have the time at each checkin to compile the multitude of targets (platforms, configs, tools, etc). It would take hours to validate at each change. Some programmers will rely on the build system, but this can paralyze the entire team.

The CI server Team City, though it lacks the automated pipeline system from Cruise, actually has a built in system to allow programmers (or others actually) to claim responsability for a broken build, and say they are going to fix it.  However, I think the actual solution to your problem a combination of an issolated build and a checkin gauntlet.  An issolated build gives you the ability for anyone to request  the speed and processing power of your build server using the code / assets on their machine.  This allows users to check their builds without checking in, which is nice (and saves you from the hassle of code lock downs).  The  check-in gauntlet is even better, and essentially it’s the ability to reject entire changesets from entering source control because they break the build or fail some other requirement (code review or user testing for example).  Unfortuantely, both of these require custom solutions, though apparently Microsoft’s Team Server has the ability to set up such rules.  It might also be possible with certain use cases of distributed version control (Mercurial, Git, Darcs or Bazzar) or with Perforce’s new bundling system.

Geoff’s posts on events and delegates brought in some questions about the use of boost, and questions about whether boost would be easilly portable to consoles, including PS3.  Here’s snk_kid’s response:

Most/all components in boost are independent of each other and self-contained.  However, they try to target many platforms and compilers so they have a relatively complicated header files and preprocessor configurations to deal with the varying compiler C++ ISO standard conformance and have workarounds (if they exist).

Pretty much the majority of boost components are generated from macro and template meta-programming (but some components do generate static/dynamic link libraries), most likely using Boost.Preprocessor (a very useful preprocessor library and works with pure C compilers) and boost::mpl (template meta-programming library).

I don’t know but (ignoring all the potential issues with compilers for consoles and hardware constraints) it might be a bit daunting to try and make a port but you can easily talk to the authors on the dev mailing lists. If there is something you’re not sure about.

So far, we’ve had a great first week with lots of great comments.  Thanks everyone for helping make the relaunch of our blog a huge success, and I hope you’ll enjoy reading in the future as much as we’re enjoying writing.

4 Responses to “Best of Comments”

  1. Geoff Evans says:

    > 7. Not enough dogfooding
    Often, the people who develop the tools don’t actually use them. This can lead to a number of problems, including an overly complex interface and a host of usability issues.

    Agree 100%. I am currently trying to combat this problem at Insomniac.

  2. Jay says:

    > 7. Not enough dogfooding
    Often, the people who develop the tools don’t actually use them. This can lead to a number of problems, including an overly complex interface and a host of usability issues.

    I have been there… this is absolutely awful when you are given a tool with little or no documentation. You don’t know how it works and the people who wrote it are nowhere to be seen…

  3. snk_kid says:

    Just wanted to comment on my comment before I give the wrong ideas,

    first of all I might be wrong for some Boost components (disregarding any potential efficiency issues and/or longer build times), some maybe trivial to port to consoles. It all depends on the C++ ISO standard compliance of the compiler you’re using (and it needs to be quite high) and resolving any platform dependent/specific components. I’m only aware of 2 C++ compilers for the PS3, one is GCC and the other is the SNC compiler. If the GCC PS3 port is based on a relatively new version of GCC then you will mostly likely have very little issues building boost, maybe none even.

    I know very little about SNC compiler but I just checked the SNC website and it basically says that the SNC compiler has enough C++ ISO standard compliance to support Boost.

    Secondly, none of this should put any PC developers, hobbyists, or tool-smiths off from using Boost, it’s a great addition to the C++ libraries which makes you productive and makes coding in C++ a little less painful (compared to other programming languages). We’ve used boost for tools dev. You never know, when all the C++ compilers catch up with C++0x you might end up using a component that was heavily influenced from Boost.

  4. Nick Darnell says:

    Dogfooding really is the key to making -anything- good.

    Also, from my experience the closer your tools team sits to the users, the more likely they will get feedback. We programmers are fairly sedentary creatures and if your tools developers are within earshot distance, the more likely they will be called over when something breaks or to hear valuable piece of feedback that just wont be captured by a bug report or a feature request.

    I would add one more to the list though after reading it,

    #8 Lack of Information Capture

    Users should have a dead simple way of sending feedback to the tools developers. If your group has a no/bad/complicated bug tracking system the less likely the developers will ever get the feedback they need because the user would rather live with an annoyance than deal with another bad tool.

    The more quantifiable information you can gather from a users uses of your tool, the easier you can make it for them to improve the things they use the most. Users can get in the habit of doing things in a way ‘that works’ but isn’t necessarily the best/most efficient way to accomplish a task.

    Automated crash reporting. Sure, your tool may dump some logs and other various files about what happened, but the users submitting the bug reports wont know to attach them or they may forget. If your tool crashes, have it report the crash directly to the tools team and cut out the middle man.

Leave a Reply