top of page
falotecynicar

The Mythical Man-Month PDF Ebook: A Must-Read for Every Software Engineer



Brooks discusses several causes of scheduling failures. The most enduring is his discussion of Brooks's law:Adding manpower to a late software project makes it later. Man-month is a hypothetical unit of work representing the work done by one person in one month; Brooks's law says that the possibility of measuring useful work in man-months is a myth, and is hence the centerpiece of the book.




the mythical man month pdf ebook



We also owe David DeWitt a huge debt of gratitude for the lifetime of work he has contributed as one of the small band of founding fathers behind technology that we all use every day, mostly without realising it. All major businesses actually rely, not on Big Data tools, but on relational databases. Your bank, your insurance company, your mobile phone provider, your police force, your hospitals, your online retailers, even Google and Facebook, along with most other websites, in fact just about every organisation with more than a handful of data, all these use and rely on relational databases.


All computer input goesto the clerk, who logs and keys it if required. The output listingsgo back to him to be filed and indexed. The most recent runs of any model are kept in a status notebook; all previous ones are filed in a chronological archive.


The control program manager had 150 men. He asserted thatthey could prepare the specifications, with the architecture teamcoordinating; it would be well-done and practical, and he could doit on schedule. Furthermore, if the architecture team did it, his 150men would sit twiddling their thumbs for ten months.


To this the architecture manager responded that if I gave thecontrol program team the responsibility, the result would not infact be on time, but would also be three months late, and of muchlower quality. I did, and it was. He was right on both counts. Moreover, the lack of conceptual integrity made the system far more costly to build and change, and I would estimate that it added a year to debugging time.


To understand scheduling a game you must first understand the phases of existence that all projects go through. While the absolute time of each phase fluctuates based on the overall project length, there are common ratios of time between them. The first stage is concept development. You are in a creative period when blue-sky brainstorming is the goal. At this point, you have no need for real schedules beyond simply setting a deadline for finishing these initial meetings. Upon completion of this phase, you should have a well-defined design document with discussion of not just the gameplay but also art and engineering-centric sections as well. This should take approximately 1/8 of the total timeline or about three months from a 24-month project.


The next stage is your prototype where you prove out the major unknowns, the foremost being the fun factor. This section is scheduled much like the whole game, only with an abbreviated timeframe, normally around 1/8 of the total project but sometimes growing depending on initial technology. Obviously, the more stable the tool set and engine you start with, the more likely the prototype would fall within the three-month estimate. If the prototype is successful, you should leave this phase with a strong understanding of what will make the game fun and an example program that conveys this idea. Along with this will also be a system-level task list with estimated time allocations for designing these new systems. In other words, all the major systems might not be done but you should know what they are and have a rough guess as to the manpower needed to complete their first pass. This is the phase when independent developers should begin shopping around to publishers. While some development houses are lucky enough to get signed with only paper presentations, showing up with a working prototype goes significantly further when trying to secure a deal.


Your next stage is preproduction, which is when the team tackles the remaining uncompleted systems through at least the first implementation. For example, your new experimental lighting system with dynamic shadows should be up and running along with the decision to continue work on it or cut it due to problems. You should also have your first couple of levels completed to alpha quality to extrapolate the effort needed to complete the remaining levels. The first level always takes the longest and usually ends up being the worst because your team is getting used to the process and the new game you're making. So you must complete two or three levels so the team begins approaching what the real world manpower per level will be. Once you've done this, you'll be able to map out the rest of the time frame and know if you need to reduce the level count immediately. This stage should take about six months from a 24-month project or 1/4 of the total project.


Now you enter full production, which is normally when your team hits its maximum size (without the extras needed for test, which normally comes on later). At this stage, the game should be fun and its entirety should be known. This is where your system level task list is constantly being refined into smaller and smaller resolutions. The process is becoming mechanical now as opposed to the freeform conceptual stages in the beginning. Your schedule is now the end-all be-all of the project's existence. You should expect this time to last about nine months or a full 3/8 of the project making it the longest stage. This section of development ends with code and content complete meaning everything is in the game the way it was originally planned. It doesn't mean the game has to be completely locked down as final changes can still be made well into alpha as long as proposed changes significantly improve the overall quality of the game with limited risk.


And now we're brought to the end, the final stage. It's here that you've reached alpha and beta, also known respectively at Microsoft as code/content complete and zero-bug release (ZBR). These stages are mostly defined by long crunch times. Programming is focused on bug fixing, the art department on final polish, and the test team ramps up to full capacity. The schedule is becoming less structured and instead the team is being driven by daily and hourly updates derived from the test team along with oversight from the departmental leads and producer. Your bug-tracking software essentially becomes your schedule as you make your final sprint, which normally lasts about three months out of 24 or 1/8 the total.


Once you understand these stages of development, you'll be better able to schedule them. One important point is that these fractions are meant to be guidelines, not strict rules. All projects expand and shrink these stages as they need them. While one project needs more time for prototyping, another needs less for production. Or perhaps your project is a simultaneous three-console release that will probably increase your absolute time spent in the final bug push. However, these guidelines should help you identify earlier when a particular stage is grossly beyond expectations. For instance, if you worked on a prototype for nine months, you shouldn't expect to complete the game in the next year. Your team obviously created lots of new technology and gameplay if it took nine months for a prototype, so ramp-up time alone when building the full game will prevent your team from finishing in the coming year. Working at Microsoft publishing has shown these time ratios to work successfully for many projects including Counter-Strike for Xbox, which was essentially a five-month project, and Whacked, which was a two-year one. These two projects had completely different absolute times but similar ratios between segments.


Creating a schedule first requires building a task list, which is in fact an expression of your design document. Are you building a racing game? Do you need a four-point suspension system? Do you need a flight control model? Is water surface dynamics critical to the boat level? Do you need a custom lightmapper? These game features need to be filtered into independent engineering, art, and level-construction tasks. The resolution of these tasks is dependent on where you are in the timeline of your project. We begin with system-level tasks during pre-production and constantly refine these as milestones are started, progressed, and completed. By the time you reach production with the major unknowns resolved, you should be able to make a valiant effort to refine the entire schedule down to days, but don't. Tasks should initially be timed at a resolution of about a week. Anything that needs to be completed in the next two months should be resolved down to days. Refining the resolution too much, too soon will be work wasted since the dynamic nature of a schedule will lead you to redo it anyway.


We now must lay this data into our schedule software. Put each person down for six hours a day for five days a week. Even if you expect a death march, don't start by scheduling for it. That's a sure bet at blowing your deadlines down the road. The six-hour day covers the time during an eight-hour day the person will be in meetings, taking lunch, or hanging out in the kitchen eating a muffin with the team. Remember to put in holidays. (I laugh every time I see a schedule with someone completing a task on Christmas Day.) And as a general rule of thumb, assume each developer will take one personal week of time every four months.


Now you might look down at your schedule and think something has gone horribly wrong. One or two people in the schedule will have way too much work that puts them months or even years beyond the rest of the team. Workload balancing is required to fix this problem. Move tasks to other developers, starting with the easiest, but remember as tasks move away from their ideal owners they may need additional time padding for someone not as familiar with the system. This is also when the idea of additional developers should be first introduced. If you have a hard date for delivery and the tasks just don't add up, start padding your team with TBD (to be decided) members. This true and honest schedule will be your ammunition to request more support from your boss. Fight the urge to simply schedule for a crunch this early in the process. If you can't get the people you need on this schedule, then make it clear cuts must begin now. By following these steps, you can start making these hard decisions early instead of in the final months. 2ff7e9595c


1 view0 comments

Recent Posts

See All

Comments


bottom of page