Holistic Product Development
Our enthusiasm for every phase of the software development lifecycle allows to take on a wide variety of projects. We can help with everything from start-to-finish product development to training teams in agile development to targeted performance optimization.
Complete software lifecycle
Even if your project definition is as loose as "I have a problem that software can solve", we can help you turn it into a full-fledged, deployed product.
We work with clients to distill loosely-defined ideas into coherent plans that target the highest value features first. Our experience with lean software development helps us tune the amount of up-front planning. Overly detailed planning can waste time and money over-specifying features that never end up being useful, and too little planning can result in an un-focused product that requires excessive development efforts before it can yield any customer value. We've seen these problems before (and many others), and we can help you steer clear of these wastes.
We're not bound to a particular technology stack or type of development; we are adherents to "best tool for the job" and we'll work with you to carefully analyze your business requirements and pick the technologies that make the most sense for your project. Should your project be mobile-first or even mobile-only? Do you need native iOS or Android apps or is a cross-platform mobile-optimized webapp a better fit? Do workload or security requirements mean owning your own hardware is appropriate, or should you use a high-level PaaS offering like Heroku, or use more flexible lower-level services like EC2? We've used all of these approaches, and we can provide you with guidance to help you weigh the tradeoffs involved, maximize the return on your infrastructure spending, and minimize the risk of an expensive architecture change.
Regardless of which specific technologies are selected for a product, we can help turn product plans into a high-quality, complete software offering. We don't just deliver functioning code; we prefer to think of a finished project as one that has user activity analytics, performance and uptime monitoring for server-side components, thorough test coverage, and fully automated deployment.
Native Mobile Applications
iOS Native Applications
Over the past two years we’ve built and deployed multiple applications into the Apple App Store. Along the way we’ve built a sophisticated application toolkit that accelerates application development and ensures the end product will gracefully handle a complex variety of user environments (airplane mode, poor/no signal, etc). Additionally, we have experience with all aspects of building and deploying a native iOS application including:
- iOS development
- Automated and manual testing
- Closed beta deployment
- Navigating and ensuring compliance with Apple’s approval process
- Coordinated marketing release to the Apple App Store
Android Native Applications
Whether focusing on Android or preferring a dual native iOS/Android strategy, we can help. Android development has its own unique challenges (many different device resolutions, significant OS version diversity, etc.), but we've worked with these issues before, and we make the most of the rich Java and Android software ecosystem to quickly build high-quality Android apps.
We've written complex web applications for years, and we have experience with a broad range of frameworks, languages and tools. We build everything from desktop and mobile UIs to back-end services and third-party API integrations. Whether you need help with optimizing back-end data processing, making a rich desktop-focused web app, or a cross-platform mobile-optimized web presence, we can help.
Mobile Focused Web Applications
Native mobile applications are not always the best way to reach your customers. Common problems with native applications include:
- High barriers to initial use - finding and downloading from an App Store requires much more from users than typing in a URL.
- Slower releases - Releasing new versions requires app store approval, which can take days.
- No upgrade guarantee - Users must choose to download and install updates to your app.
If these difficulties are particularly problematic for your business case, building your mobile offering as a web-based application might be a better solution. We can help you evaluate these tradeoffs, and we have experience building and deploying web applications that mimic native applications in look and feel.
Mobile Compatible Web Applications
Not all situations call for a mobile strategy focused on smart phones. If tablets and desktop computers are the primary devices used to interact with your product, it may be preferable to focus application design and development on those devices. A well designed web site that renders well on smaller displays and uses technology supported on desktop browsers and mobile devices alike can often be as effective as a dedicated mobile application, at a much lower cost. If you don't have a markedly different mobile experience in mind, consider building one application that works across many different classes of devices.
Agile Process Consulting
A successful agile implementation can yield amazing improvements to team productivity, so it's not surprising that adoption of agile development practices continues to grow. However, agile is not simply a rigid template that an organization can trivially apply to their development process. Every business is different, and we often see organizations that aren't getting much out of their agile implementations simply because they have followed the default Scrum methodology too closely without understanding the core principles and customizing their process.
We understand that different businesses and teams need different approaches. As experienced practitioners of Lean, XP, and Scrum agile development, we'll help you create a customized process that's targeted at solving the process difficulties your organization is experiencing, not a generic cookie-cutter agile implementation. We can provide the training to help the entire team not only with the execution of the day-to-day responsibilities of an agile team member, but also with understanding the core ideas. This understanding is crucial to having a team that embraces a new process and drives its continual improvement.