This work is licensed under a [http://creativecommons.org/licenses/by/3.0/us/ Creative Commons Attribution 3]

This work is licensed under a [http://creativecommons.org/licenses/by/3.0/us/ Creative Commons Attribution 3]

Back to [[97 Things Every Programmer Should Know]] home page

Back to [[97 Things Every Programmer Should Know]] home page

Revision as of 08:49, 1 November 2008

Modern software development relies more and more on the availability of proper tools libraries and frameworks.

Some of the reasons are:

Applications are growing in size, complexity, and sophistication, while the time available to develop them is less and less

Tools libraries and frameworks that are widely used are likely to have fewer bugs than the ones developed in house

There is a lot of high quality software available on the web for free, which means less development costs, and higher likelihood of finding developers with the necessary expertise

Given the fact that software production is human intensive work, often buying is cheaper than building

Reduced time to market (or to “production” if it is for internal users)

However, there is not such a thing as a free lunch. Tools must be chosen wisely, in fact there are some potential problems to consider

Every tool has its own pros and cons, and, depending on the combination you choose they may actually make your development activities more complicated than necessary

Sometimes free software is not free, after all. You may need to buy commercial support, which is not necessarily going to be cheap

Vendor lock-in. Code that depends heavily on specific vendor products ends up in being constrained by them on several accounts: maintainability, performances, ability to evolve, price, etc. Finally, there is a reduced scope to negotiate the licensing fees

Etc.

By all means use tools, libraries and frameworks, but make sure you choose them wisely.