Productivity Wars
-
There may be trouble ahead! There's a constant debate at our place about the use of third party libraries. Half our lot refuse to use them, preferring to write absolutely everything themselves. It's no coincidence that the developers who use third party stuff get their tasks done quicker and with less bugs opened from said tasks. I'd call this good productivity. The current Not Invented Here debate is based around expression parsing. We want to be able to interpret expressions defined in Xml files in place of static attribute values,
DateTime.Now.ToString("format of some sort")
is a great example of what we need to be able to do. Earlier in the week I introduced Flee - Fast Lightweight Expression Evaluator[^] to members of the team, upon which reasons were being invented not to use it. Autonomously I've knocked up a working example that covers all the requirements we've specified in about an hour using Flee. Our planning indicates that we've put aside 5 days for writing an expression engine from scratch. Now I can guarantee that in 5 days I'd be able to write something that can evaluate simple static property and method calls, but very little else. In 1/40th of the time using a third party library I've done the job as far as I'm concerned and we've got a component that can do a hell of a lot more to boot. Not only that, but it's been peer reviewed on CodePlex and on here with almost entirely 5 star ratings and nearly 15,000 downloads on CodePlex. It's LGPL licensed and as we're not modifying it and it's already freely available, we won't have a problem redistributing it. If they're not watertight reasons for using a third party component instead of rolling your own then I don't know what are. Now I'm totally biased when it comes to how I develop. I 'll use any third party library that I feel can help me get my job done quicker so I can concentrate on quality and I absolutely detest reinventing the wheel, which makes it very difficult for me to see peoples' points of view when they object and claim writing everything from scratch is somehow better. What objections do you have to using third party stuff?I use third party libraries (and tools) whenever I consider that the effort of writing my own solution will outweigth the effort of making the third party solution work, usually I evaluate different solutions and pick the best/easy to use/better reviewed/open one; the only times I avoid a third party library is when their license is incompatible with closed source (I work with closed source systems) which invariably means when they use GPL.
CEO at: - Rafaga Systems - Para Facturas - Modern Components for the moment...
-
There may be trouble ahead! There's a constant debate at our place about the use of third party libraries. Half our lot refuse to use them, preferring to write absolutely everything themselves. It's no coincidence that the developers who use third party stuff get their tasks done quicker and with less bugs opened from said tasks. I'd call this good productivity. The current Not Invented Here debate is based around expression parsing. We want to be able to interpret expressions defined in Xml files in place of static attribute values,
DateTime.Now.ToString("format of some sort")
is a great example of what we need to be able to do. Earlier in the week I introduced Flee - Fast Lightweight Expression Evaluator[^] to members of the team, upon which reasons were being invented not to use it. Autonomously I've knocked up a working example that covers all the requirements we've specified in about an hour using Flee. Our planning indicates that we've put aside 5 days for writing an expression engine from scratch. Now I can guarantee that in 5 days I'd be able to write something that can evaluate simple static property and method calls, but very little else. In 1/40th of the time using a third party library I've done the job as far as I'm concerned and we've got a component that can do a hell of a lot more to boot. Not only that, but it's been peer reviewed on CodePlex and on here with almost entirely 5 star ratings and nearly 15,000 downloads on CodePlex. It's LGPL licensed and as we're not modifying it and it's already freely available, we won't have a problem redistributing it. If they're not watertight reasons for using a third party component instead of rolling your own then I don't know what are. Now I'm totally biased when it comes to how I develop. I 'll use any third party library that I feel can help me get my job done quicker so I can concentrate on quality and I absolutely detest reinventing the wheel, which makes it very difficult for me to see peoples' points of view when they object and claim writing everything from scratch is somehow better. What objections do you have to using third party stuff?jim lahey wrote:
We want to be able to interpret expressions defined in Xml files
Presumably because this reflects a real business need versus a 'really cool' development idea.
jim lahey wrote:
and we've got a component that can do a hell of a lot more to boot
Which isn't a recommendation. After all Oracle can do a lot more than store a configuration value but one certainly shouldn't choose to use Oracle only to store a configuration value.
jim lahey wrote:
What objections do you have to using third party stuff?
Some Reasons - Often the complexity greatly exceeds the needed use. - The intended use is much more suited to a far simpler solution. This is similar to but not the same as the prior reason. It comes about because the developer finds a library they want to use and then invents a problem to solve with it or rationalizes much more needed functionality for an existing problem. - The license is not compatible with the needs of the business. This often is because some licenses can require that the Application code must be available as source. Another common problem is that that there is no license which means one must have explicit use license from the author to use it. - It isn't available as source and the author(s) support is erratic. One must of course have a policy in place to keep and track license(s). And one should keep an actual copy of the license not just a link. One must also be prepared for the possibility that at some time the license might change.