The IT field has gone through some incredibly fast changes. Advances in technology have been fast to come and in great numbers. These advances have had an impact on developers, which some in the IT field see as positive and others see as negative. Advances in technology and the tools associated with the development process have caused a shift in the way tools used by developers are used and in the methodologies used by developers to manage their work.
One area that has seen change is that of Programming Methodologies. Rapid Application Development, a Programming Methodology in the 1990’s, is today a category of software development tool used to make it easier for developers to respond to today’s increased demand for software solutions.
In the mid 1980, structure was widely present in the work done by programmers. Programming languages such as Cobol required that programmers follow a given order when programming. A was followed by B which preceded C. This logical structure gave programmers a reason to think about their code before they coded it. Programmers used flow charts to create a visual representation of a program before writing any code.
This paper will cover the changes in Programming Methodologies, Development Concepts, and Software, and the impact experienced by IT professionals.
Technological advances resulted in changes in the way IT professionals addressed the demands of the client. Programming methodologies were the first to show these changes. Traditional Methodologies were based on a structured systematic approach to developing systems. This forced developers to “sign-off” after the completion of each specification before development could proceed to the next step. The requirements and design were frozen and the system was coded, tested, and implemented. With such conventional methods, there was a long delay before the customer saw any results and the development process could take so long that the customer’s business could fundamentally change before the system was even ready for use.
This was the case until the early 1990’s when technology guru James Martin introduced a new development methodology, which he called “Rapid Application Development” (Wikipedia contributors, 2010). Rapid Application Development was born out of a need to create applications faster than other methods of the time would allow. Rapid Application Development was a “merger of various structured techniques, especially data-driven Information Engineering, with prototyping techniques to accelerate software systems development” (Wikipedia contributors, 2010).
Reaction against heavyweight methods characterized as heavily regulated, regimented, micro managed, waterfall methods of development (Wikipedia contributors, 2010), lead to what we known today as Agile, a programming methodology that focuses on making the development process even faster than Rapid Application Development did. Responding to increased demand for programming solutions, IT professionals have looked for ways to cut development time resulting in a progressive change in programming methodologies.
Client/Server technology was in its infancy in 1992 and already there were signs of the impact advances in this technology would have on networks. “The proliferation of networked applications will come with a large burden for network managers.” (Ewald, Roy, 1992) Furthermore, client/server software tools were not available in large numbers and that made “application development cycles longer than necessary.” (Ewald, Roy, 1992)
To make things worse, “software developed with existing tools are not readily reusable.” (Ewald, Roy, 1992)
Reusability gave birth to Object-orientation. Object-Orientation (OO) gave developers the ability to improve deliverables, notations, techniques, and tools used in application development. “Its goal was to encapsulate design decisions with an anthropomorphic design mind-set and objects, classes, inheritance, polymorphism, and dynamic binding as its mechanisms.” (Cockburn, Alistair, 1993) In short, it was meant to provide developers with re-usable objects and therefore cut development time.
Cockburn and Alistair (1993) wrote that “Object-oriented (OO) development is characterized by: the encapsulation of process with data in both the application structure and the development methodology; anthropomorphic design, in which objects in the application are assigned “responsibilities” to carry out; modeling the problem domain throughout development; emphasis on design and code reuse with extensibility; incremental and iterative development.”
Coupe and Onodu (1996) wrote an article in the Journal of Information Technology in which they said, “There is a need to develop new software and upgrade existing systems to meet competitive challenges, to plan effectively, and to manage the day-to-day running of organizations. The pressure is increasing for developers to work more efficiently and produce better quality systems more quickly than before” (Coupe, Onodu, 1996). Using these new technologies to “reduce system development time within IT departments” (Coupe, Onodu, 1996) made it possible for “these systems to be put into operation sooner” (Coupe, Onodu, 1996).
The systems Coupe and Onodu were referring to where Computer aided software engineering (CASE) tools, which at the time were seen as having a positive effect on developer productivity. A survey of developers in UK organizations confirmed the notion finding that CASE tools “improved the reliability and accuracy of applications software” (Coupe, Onodu, 1996). Application development as a tool required continuous fine-tuning to keep it operating at peak efficiency.
These advances in technology lead to other advances that made it possible for it professionals to benefit from them. Such is the case for Web Services, an advance in software development, which prompted the major manufacturers of development software to create “tools that will make it easy for developers” (Dyck, 2001) to do their job.
Application development advances include the creation of tools that expand on the concept of an IDE for developers. Microsoft introduced a research project called Code Canvas, which, is likened to a roadmap of code helping developers understand complexities and changes in code (NetworkWorld.com, 2009). Although still a research project, it shows the moves that technology companies such as Microsoft are making to create an even more visual development environment for developers. This is as an attempt to bridge the gap between developers and designers.
Advances in technology and the tools associated with the development process have placed increased demands on developers to be more efficient and produce better quality systems more quickly than before. This increased demand has given way to changes in programming methodologies as well as programming tools and has introduced new programming concepts that have given developers a way to create objects that can be re-used. Client/Server technologies, Object-Orientation, and Web Services are just a sample of programming concepts that are the direct result of a need for more productive developers.
The impact these advances have had on it professionals has always been a hard issue to address. This reflects, in part, the difficulty in defining and measuring software quality (Ewald, Roy, 1992). Training developers on the use of new technologies can affect how researchers and other IT professionals perceive the impact of these changes. The impact can be positive when training, hardware and software upgrades, are present. On the other hand, a lack of hardware and software upgrades as well as training would give reason to labeling any advance in technology as negative.
It is not within the content of this document to define the impact as negative or positive. Rather, it is up to the readers to come to their own conclusions based on the information made available to you. One conclusion to note is that organizations, educational institutions, and IT professionals tasked with developing solutions need to be aware of how changes in technology affect them. Advances in technology are often times followed by other advances resulting out of a need to improve the tools used by developers to do their jobs. It is not enough to train developers on emerging technologies, it is necessary to provide them with the tools they need to use the emerging technologies.
Agile software development. (2010, October 20). In Wikipedia, The Free Encyclopedia. Retrieved from http://en.wikipedia.org/w/index.php?title=Agile_software_development&oldid=391820065
Cockburn, A. A. R. (1993). The impact of object-orientation on application development. IBM Systems Journal, 32(3), 420. Retrieved from http://proquest.umi.com.library.capella.edu/pqdweb?did=547801&Fmt=7&clientId=62763&RQT=309&VName=PQD
Coupe, R. T., & Onodu, N. M. (1996). An empirical evaluation of the impact of CASE on developer productivity and software quality. Journal of Information Technology, 11(2), 173. Retrieved from http://proquest.umi.com.library.capella.edu/pqdweb?did=667612851&Fmt=7&clientId=62763&RQT=309&VName=PQD
Ewald, A., & Roy, M. (1992). The evolution of the Client/Server revolution. Network World, 9(46), 75. Retrieved from http://proquest.umi.com.library.capella.edu/pqdweb?did=677568&Fmt=7&clientId=62763&RQT=309&VName=PQD
Paul Krill, (2009). Microsoft, IBM highlight software development advances. Info World. Retrieved from http://www.networkworld.com/news/2009/070909-microsoft-ibm-highlight-software-development.html
Rapid application development. (2010, October 21). In Wikipedia, The Free Encyclopedia. Retrieved from http://en.wikipedia.org/w/index.php?title=Rapid_application_development&oldid=392053265
Timothy Dyck, (2001). Tools Advance Web Services. EWeek.com. Retrieved from http://www.eweek.com/c/a/Application-Development/Tools-Advance-Web-Services/