This paper will analyze several different approaches taken by software development in creating diagnostic modeling or fault isolation. The significance of these differences is not just technical. Different approaches vary widely in their performance, in how well they address different situations, and even more widely in the amount of work required to "teach" the software about each type of equipment. These differences translate into such important factors as deployment cost, and number and duration of necessary repairs. Two important aspects characterize each approach: 1) type of modeling (deep or shallow), crucial to the amount of work required to create, validate, and modify the fault isolation application, and 2) the attitude taken towards less common faults; can they be ignored if common faults are handled efficiently, or are they viewed as primary contributors to cost and delays? We will explain the different approaches to diagnosis and compare their relative advantages and disadvantages using simple examples.