Choose Your Tools with Care

From WikiContent

(Difference between revisions)
Jump to: navigation, search
m (Use tools frameworks and libraries. Wisely moved to Choose your tools wisely: The previous title wasn't that good)
Line 1: Line 1:
-
Modern software development relies more and more on the availability of proper tools libraries and frameworks.
+
In 1995 David Garlan et al., wrote "Future breakthroughs in software productivity may well depend on the software community’s ability to combine existing pieces of software to produce new applications". Nowadays, their prediction has become true. In fact modern applications are very rarely built from scratch, but they are assembled using existing tools--components, libraries, and frameworks--for some very good reasons:
-
 
+
-
Some of the reasons are:
+
* Applications are growing in size, complexity, and sophistication, while the time available to develop them is less and less
* 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
+
* Widely used components and frameworks 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
* 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
+
* Software production is human intensive work, so buying may be 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
+
However, choosing the right mix of tools for your application can be a tricky business requiring some thought:
-
* 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
+
* Different tools may rely on different assumptions about their surroinding context--e.g., surrounding infrastructure, control model, data model, communication protocols, etc.--and this can lead to an "architectural mismatch"
 +
* Different tools have different lifecycles, and upgrading one (or more) of them may become an extremely difficult and time-consuming task
* Sometimes free software is not free, after all. You may need to buy commercial support, which is not necessarily going to be cheap
* 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
* 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.
* Etc.
-
By all means use tools, libraries and frameworks, but make sure you choose them wisely.
+
By all means use components, libraries and frameworks, but make sure you choose them wisely.
[this is still work in progress]
[this is still work in progress]

Revision as of 10:12, 7 May 2009

In 1995 David Garlan et al., wrote "Future breakthroughs in software productivity may well depend on the software community’s ability to combine existing pieces of software to produce new applications". Nowadays, their prediction has become true. In fact modern applications are very rarely built from scratch, but they are assembled using existing tools--components, libraries, and frameworks--for some very good reasons:

  • Applications are growing in size, complexity, and sophistication, while the time available to develop them is less and less
  • Widely used components and frameworks 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
  • Software production is human intensive work, so buying may be cheaper than building

However, choosing the right mix of tools for your application can be a tricky business requiring some thought:

  • Different tools may rely on different assumptions about their surroinding context--e.g., surrounding infrastructure, control model, data model, communication protocols, etc.--and this can lead to an "architectural mismatch"
  • Different tools have different lifecycles, and upgrading one (or more) of them may become an extremely difficult and time-consuming task
  • 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 components, libraries and frameworks, but make sure you choose them wisely.

[this is still work in progress]


By Giovanni Asproni


This work is licensed under a Creative Commons Attribution 3

Back to 97 Things Every Programmer Should Know home page

Personal tools