Monday, July 6, 2009

Technology Dissertation

Of all the forces shaping human experience today, technology is the least understood. Since the Enlightenment, intellectuals have either ignored technological systems or mythologized them. Few have confronted both the manifold dimensions of the marriage between corporate finance and commercial engineering or the way in which discrete innovations are subordinated to technical architectures, or systems, that alter consciousness and social relations. Given the poverty of technological analysis, it is hard to judge who is more dangerous. The humanist who recoils at the commercial core of technology, or the literate enthusiast who declares a revolution at every turn.

This is not to suggest that nuanced thinkers offer any more compelling explanations than Witold Rybczynski's (1983) bald insistence that "technology is not everything." It is correct to say (though of little solace) that a myriad gushing streams flow into the raging river of technology. Consumers invariably learn how to navigate this river whether they ultimately sanctify, modify or simply abandon their various tools. Yet they often are helpless to make sense out of the proliferating technological systems in their midst. The creators of these systems, meanwhile, present their work as a "black box" that eludes the ken of ordinary people. Even they, at times, fail to grasp that their power does not arise from elemental building blocks but durable architectures. The architectures (say, "film" or "the automobile") are themselves subordinate to larger and less transparent webs of architectures (say, "Hollywood," or the "car culture"). Historian Thomas Hughes has aptly described these super-networks as "technological systems" (Hughes, 1989; Rybczynski, 1983).

Computer programs are among the most important technological systems. Over the past 25 years, software systems have grown larger and more complex, and they have outgrown their initial niche as handmaiden to computer hardware. Not only do software systems increasingly define the function and quality of computers and computer networks, they also shape the core of many systems, from aviation to military weapons to electronic commerce to health-care delivery. Programming, moreover, is in its infancy. Software systems are likely to become central to bio-engineering and molecular biology. Large-scale research into human genes already has been greatly influenced by software techniques and metaphors.

Despite their importance to modern civilization, software systems have drawn relatively scant attention. This partly stems from the rapid ascent of software. Historians and sociologists of technology have not digested the software explosion. Business analysts and professors, while aware of the costs and consequences of weak management of programming projects, have yet to build strong models for the genesis of software architectures and, more importantly, how and why one architecture gives way to another. These academic models will certainly improve over time, but they have yet to gain a following in the wider world. Programmers certainly have created their own literature, but this rarely ventures beyond specific techniques for producing and integrating code. The one landmark book, written by a programmer for programmers, is The Mythical Man-Month. Based on IBM's attempts to build software systems in the 1960s, the book is chiefly of historical value (Brooks, 1975).

Studying teams at Microsoft
Because of the lack of basic data (no less theories) on contemporary management of large-scale software projects, in 1992 I set about to chronicle the making of Windows NT, the largest project ever undertaken by Microsoft Corp. and the most ambitious program ever written for a personal computer. My research - largely in the form of interviews with roughly 100 Microsoft employees and a review of hundreds of confidential corporate documents - resulted in a book, Showstopper! (Zachary, 1994).

Though its commercial acceptance grows with every passing month, Windows NT may not rank as a great achievement in software history. A soup-to-nuts operating system designed to manage large databases to computer networks to desktop machines, NT was the culmination of 40 years of software engineering. Its chief lesson is that software systems are wholly human creations. Far from being determined by technical imperatives, software engineering is a curious mix of pop psychology, Rube Goldberg maneuvers and rational design. Code writing is messy, contingent and only partly satisfying. In the drive to build NT, the project's plans and rationales gave way to the drive for power, the human impulse to gain control - of systems, markets and the shape of things to come.

As much as it says about the making of a software system, the making of Windows NT also can be mined for clues regarding new forms of management and work in innovation industries. Many agree that globalization and technological changes are destroying the hierarchical and bounded jobs that once dominated mass-production and service industries. There is far more debate on emergent managerial structures. To be sure, top-down or autocratic decision-making seems ill-suited for an era where intellectual capital is rapidly overtaking financial capital in importance. Yet the fashionable neo-biological model of self-organization, however elegant and politically correct, is inadequate. It does not describe the experiential core of multinational corporations, or the team-dominated organization.

