Our outsourcing services are for customers interested in receiving high-quality turn key solutions without having to provide day-to-day project involvement.
Outsourcing Services FAQ
Do you do fixed-price or time and materials projects?
We can do either, but have a strong preference for time and materials projects. For larger projects, we will only consider time and materials.
This deserves some explanation. To most people, fixed-price also means fixed scope. We believe this creates an inherent conflict between the vendor and the customer. The customer has a business problem that needs to be solved. That problem changes over time as markets shift, competitive landscapes change, and economies fluctuate. Likewise, as a system is developed, both the business and development teams learn more about how the solution should look. If the project is truly fixed scope, none of this matters - the system will be built as it was originally scoped, whether or not that scope makes sense in light of new information. The customer has to solve the true business problem so is compelled to modify the scope. The vendor has to protect their margins so is compelled to keep scope rigidly fixed. The result is tension that can undermine the vendor/customer relationship and result in a system that doesn't solve the business problem.
With time and materials projects, the ability to define what gets built rests completely with the customer - it is never compromised by a vendor pushing back trying to watch a bottom line.
How can I control costs on a time and materials project?
Imagine you have a dial that you can turn to crank the productivity of the ByteCrafters team up or down. You can turn the knob off. You can max it out. Our recommendation for cost control is to set the dial at a level you are comfortable with. You give us the constraints and we will operate within those constraints. We will also give you detailed estimates of what level of productivity you can expect at the chosen burn rate.
How do you capture requirements?
We work with your users, business owners, customers, and other stakeholders to help you define the requirements. You appoint a single person on your team to be the "Customer" - the person who must ultimately declare satisfaction with the delivered system. We work with this person to define acceptance criteria and to control the requirements of the system. We document the requirements using Use CasesA Use Case is a step-by-step description of the interaction of an actor with the system, including pre-conditions and post-conditions. and cross-functional business process models.
What if we want to change requirements mid-stream?
Feel free. Because we are not constrained by fixed price/fixed scope, we encourage you to iterate on requirements as needed. We understand that your business needs can change over time as new information becomes available to you. We want you to leverage our agility for your competitive advantage.
It is our responsibility to be able to accurately explain what the change will mean to you in terms of time-to-market and cost considerations. At that point, it is your responsibility to make the decision that makes the most business sense for you. We build what you need built.
What is your development process?
We are firm believers in agile development methods, but have considerable flexibility to tailor our approach to use techniques you are comfortable with.
Our core principles are:
- Incremental development - Deliver working software enhancements at most every few weeks.
- Iterative development - Stay on top of changing business requirements by using just-in-time planning.
- Automated testing - All code must have unit testsA unit test is a test written and run by developers using an automated test tool to ensure a code module works.. All unit tests must pass.
- Continuous integration - Use continuous integration tools to automatically build and test all code every time a code module is modified.
- Refactoring - Mercilessly simplify and improve code throughout the project.
- Customer communication - Keep developers in constant communication with the customer to ensure the right system is being built.
What technologies do you use?
Our primary technologies for outsourced software development are Microsoft .NET (C#) and Enterprise Java.
Do you send your work offshore?
No. All of our development is done in house. We believe the best insurance for success is to have the best possible talent working in very close communication with each other and with the customer. Offshore development is not compatible with this model.
What are your deliverables?
With every project we deliver:
- A functioning software system.
- A requirements document comprised of system use cases and cross-functional business process models.
- An automated test suite typically comprised of hundreds of unit tests and dozens of functional tests.
- Automated build and deployment scripts to enable the system to be built and deployed with a single command.
- A Software Architecture Document that covers the architectural patterns, design decisions, and various model views of the system.
- User documentation if requested.
How do you handle knowledge transfer?
We believe the best way to enable a customer to take over the maintenance of a turn-key system is to design and code the system using simple, clear, maintainable code. This, combined with our documentation deliverables is the primary vehicle for knowledge transfer.
However, we do offer several options for customers concerned about knowledge transfer, including:
- On-site mentoring - we put an engineer on-site to bring your development team up to speed on the system.
- On-going consulting - we are always available to provide consulting services as needed.
- Maintenance contracts - we can continue to maintain and enhance the system under time and materials, retainer, or fixed-price terms.
- Team transfer - under some circumstances, if negotiated up front we can work with you to transfer select members of our team to yours.