Philosophy
Outlined below is CCIS' philosophy, refined over the years based on our experience successfully working with clients who operate in dynamic environments and stressful situations:
Design Philosophy
-
Useful Functionality for All Users
- We believe that all users should say "this software does something for me, not to me." Designing software functionality so that operational users actually see value for them and want to use the solution dramatically increases its total value.
-
Flexibility through Just-in-time Requirements - Our clients operate in highly dynamic environments and cannot accurately predict all of their future requirements. Using our TAP model, we are able to maintain flexibility in our work and quickly adapt the code to changing conditions on the ground.
-
Optimized Information Flow - We believe in interoperability by default, meaning that we design our solutions so that the right information flows to users who need it instantly, not after artificial gating.
Development Philosophy
-
Working Software Quickly in User Hands - Through quick "atomic" iterations that quickly produce functioning software, we get our software working in user hands early and often. Doing so helps us improve user adoption and adapt requirements to changing conditions.
-
Cost-Effective Quality through Continuous Integration and Testing - By continuously testing and integrating code, we are able to detect and fix issues early in the process, reducing the time, effort, and cost required to correct them and mitigating the down-stream quality risk to the project.
-
Reduced Time and Cost through Greater Code Reuse - Our developers constantly look for ways to reuse existing code so that they generate solutions quickly and cost-effectively.
Support Philosophy
-
Increased Value through Field User Support - With our clients, new users continuously enter the fray, new requirements emerge and all users want quality "over the shoulder" support. So we readily provide field support engineers who assist our users on the ground in theater, helping them get the most out of the solution and making tweaks when necessary.
-
Optimized Supportability through Continuous Refactoring - We believe that by continuously refactoring the solution to keep code clean and concise, the solution's useful life and continued maintainability and extensibility can be significantly extended.
-
Better Decisions through Imbedded Trusted Advisors - We believe in imbedding our team with the client and focusing exclusively on the client's mission. Doing so helps ensure all parties make the right decisions regarding future requirements and technologies.