Team dynamics
For evidence of the new primacy of teams, consider the relation of the NT team to its corporate patron, Microsoft. Members of this team swore allegiance, not to Bill Gates but to their team leaders. There were even teams within the larger NT team. For some members of these sub-teams, the only relationships that mattered were those with colleagues who shared their immediate goals and occupied the same space.

The importance of teams is structural. In every field of engineering, the body of practical knowledge is changing too rapidly to be codified, but this is especially so in the design and coding of software. In software, the costs of codification are so great that there is little incentive to do codify because the resulting text will be outmoded soon. The hoary methods of Fred Taylor and the time-and-motion engineers have no place in workshops where bits and pieces of cyberspace are knit together. Members of teams - the carriers of this knowledge - are thus highly valued, at least for the life of the project, which is all that matters to the team in any case.

If the success of a software project depends on the vitality of its teams, what is the principle that holds many teams together across distances and corporate objectives? It is not unrestrained selfishness and individuality, which is often viewed as the American ideal of teamwork. Nor is it the consensus approach for which the Japanese were lionized in the 1980s.

As the icon for a new corporate structure, Microsoft has fittingly stumbled on a new way of uniting teams under a common banner. This way is best described as "armed truce." The term makes sense because long, bitter argument and opposition stands behind virtually every significant decision made by any Microsoft team.

As I found in my study of Microsoft, the 250 members of NT's team were constantly at war, if not with other teams at Microsoft then with each other. Consensus was not sought because it was not desired. Conceptual stalemates did not stymie activists. Dissent was stimulated by allowing team members who disagree with a decision to keep on carping and complaining long after the team has carried out the decision. This incessant whining could be painful, wasteful and embarrassing. But it allowed dissenters to protect their pride and intellectual integrity, which was more important to them than civility. The ethos of "armed truce" also forces advocates of a controversial decision to continually defend themselves. This takes time but has more benefits than might first appear. For months or years a decision may withstand the pressure of "armed truce." But every tactic, every strategy, eventually loses its relevance. And when it does, it can be discarded more swiftly when team members lay in the weeds, so to speak, with a ready substitute.

In the making of Windows NT, the evidence for my "armed truce" thesis was plentiful. The basic design of the program, which called for a graphics superstructure to trade information ceaselessly with a bedrock kernel, came under repeated attack. The attacks continued even after the first NT release in mid-1993. At crucial junctures, Bill Gates himself sowed seeds of doubt, asking for fresh justifications of this split architecture. Gates and his allies on the team were rebuffed. A second NT release arrived in mid-1994 based on the original design. Only then, when the performance improvements to the program had reached their limit, did the revisionists triumph. The third NT release, shipped in 1996, relied on a unitary graphics-kernel design. Yet still the debate continues.

The experience of Microsoft's NT team is suggestive of shifts across the corporate landscape. So rapid are technical developments that the core of the corporation is now the team, the only unit small enough to retain its intellectual edge. No matter the size of an enterprise, or whether its goals are market leadership or the pursuit of pure knowledge, the enterprise will come to be defined by the quality and character of its many teams. Corporations thus become vehicles for different teams to realize their aims. The larger the team, the harder it is to chart its nuances, its inner strengths and contradictions. No organization chart can convey the complexities of such enterprises. Few senior managers can capture the value within their own enterprises, much to their embarrassment.

This has huge implications for the management of software projects as well as the economy as a whole. The rise of the team to center of the large corporation will lead to the greatest shift in corporate power since the dawn of the twentieth century when, in the words of eminent business historian Alfred Chandler, "professional managers replaced families, financiers or their representatives as decision makers ... [and] modern American capitalism became managerial capitalism" (Chandler, 1977). Managers will thrive in the new regime, but only when they act more like political bosses than technocrats. They must win the endorsement of many team leaders whose local authority springs from their own tribes. The corporation becomes a confederation of teams, constantly on the verge of war with one another yet wedded together by cross-fertilization. The multitude of teams that comprise the cutting-edge corporation are capable of forging a collective identity, but find it rather destructive to do so. Today the essential ingredient in any successful project or enterprise is the capacity for dissent and transformation among its teams.

