Читать книгу The Art in Business System Design - Jeff Chapman - Страница 14
ОглавлениеLanguages and Tools
Software developers ground themselves on languages and tools just as painters depend upon oils, brushes, style, canvas, and subject. Most developers eventually find themselves wed to the languages and tools that they find best meets their work objectives; the process of arriving at this mating however can be winding and perilous.
In this chapter I describe some of the difficulties and neuroses associated with being dependent upon vendor-supplied tools and languages.
Artful Vendor Relations
In any business, nobody does all the work themselves. We all rely on outside vendors for such mundane chores as providing the toilet paper up through providing the phone lines, tax services, and legal assistance.
Here in Information Technology we have our own set of vendors with their own wonderfully peculiar characteristics.
We group our unique compatriots into three worlds: the language vendors, the software vendors, and the hardware vendors. We’ll get to all three in due time, but today we will chat about the marvelous world of language vendors.
Selecting a language vendor is comparable to choosing a wife. You may yearn for greater contact with the vendor, but you will still get to deal with what she cooks up and her aesthetic tastes will affect you long after she is gone. Yeah and changing language vendors is as painful as going through a divorce.
So what should you insist upon when selecting a language vendor? Probably the most important consideration is to perform an evaluation of their openness for how they admit to bugs and problems. Upgrades to language tools are major undertakings and a vendor doesn’t approach it lightly. So to meet ongoing challenges they should show resolve to provide a workaround for any of their bugs.
Languages and development tools constantly evolve (and I’ve never seen a version of a language released with fewer verbs than the previous version). To some extent the vendor is trying to remain competitive by adding the functionality that becomes available in competitors’ products. A software vendor also employs a large number of programmers who need to keep releasing new versions in order to maintain their livelihoods.
Managing your relationship with a language vendor turns out to be a bit of a balancing act: stability helps your programmers be productive, and yet staying current of tools allows you to incorporate new aesthetics and retain the new young talent. It’s as if you are a circus performer crossing the high wire repeatedly from one platform to another, except the balance bar you ferry keeps on growing.
If a major vendor announces their plans for their next release of one of their market-leading programming tools then you would be remiss to overlook its pending availability in your plans. Is the language starting to succumb to “featuritis” or does it still allow for competent upward and downward compatible development? You will need to use your intuition (and contacts in the industry) to get a better sense of the credibility of the press reviews of the vendor.
Evaluate carefully and be very deliberate when choosing a language vendor, for you will be living captive with your choice for a long, long time.