Darkened Software

Software should help you learn...


Hiring Lead Programmers for game development

Test their knowledge about programming:

Give them the 3 programming tests:
Test their knowledge about game development process: Pitch Stage:

Goals of the engineering:
Feedback to design group on feasibility of project.
Determine modifications of engine or research engine needs.
Determine schedule estimates.
Determine hiring needs of project.

Products produced:
Initial schedule
TDD
Hiring requests

Warning signs when things are not going well / corrective actions:
Design is completely unreasonable or not a layered system
Hiring schedule is completely unreasonable
Nobody wants to sign up for the project within the company

Pre-production: Goals of the engineering group in this stage:
Build the prototypes of new systems
Build demo’s if needed
Get the engine / tools in shape to for the game
Build full schedule
Hire if needed
Products produced:
Schedule
Feature designs
Testing plans
Hardware and software requests
Code reviews
Configuration management plan
Warning signs when things are not going well / corrective actions:
Tools are unstable or do not work
People are not hired
Features are not in for designers or artists to test with
Production Goals of the engineering group / lead in this stage:
Flush out engine features.
Keep the design and art teams running.
Optimize engine / systems / tools.
Build marketing demos.
Build milestones.
Produce builds for testing.
Pre-submit for acceptance testing and TCR’s
Keep bug count down.
Ensure schedule is being meet.
Products produced:
Demo disks
Milestones
Code reviews
Warning signs when things are not going well / corrective actions:
Missing milestones
High turnover rate
High bug counts
Can not burn bootable DVD
Low mean time between failure.
Artists or designers are frustrated
Changing design document.
Feature creep
Look working hours.
Post-Production / submission Goals of the engineering group / lead in this stage:
Kill the bug count
Enable testers can go to town on the builds
Ensure designers and artists can polish levels
Products produced:
Final disk
Warning signs when things are not going well / corrective actions:
Bug count is not dropping like it should.
Menu and other things that effect TCR are changing.
Game frame rate is unstable.
Low mean time between failures.
Game is not fun and testers do not like playing it.
Bugs are not passing regression tests.

Test their knowledge about engine development process:

Design:
What is process for creating feature list for engines from, who is involved, long does it last, considerations. Process for building the schedule and feature priority list, who is involved, how much is done before work is started. Who has sign off, how do you know the design process is not going well Production:
Feature sign off Test plans CM plan Distribution of versions, backward compatibility of resources. Support:
Documentation needed for engine hand off. Feature requests and bug support Setting up feedback loops with groups using it. Training process

Test their knowledge about interacting with the team:

Interaction with Producers. What information do you need to give them so they can do their job well How you are doing on the schedule, if not good what is wrong Material list, personal list you need to get the job done Interaction / employee interaction issues,communication breakdowns. Feedback on how to work with your teams personalities. Realistic schedules and estimates. What information / services do they need to provide you so you can do your job well. Isolate your people from distractions so they can code. Provide you with dependency information between the disciplines. Timely Information from marketing, testing, and the publisher. Shield from feature creep and other time requests. Interaction with Lead designer. What information do you need to give them so they can do their job well Honest evaluations of time and effort of feature requests / bug fixing. Honest schedule when features are going to come online so they can schedule their level building around it. Schedule for when people are available for training the lead designers on tools and producing documentation. Feedback and budgets on what can be done with the engine. What information / services do they need to provide you so you can do your job well. Test levels and test cases. UI design doc, done ahead of time so you can TCR it. Priority feature list. Sound list so you can budget it. Text list so you can localize it. Interaction with Lead artist. What information do you need to give them so they can do their job well Honest evaluations of time and effort of feature requests / bug fixs Honest schedule when features are going to come online so they can schedule their level building around it. Schedule for when people are available for training the lead artist on tools and producing documentation. Feedback and budgets on what can be done with the engine. What information / services do they need to provide you so you can do your job. Test levels and test cases. Priority feature list. Interaction with Director of Technology. What information do you need to give them so they can do their job well< Information about the people you needed and training you are doing. Information about the technology you want to create and the approaches you are taking on the project. Information about the status of the programmers working on your team, happy, ambitions. What information do they need to give you so you can do your job. Information about future tech directions the company is taking so you can prepare your teams. Information about what other teams are doing so you can share tech and resources. A people base to hiring from. Interaction with Publishers. What information do you need to give them so they can do their job. Information about feature times, priorities and tradeoffs Verifiable milestones and documentation Playable demo’s What information do they need to give you so you can do your job. Testing schedule and resources. Bug database, seperate, who controls, how bugs are removed. Heads up on change requests. Interaction with Hardware Manufacturer and submission process. Give them Pre-submission for TCR verification TDD, what are you doing for thier platform Networking beta test Give us Access to platform expertise.