Warning!!! This is just a sample Technology dissertation (Technology dissertation example) which cannot be used as your own paper. You can contact our custom dissertation writing service which provides college and university students with high-quality custom dissertations, thesis papers and research proposals on Technology topics.

Get professional Technology dissertation writing help from our professional Ph.D. and Master's academic writers. Premium quality and 100% plagiarism are guaranteed! Feel free to

Programming Essay

Programming procedures allow programming practices to become standardized. This enables a programmer to quickly come up to speed when troubleshooting and making modifications to an existing application. Programming guidelines should contain scheduling requirements, a quality checklist, and some general design guidelines. The components included in a programming procedure not only enable a programming team to build a more robust application but also save costly maintenance time when the application crashes or has enhancements that need to be incorporated.

Code Standards
Code standards are a critical part of programming, especially when a program is being developed by a team. A variable naming conventions allows variables to be named in a format that is consistent and definitive. The Hungarian variable naming convention consists of small lower-case prefixes added on to a variable name with the first letter of words capitalized.

A naming convention must also be adhered to for controls. By using Hungarian Notation to name controls, a programmer has the ability to standardize the structure, coding style and logic of an application. Below is a sample of the Hungarian Notion used for naming controls.

Indentation guidelines are another important part of code standards. A programmer should use blank lines and Tabs for formatting to enhance readability. Correct indentation for all control structures should be adhered to.

Internal Documentation Requirements are yet another component of code standards. Pseudo code and a testing checklist should be submitted with any application. This will help other programmer quickly come up to speed and will ensure that the testing phase of application development is thorough and successful.

Scheduling Requirements
In order to make our group deadline, each individual must be able to post their parts to the newsgroup two days before the actual deadline. Reason being is so each team members can review the product and revise anything that needs revising. A chosen person can merge all the documents together to make it one seamless product. Each individual who turns in their part must be well documented and must have their resources documented as well. If a team member needs help, then s/he should not be afraid to ask for help. The one thing that each member needs to remember is to turn in their work on time. You can’t expect your team member to pick up your own part. If you can’t do it, let your team member know and ask for help.

QC Checklist
Having others QC the application can provide a number of quality checks. While it may not seem too important to the programmer to do this in a classroom environment, making a program that a total stranger has to read and understand is critical in the real world. First, when choosing a name for a subroutine or function: be descriptive. A person ought to be able to tell by the name what type of processing will take place. A second area of concern is variable naming. Do the variable names reflect the data types they are? For example, is "int" prefixing all integer variables. We will also evaluate the names of variables using the Microsoft naming standards and ease of use of the application. Finally, the program will be checked for inline documentation of each routine or function. What is being called? Who calls it? Who does it call? Is there anything passed to it that should have a certain range of values? By adhering to some simple rules, it will make the project easier to understand and comment on it.

Design Guidelines/Requirements
One of the many documentation that will be required are ANY sources that was used for the design. Other design documentation that will be required is the original design for the final project. Documentation is essential so that when a person wants to rebuild this product, a person can just take a look at the original design and build it from scratch. Another thing you want to document is any revision that was made after the original product was designed. A design is essential because it organizes the thoughts of the group and from there a flow chart could be made. It is easier to create a product from something that is already organized. Meaning that everything that you want a product to do is laid out for a team to work on and create this product. It makes coding so much easier.

The quality control process is an important one in programming. It provides a guideline to create a standardized set of code for applications and programs. This enables others to view and understand what the program is trying to accomplish in the end. Having the Learning Team go through the quality control process will take it to a new appreciation for programming and group projects. It will get the whole group involved in lending a hand to make each weekly project and enjoyable learning experience. All of this will keep the team moving towards its goal of gaining a better understanding of what it takes to create a quality program.

Warning!!! This is just a sample Programming essay (Programming essay example) which cannot be used as your own paper. You can contact our custom essay writing service which provides college and university students with high-quality custom written essays, term papers, research papers, thesis papers and dissertations on Programming topics.

Get professional
Programming essay writing help from our professional Ph.D. and Master's academic writers. A+ quality and 100% plagiarism are guaranteed! Feel free to ORDER A CUSTOM ESSAY ON PROGRAMMING RIGHT NOW and you won't be disappointed.