We have worked with many different companies in different industries, and development requirements vary by application sector and by customer. NIP accordingly does not follow a single System Development Life Cycle, but our experience covers both highly structured environments (e.g. systems validation and formal project management methodologies) and very fluid prototyping structures.
Our approach to developing software is generally governed by balancing the following:
We deliver appropriately documented and tested applications to meet our customers' requirements, but although the development process can be further reinforced by following a validation cycle if needed, this is not a primary focus for us (even though a lot of our work is done in the pharmaceutical industry).
We have a small team of developers that remains in constant communication, and - in general - we work without named departmental units, in flexible groups, to deliver solutions on time, within budget and to specification. This often includes an initial exploratory/iterative prototype phase to give users "hands-on" experience of the system (and to reduce later design and development costs) as customers understandably frequently don't have a clear or complete idea upfront of what they want.
Overall, we believe our approach to be the most effective way of balancing the contrasting demands of needing to innovate with the need to provide stable, quality solutions. It also means that we don't enforce only one way of working on our staff, or on our customers. This ability to work both flexibly or rigidly - and any combination in between - supports us in our rare ability to satisfy customers from very different industries, and with very different software risk profiles.