Sunday, February 24, 2013

Artful Vendor Relations

In any business, nobody does all the work themselves. We all rely on outside vendors from such mundane chores as providing the toilet paper up through providing phone lines, tax services, and legal assistance. And here in Information Technology we have our own set of vendors with wonderfully peculiar characteristics.

We group our unique compatriots into three worlds: the language vendors, the software package 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 a lot like choosing a wife. You may not have as much actual contact with the vendor as you would like, but you will 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, but that's a story for another post.

So what should you look for when selecting a language vendor? Probably the most important consideration is to perform an evaluation of their openness and how they admit to bugs and problems. Upgrades to language tools are major undertakings and a vendor doesn't take it lightly. So to meet ongoing challenges they should show resolve to provide workarounds.

Languages and development tools constantly change (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 or other languages. A software vendor employs a large number of programmers, who need to keep releasing new versions in order to maintain their livelihoods.

So it turns out to be a bit of a balancing act managing your relationship with a language vendor: stability helps your programmers be productive, and yet staying current of tools allows you to incorporate new aesthetics and retain younger talent. If you happen to be in the position of selecting a vendor at the start of a large project you will partly need to use your intuition (and contacts in the industry) to get a better sense of the credibility of the press and of the vendors.

On the other hand, if one of the major vendors 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. So take your time and be very deliberate when choosing a language vendor, for you will be living with your choice for a long time.

Friday, February 8, 2013

The Art of Compatibility

What does it take to be compatible with a long term software development career? Quite a bit, actually.

At inception projects may call for numerous meetings so you need to develop courtesy and show some ability to conduct the initial interviews with a bit of panache. If you naturally have the skills of an insightful listener then you may tend towards gathering requirements and performing analyses.

If you’re leaning heavily toward analysis then you will need to develop an understanding of strategic planning and what goes on behind the scenes in your company and in your industry. For management-facing positions writing and salesmanship talents are also essential.

If you’re more inclined toward the technical aspects of the profession then you need a strong grounding in logic and the aptitude for being well organized. Patience, research agility, and persistence will carry you far when you are coding.

A fair portion of your work will be teaching people how to learn to be competent in technically challenging tasks or instructing people on the intricacies of how your software operates. You must develop a patient and understanding attitude with those you teach: what may be obvious to you might be opaque to others.

Although creative work is satisfying since it entails “discovery,” you must be comfortable with continually learning and furthermore you need to be a self-motivated learner.

So to summarize, if you are thinking of pursuing software development ask yourself:

- can you write?
- can you sell?
- are you logical and organized?
- are you patient? persistent?
- are you competent at research?
- can you teach others?
- do you love to learn?

No two artists have the exact set of matching talents; the same is true for software developers. Maybe you’re more of a jazzy musician, fast to learn and improvise. Or maybe you are a patient oil landscape painter with a keen sense of planning. Although a handful of personality traits favor the profession, few need all of these talents: software development has enough sub-disciplines that you will easily find a niche dependent on your matching strengths.