How to select the right technology for the job

(This is not strictly embedded, but I hope some will have a few good ideas anyway)

Following the specification and high level design process, technology choices have to be made regarding how an application will be assembled. This involves both a choice of platforms as well as architectures.

When presenting the job to several contractors (or developers for that matter), invariably almost each one of them will come up with their own "soup" of how to get the job done. One will propose VB, the other .NET and a third J2EE (and a zillion variations in between of any combination of letters you chose...).

Granted, there are many ways to build any application, but one would like to at least have the choices as close as possible to what is needed. And what is needed? Well, that indeed is a combination of requirements such as performance, maintainability, speed of development, etc.

Anyway, given that this is the way things are (and believe me it can get very confusing), the question is - how does one determine the best (or close to best) choice of architecture and technologies for a given application and NOT get taken for a ride just because some consultant/developer only knows this way or that?

Thanks

Reply to
ElderUberGeek
Loading thread data ...

Assumptions:

  1. You do not know all these technologies intimately.
  2. The technologies are non-trivial to learn and it is not practical for you to attend training in them.
  3. The consultants are willing to put in reasonable effort to get this piece of business.
  4. The consultants are sufficiently experienced and honest to quote development time and other requirements accurately.

Given the above:

You cannot make the judgement yourself merely by looking at the features of the given technologies. Furthermore, a consultant is likely to specialize in use of a particular set of tools (it's inevitable, and NOT a bad thing; I'd rather hire a specialist in one thing than a mediocre performer at many things), so the consultant is not going to be able to give you an accurate competitive analysis of one of his counter-bidders' proposals.

Obtain from your consultants a quotation and specification that includes measurable performance criteria pertinent to the application, including:

  1. Time to prototype delivery. Recall that as soon as Marketing gets to play with a prototype, they'll realize some parts are silly and iterate the spec.
  2. Time to project completion.
  3. Per-hour labor cost.
  4. Hardware that will be required - flash size, RAM size, expected CPU horsepower, special requirements (FPU, MMU, Jazelle, &c).
  5. Realtime characteristics, if any, appropriate to the application; e.g. "Will respond to interrupt within 2ms", "Will sustain 60fps decode of 352x240 MPEG-1 data stream", and so forth.

on each technology when applied to your project, and the answer will then be self-evident when compared to your desired break-even point. Item 5 is used to balance marketing desires vs. projected profitability.

This method is not perfect but it's the best I know.

Reply to
larwe

IMHO, possibly the best way is by hiring a consultant who has experience in the kind of project you oare trying to do.

You are right regarding that there are many ways you can build any application and sometimes developers choose quick development time vs performance.

I am in the process of converting a .NET application that was running under XPe in a PC/104 computer at 533Mhz to a little ZWorld 27.5Mhz SBC with C. After the conversion our application will run about 10X faster than the one under XPe w/ .NET (No flames please) but our customer went for the XPe/.NET solution with the previous consultant because he was able to complete the project for about 50% less in development costs/time.

One other way of knowing if the choice of architechture and technologies pitch to you by a company is the wrong one is to ask for a list of what kiind of projects they have developed before. If all their projects are based in the same type of technologies (XP,.NET, SQL.... or MySQL, X, Linux or whatever) you know that there is a pretty good chance that they are going to pitch to you what they know even tho it may not be the best solution.

My .02 cents..

Miguel

Reply to
Mike Gonzalez

... snip ...

It's immaterial, unless you are going to maintain and revise it yourself. You are buying a black box. What counts is the specifications etc. Anything more and you are micro-managing.

--
"If you want to post a followup via groups.google.com, don't use
 the broken "Reply" link at the bottom of the article.  Click on 
 Click to see the full signature
Reply to
CBFalconer

I agree. However, I think that there are extreme conditions. For example, some technology platform might be way..... worse than another or some archetecture much.... better. So in my view as a manager I am trying just to avoid these gross errors (for example, not to have something take 2 months when in all reality it can take 3 weeks).

Reply to
ElderUberGeek

All consultants are going to pitch what they know best. Many different systems could be equivalent. You need to figure out what is most important to you. Total cost, Time, or per piece cost. Your best bet is to INSURE the consultant is familiar with your type of system. Otherwise he will learn on your dime. Or learn at the end that the hardware is too big (more $$) or too small (ie too slow).

Reply to
Neil

Further to other responses, also consider maintenance. Who will maintain/extend/fix the project?

I have known projects to be declared unmaintainable, and effectively rewritten from scratch, because the initial developer chose to use some technology that no-one else was familiar with, and was either no longer available, or was effectively holding the project to ransom.

Steve

formatting link

Reply to
Steve at fivetrees

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.