Custom Development Service
Why We Offer Custom Development, and What It Is Good For
Your unique requirements are important to us.
And we know that we might not anticipate all of your requirements in advance.
To fulfill your requirements well, it may be necessary to adapt some aspects of our products for fulfilling your requirements. This can e.g. be the following things
- Adding new features.
- Making something configurable that was previously hard-coded.
- Port our products to another operating system.
- Optimize compression algorithms for your specific use cases of our products. In many cases, compression rates can be significantly improved when we modify our algorithms for the specific data patterns that emerge from your unique way of using our products. In one case, we even achieved more than a factor of 5 improvement!
- Optimize performance or other resource usage for your specific use cases of our products.
- Creating a new API, so you can interface certain functionalities of our products with your system. And to assist your engineers in using that API.
Therefore we offer a service where we change those things in our products such that they help you well with achieving your goals.
Here we describe how custom development is usually done:
How Custom Development usually is done
If Possible, We Offer Fixed Prices
We usually do this on a fixed-price basis so that, before ordering, you know how much it will cost. So there won't be any surprises later.
We usually make the fixed-price offer after the requirements and specification have been agreed upon.
The fixed price is determined based on two factors:
- estimated effort ( including testing, bugfixing/maintenance for start-period, documentation, ... )
- what percentage of this effort we will charge. This almost always 100%, but in some exceptional cases, this may be lower.
In any case we keep all intellectual property rights on the generated software while you get a license to use it together with licensed products from us. ( i.e. if you order some enhancement to DisplayRecorder, you can use it with all licenses of DisplayRecorder in your organisation. ) If such features make sense as part of the product, we include them in the general product and therefore make them available for other customers as well.
Measure of Estimation: "Engineering Unit"
We estimate the effort in a unit which we call "engineering unit" which takes into account different skill levels needed for different tasks, and includes possible investments in infrastructure and tools etc which are needed for a project.
- Sometimes, 100 hours of labour can be optimized away by using an appropriate tool which costs significantly less than the saved labour.
In this case, the flexibility offered by an "Engineering Unit"
compared to pure measurement of labor,
allows for optimal use of resources and therefore a lower
cost for the same (or better) quality of the result.
Often, the need for such tools is not known in advance, but arises in the course of the project.
- Productivity of engineers varies greatly, i.e., by a factor of more than ten!
In addition to that, quality of work also varies greatly between
engineers. Therefore it is vital to assign the right engineer to
a specific job. Good engineers are in high demand, and therefore are
more expensive. Some engineers like our founder and CEO, are not
even available for hire because they run their own companies
based on their good engineering skills.
A man-hour is therefore not a good measure for estimating the complexity of a task. An engineering unit allows for deciding later which engineer to assign to which task.
This way, highly skilled engineers can be assigned to challenging tasks, and average or junior engineers can be assigned to do simpler tasks, where the highly skilled engineer will not be so much faster than them.
Therefore an engineering unit is a more useful measurement of effort than a man-hour when doing cost estimations. (An engineering unit is not appropriate for tasks that are paid by effort, because it cannot be measured in an objective way.)
As a rule of thumb, one "engineering unit" in terms of labour is about 4 hours of a highly skilled engineer, plus the risk-premium for our risk of offering a fixed price for work whose effort can only be estimated with high uncertainty.
The current price of an engineering unit is EUR 679.
Smaller projects are paid in advance payment. ( up to 5 engineering units, i.e., up to EUR 3400 or so. )
mid-sized projects ( up to approx 100 engineering units ) are usually payed in three parts as follows:
- 1/3 advance
- 1/3 when delivering 50% of the tasks in form of a prerelease
- 1/3 when everything is finished.
Larger projects are probably payed in more parts, or they will be split it into multiple mid-sized projects.
Payment for Effort Only as Fallback if Other Schemes Do Not Apply
Of course there will be cases where a fixed price offer cannot be made, e.g. when the requirements cannot be defined with sufficient precision. In these cases, the requirements evolve with the project. For that, payment by effort offers the needed flexibility.
If, for some work, only payment by effort makes sense, we will offer that
In that case we proceed as follows:
- Effort of labour is measured in man-hours. We differentiate by skill-level and productivity of engineers. That is, there will be different hourly rates for different classes of engineers.
- If labor can be saved by buying third-party tools or components, then we tell you so, and after your approval, we invest in that, and add that cost to your invoice. The tools remain ours, though, so we can do maintenance work etc. If the tools are useful for other aspects of our business, we may only charge you a part of the cost.
BTW, Until now, there never was a necessity for hourly payment in a project where our products themselves are changed.
But an example may be attending a meeting or a telephone conference.
Or helping you with some of your projects where you need the X11 expertise of our CEO. We already did hourly paid work on that basis.
Sometimes, We Offer New Features as an Optional Module
Sometimes, we will offer new features as an optional module for licensing, even for the first customer requesting that feature.
What We Don't Do
We usually do not change your systems. We'll let your engineers do that. But we'll provide and create interfaces that your engineers need to connect your system to our software.
In very exceptional cases we may agree to perform changes in your software or system ourselves. But we usually avoid that due to intellectual property issues and because we do not want to add maintenance responsibilities in addition to the responsibilities for our own products. This way, we can concentrate on maintaining our products well. And we can ensure that the intellectual property state of our own products remains safe and clear.
If you need help with changing your system, we may be able to recommend you qualified freelancers. We only recommend freelancers who we know and who we already have worked with successfully. This ensures good collaboration with respect to the interfacing to our products.