While us programmers tend to say "I'll just program it myself" it is actually much faster to:
- Buy an off the shelf program and take 3 hours to read their proprietary API for extra functionality.
- Use an existing library and read the documentation rather than building your own code.
- Use VB.NET or Delphi for the front-end user interface.
- Buy a properly documented royalty-free library for under $1000 rather than spend months integrating open source code.
- Use Python or VB.NET even tho it just feels right to use Java/C. (Ok, I said it. Now if I can only get this VB.NET flame shield program to finish loading.)
Unfortunately, us programmers tend not to do this. "Oh, we need a queue class? I'll just build it myself, takes like 30 minutes tops."
As coders, we need to think like an engineer who is building a car. No engineer building a car will make the engine or windshield themselves. But us coders do this all the time.
There are 2 parts to every program:
[1]: The new scientific code/algorithm you are writing. Which is typically quite small. (5%) [2] Everything else. (95%)
How many times have I got that urge.. "I don't want to do the research. I want to jump right in.. I bet I can finish this tonight.."
90% of the code out there is already written. It is more about adding the glue. And of course, finding it and reading the docs.
- Buy an off the shelf program and take 3 hours to read their proprietary API for extra functionality. Then learn that you cannot integrate it into the current system (because of licensing, data format, missing features). Since you cannot make changes to the off the shelf program, you have to rewrite most of the existing code, just to satisfy the programs expectation. Or spend a month writing software that does a two-way sync between the proprietary API and the current data. Then learn that the API documentation is not complete/correct, then that new versions come out once a year - whether you need a bugfix or not.
I agree with the rest though... if there is a library, use it. Pay for it if you really need it. Just make sure you can modify it when needed and that you can do what the api/docs says you can - otherwise the software you bought is worth nothing as soon as you hit a problem, or you spend more money working around the problems than rewriting the software from scratch would cost.