iPhone app Developers | iPhone and iPad Developers

How We Work

How We Work

A software development process that actually works

We believe software projects should be:

  • Informed – Built on a solid foundation of customer needs, business objectives, and highly accurate time and cost data
  • Iterative – With regular deliverables so everyone can monitor project progress in a clear and transparent manner
  • Innovative – leveraging innovation and best practices to produce polished, wonderful software
Based on these three principles, we’ve created an agile software process that helps us respond to changing business objectives and design and deliver effective, quality software within time and cost constraints.

 

Requirements

Good software begins with good requirements. We want to talk to your users. We want to understand your vertical. What problems do your customers have? What environment do they use your software in? Is a network connection always available, or is connectivity spotty? Is the lighting OK, or do they have trouble seeing what they are doing? What common tasks do we need to make fast? We want our team to understand your users so that every decision we make, from what controls go on the main screen to the performance characteristics of the underlying algorithms, is carefully made from a deep understanding of the project goals and objectives.

Design

We take what we’ve learned from users and turn it into a joint user-interface and technical design that meets business objectives. This design document concisely states what we’ve learned about your users and presents business solutions in a clear, readable format that is understood by technical and nontechnical stakeholders alike. It is full of mockups, screenshots, and descriptions of user interactions so that everyone is on the same page.

Incremental Development & Delivery

Software development is a process of discovery. Rather than using a “big bang” approach and simply hoping that everything comes out OK in the end, we believe in short 1-3 week sprints that each have a specification, implementation, testing, and delivery phase. Working in small pieces helps everyone communicate effectively and understand the goals and objectives of the development iteration.

Specification

It’s important that the goals and objectives of the development sprint are well-defined. It’s easier to change a line of text in a paragraph than it is to fix software that’s already built. We specify each milestone so that everyone knows what the deliverable looks like, what user problems we are solving, and how to know when we’ve accomplished the goals of the sprint.

Implementation


We construct best-in-class software according to the specification. Our awesome developers use the latest in development technology and engineering best practices to construct fast, reliable software quickly and dependably. You’re on a first-name-basis with the people actually doing the work, instead of hiding behind managers and bureaucracy.

Testing


We share the testing burden with our clients. Our unit tests, integration tests, and automation scripts find and catch regressions and issues on every commit with a proprietary in-house continuous integration server. Our code reviews and human testing find issues that our automated testing misses. Your review and sign-off not only ensures that our deliverables perform as expected, but also serve to train our processes to find and catch more issues in-house, meaning that our software quality improves with each release.

Delivery

We provide a deliverable with every sprint so that you can continuously monitor our progress, instead of relying on status reports or our claims that we’re on track. We have a proprietary over-the-air one-click distribution system so you never have to touch iTunes or sync a device, and our continuous deployment server can provide daily or even hourly builds. At the end of every project, we always provide source code so that you have all the tools you need to maintain your software and control its future.

Reporting & Monitoring


Our advanced technology stack monitors your app for problems, bugs, and crashes, and our analytics system can identify new ideas for future development or features.