In the course of planning and development, we practice agile methodologies to provide for the flexibility of Continuous Prototyping, which in turn delivers the actual application in incremental and visible outcomes.
Our way of development is kind of against the grain of 6 months of planning, followed by 6 months of discussion, and then completed with 3 years of development. We get your requirements, quickly prototype them to get your feedback on your ideas, and then when you and we are in sycn on the deliverables we deliver.You're always in touch with what you've asked for and what's being developed with the ability to immediately stop things when they go against your expected outcomes.
Planning out software up-front leads to software that may not work well
Software is something that is used by people (not everyone realizes this). Things need to change and evolve as users give feedback and company priorities change. We accomodates this line of thought by grouping development into 3-4 week "sprints". At the end of each sprint the client has the opportunity to work with the team and change any of the features in the development. This way things are completely fluid and agile and the software can be as flexible as your business.
We are confident in our ability to take the needs of an application, and execute it in the best manner appropriate for the project.
How we look at building software from an architectural point of view
Wear the shoe that fits the foot. You'll never hear anyone on our team say "Ruby on Rails is perfect for everything!" -- it's just not. For simple applications or brochure websites we may choose flat PHP or something that doesn't require any lifting on the hosting/deployment side.
With experience comes comfort in correctly architecting large scale applications. A poor architect may make tables in such a way that SQL statements can never be optimized beyond a certain degree.