Interaction with marketing. Give them Demo discs and ability to get or give them screen shots. Time and schedule needed to build marketing material and interviews Video Logs Developer Blogs Give us Heads up on needs for marketing materials Heads up on all requests for changes after project started and willing to accept no. Interaction with SQA. Give them Test Plan Machines they can debug on directly Replay system Direct bug reporting Give us Feedback on bugs Test reproduction steps Stacks, screen shots, video? Their knowledge about team development issues: Hiring and Team Building 1. How long was team together before project and on project? If not long why not? 2. What was the turn over rate on these projects? If high why? Was there multiple releases done, were you on it? If not why? Techniques used for finding programmers? Does it cover multiple methods? 3. Techniques used for interviewing programmers? Everyone on team or just them? 4. Specific things you look for in programmers? Does it cover tech, soft skills, design skills? 5. How do you develop programmer’s skills? Training you recommend, sending to conferences, time allocated to research and play around? Build libraries for them? 6. How do you ensure programmers are satisfied with their jobs? What steps do you take to ensure they are? 7. How do you ensure they are doing the best they can? Make sure they have all the tools they could need. Make sure they have access to people they can ask questions. 8. How do you resolve personnel issues? Personnel issues between programmers, personnel issues between yourself and programmers? 9. How do you ensure teams come together? 10. How do you build out teams for skill sets? 11. How do you compensate for individuals weaknesses? 12. List main reasons teams go bad. Leadership: 1. Size of teams and years of experience as lead? 2. Use of sub leads or schedule managers? 3. How do you reward programmers? 4. How do you discipline programmers? 5. What are the main values you stand for as a leader? 6. How do you keep moral up when things are turning south on a project? 7. List main reasons why people do not respect leaders. Scheduling and Project Tracking: 1. Techniques you use for building schedules? Request info from programmers, tools used. When to split up tasks between people and consequences? List most important things usually forgotten in schedules. 2. Techniques used for estimation process? Past data, query other leads if out of experience range? 3. How do you deal with feature creep? If they say they do not allow it then ask about publisher pressure. 4. List main reasons for schedule overrun. 5. What metrics do you track as projects runs and why? 6. What data do you gather in post mortems how do you structure them to ensure you get valid data? 7. How do you get accurate estimates of where you really are on the project schedule? 8. What are the range of actions do you take if you are slipping behind? 9. How do you ensure the art / design / upper management does not monopolize your programming teams time? CM: 1. Do you set up automated daily Builds? If so what are they? 2. Overview of your archiving system for builds? 3. Do you use Source Control System? 4. What is kept under source control and what is not? 5. If so give overview of labeling and branching setup for projects? 6. Rules set up for checkin / checkout process. 7. How do you handle broken builds? 8. How do you handle releasing builds? 9. How do you ensure you can recreate builds of the past? SQA: 1. Do you do code reviews, if so formal by other programmers or informal by lead? 2. Do you set up unit testing suites, automated regression testing? If so what tools and how is it handled. 3. Any debugging tools built into the app for testers? If so what are they? 4. Testing done before releasing tools and such to artists and designers? 5. Do you write the testing plan for the project or do you let SQA team do it? 6. In your mind what is the role of the testing department? Hoping they will answer that the test departments role is to ensure quality and not find bugs. 7. What testing do you ensure programmers do before checking code in? Design and Architecture: 1. What are the overall goals and their priorities considered when designing engines and tools. Risk vs moving ahead, ease of use vs time to code … 2. What Patterns or methodologies do you use for development schedule ie Waterfall, Iterative, what did you like or dislike about them. 3. What documentation do you have produced and why? 4. How was maintenance of engine / game. How was the extension of the design? How was doing a sequel or was it as one shot? 5. Run down the design of your artist pipeline to get their work in the game. 6. Run down the design of your designer pipeline to get their work in the game.