The process of software development tends to be rather chaotic.
Team members come and go, requirements change, schedules change,
entire projects get canceled, entire companies go out of business,
and so on. The programmer's job is to successfully navigate this
chaos and in the end produce a "quality" product in a
Besides being chaotic, the software
development process also tends to be rather iterative. As a software
product is developed, it continuously evolves based on feedback
from many parties. This iterative process works from release to
release (each release is one iteration) and within the development
cycle of a single release. From release to release, for example,
the feedback of customers with the current version indicates which
bug-fixes and enhancements are most important to make in the next
version. Within the development cycle of a single release, the vision
of the end target is continuously adjusted by forces within the
company as development progresses.