Model Refinement   «Prev 

Refactored Job Description

Client App Developer

Refactored Definition for 3 Job Descriptions
Refactored Definition for 3 Job Descriptions
  1. Client Application Developer
  2. User Interface Designer
  3. Server Developer

Initial definition

In this definition the distinct skill and tool sets are distributed into three distinct classifications. You initial reaction might be "wouldn't that be nice. But most organizations don't have the resources to use a different person for each job description." The point is not whether each job is assigned to a different person. The point is that the jobs may be assigned separately or together without losing sight of the distinct responsibilities and the corresponding skills and tools. Flexibility and focus have been improved. The result is a set of responsibilities that are easier to measure and manage.

Elements to consider with respect to Definitions

I should amplify a couple of points in my definitions. First, the purpose of refactoring is to make the software easier to understand and modify. You can make many changes in software that make little or no change in the observable behavior. Only changes made to make the software easier to understand are refactorings. A good contrast is performance optimization. Like refactoring, performance optimization does not usually change the behavior of a component (other than its speed).

Refactoring

Performance optimization

Performance optimization only alters the internal structure. However, the purpose is different. Performance optimization often makes code harder to understand, but you need to do it to get the performance you need. The second thing I want to highlight is that refactoring does not change the observable behavior of the software. The software still carries out the same function that it did before. Any user, whether an end user or another programmer, cannot tell that things have changed.