We focus on providing high-end services
3 hours of free consultation; no payments, no obligations
It is important for you to fully trust us before putting your "baby" in our hands. We also prefer to know our clients better before committing to a business relationship. That's why we decided to provide up to 3 hours per project of free consultation; no payments, no obligations. This is the time for us to get to know each other better; you can see how we approach problems and see us in action before you have to reach for your wallet. And even if it doesn't work out, you may still come away with an idea or two. We also try to accommodate ourselves to your working style; we can meet offline over a cup of coffee or confer online to get things started.
Maximum flexibility, while maintaining control of your budget and deadlines
We understand that it's difficult to engage in a project without clear price and time limits. On the other hand, in our experience, project requirements always change a great deal during the development process. In order to afford maximum flexibility, while allowing you to maintain full control of your budget and deadlines, we provide you with a rough estimate of development time and budget at the outset. Our methodology ensures that you always see how changes in project requirements affect our estimate, and you can always adjust your requirements as we go.
As an interesting observation, we've noticed that the first stage of most projects takes about 2-3 months. If it takes much less, there is probably room for more features. If it takes much more, it can be a sign of feature bloat. It may be a good idea to reduce the amount of features in order to speed up your time to market and get more user feedback before implementing all 800 of those "must have" features.
Feel free to adjust our speed to meet your needs
Our methodology allows us to be very flexible and make the development process fully customized to your budget, time constraints and project requirements. We can develop at full speed for a week or a year and then completely suspend development until you come up with the necessary market research, or the next round of funding, or the next batch of features. The project will be production-ready and potentially deployable after each iteration, so you can feel free to adjust our speed to meet your needs. We will also provide your development team with any necessary training when you are ready to take the project in-house. We will never leave you hanging.
Security is different. You can't compensate for a lack of knowledge with extra effort. If security is important to you, you'd better have a security expert on-board. We do.
UI design is what your users will see; they won't see the project specs
While not a requirement, we strongly advise that you prepare all visual designs before starting on the actual development. The great advantage of seeing the user interface is that it puts us on the same page regarding all the project requirements. It's very easy to misunderstand a couple of sentences describing a feature; it is much harder to misunderstand the actual forms and buttons you see in front of you. Keep in mind that the UI design is what your users will see; they won't see the project specs. Thinking about the UI first ensures that all project features are user-oriented and well thought out from the user's perspective.
Break down the feature list into user-visible chunks of work
When we're all ready to take off, we will work with you to break down the feature list into small, digestible, user-visible chunks of work. Some people call them stories. These stories are the basic units of our development process. Each story describes a complete feature from the user's point of view, such as "Users can restore their password by clicking on a link [restore password]. A link to a password restoration page will be sent to the user via email". Stories help keep the development process focused on tangible customer value and enable everyone involved in the project to track its progress.
Stories are combined into iterations. Each iteration takes 2 weeks. After each iteration, the project is in a stable, fully tested state, and ready for production deployment.
We use PivotalTracker (developed by the great folks at PivotalLabs) for project management. It enables you to track the project's progress, prioritize stories and change iterations according to your current needs.
Automated functional, regression and acceptance testing
Each story is automatically tested before it is committed to the source repository. While not a replacement for human QA, automated testing allows us, the developers, to deliver better code and eliminate as many bugs as possible at an early stage of the code's lifetime. Based on specific project needs, we write functional, regression and acceptance tests, using the best tools we know of.
We still urge our clients to perform acceptance testing themselves; it's a great way to really see the project's progress. As an added bonus, seeing the feature in a realistic setting may inspire some great new ideas
Constant control of progress
Each time a story is completed and marked as "Delivered" in the tracker, it is deployed to our development server. This means that you can go there and play with it. If the story works as you intended it to, you can mark it as "Accepted" in the tracker. If not, you can mark is as "Rejected" and we will continue to fine-tune it.
Frequent deployments ensure that you are always in control of the project's progress, and that the delivered features are exactly what you had in mind.
If you don't have scaling problems you are not growing fast enough
The only time you really need to have a scalable solution from the start is when you develop a new feature for an established user base with known performance requirements, like Facebook did when they added a chat feature for all users. Most other times, writing a feature to handle "millions of users™" may not be a way to go and will definitely slow down the development process, increasing both your time to market and budget.
Another issue is that most of the time you have no idea where the actual bottlenecks will be until you hit the site with real traffic, so scaling the site before it goes live usually leads to premature optimization and wasted resources – and in the end you may still experience unexpected performance problems.
Instead of implementing the "million users" architecture from the beginning, our strategy is to create a scalability plan. We identify the places where we might have the next problem and plan how we will fix it, if and when it arrives. We revisit the plan at each scaling step, and avoid detailed planning too far in advance, as those distant-future plans are usually worthless when the time comes to implement them.
Nobody knows the project better than you
Based on the above, your role is to participate in writing and prioritizing your stories, because nobody knows your project, business domain and current needs better than you do.
At the other end of development, you're in charge of acceptance testing and making sure every feature is polished to perfection.
Want to get those 3 hours of free consulting? Talk to us, we are friendly :-)