Impact of Refactoring on Information Systems
As computers have transitioned from the days when they were measured in tons rather than megabytes or gigahertz, visionaries and bean counters alike have sought to realize the vision of automated processing and the paperless office. In many cases, computers have served as the glue that binds synergistic goals together. Object-oriented development made the shuffling of application building blocks irresistible. But these days computer professionals are the ones being molded, glued, and reshaped.
Not long for this world are the days of the developer who clocks in at ten in the morning and doesn't look up from her monitor until eight o'clock at night. Even the terms developer and programmer are endangered species. In light of ballooning IT budgets and the realization that efforts on the computing side of the house are inextricably intertwined with the processes of the business side, technologists need to fill a much broader role in the workplace.
The first combination was the programmer/analyst. The unfortunate soul in this position usually lacked either the business acumen or management support to wear both hats. Then the responsibilities began to cut along different lines, such as the separation of project management from team leadership. One counts the beans while the other makes sure that the components are completed. Of late, it has been all the rage to have a staff of architectspeople whose job it is to see the big picture and communicate that vision to everyone from the help desk and networking up to the CEO.
Unlike engineering disciplines that all but require you to forgo any technical expertise to climb the ladder of success, strategies and platforms are being created that will leverage more abstract thinking while still remaining within the realm of development. The current buzzwords include refactoring, Rational Unified Process, and iterative development.
These are all efforts that rely on the mind to conceive paths and synergies either within an application lifecycle or across application boundaries. When engaging in refactoring of classes, for instance, a developer must first know which separations of functionality are simply a matter of scale, and which rise to the level of generic versus specific. Some of the long-term goals of object-oriented developmentsuch as code reuseare just coming to fruition because so many of the short-terms goalssuch as intelligent class hierarchies are just being codified. The logical thinkers are beginning to rule the day.