Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

While architecting the system, often you have to choose the appropriate technologies to be used for every module. What are the different parameters to be considered while choosing the technologies/frameworks? How those parameters can affect the project quality, schedule, expense? Can anybody please explain in detail.

share|improve this question
2  
While you're at it; please explain the meaning of life ;o) In other words: That is one mighty big question you ask!!! –  Morten Dec 15 '11 at 9:42

4 Answers 4

up vote 3 down vote accepted

What are the different parameters to be considered while choosing the technologies/frameworks?

  • Politics.

  • Experience.

  • Budget for license.

Note that there are few technical considerations that really matter C#, Python and Java (for example) all work perfectly. The choice is usually political or experience more than anything else. Having talked to a lot of CIO's and development directors, the politics of the situation matter more than almost anything else.

How those parameters can affect the project quality, schedule, expense?

Zero effect.

Quality is a matter of doing things properly. Right Design. Right Requirements. Right Budget. Right Testing. Right Attitude. etc. Technology doesn't matter.

Schedule is a matter of having the right people doing the right things at the right time. Technology doesn't matter.

Expense is a function of licensing and schedule. The technology choices are irrelevant.

Most -- not all -- most technology choices are based on experience. "Go with what you know." You build highest quality most quickly with familiar tools.

[I prefer the rare cases of choosing something new. However, after 30 years in this business, I've seen most decisions based on experience and going with something well-known.]

share|improve this answer
    
thanks for your reply. Before a month or so, I heard that initially Twitter was developed using Ruby on Rails. And in fact, that was one of the most successful application developed using RoR. But due to some scalability issues, twitter shifted to java and that has increased its search speed some folds. This is what I read on internet. If it is true, then... Is it only POLITICS and availability of experienced professionals which matters while building an application? or other parameters like scalability also plays role in choosing technology? Please correct me if I am wrong. –  Saurabh Dec 15 '11 at 11:58
1  
I am not convinced that RoR cannot scale given some effort. If they were to put enough effort to it, they could figure out the complexity issues. Not all technologies are created equal, some have certain strengths over others certainly, but effort solves everything. Look at the effort Facebook has put into scaling MySQL as a perfect example, in the end however, that decision to abandon the effort of getting RoR to scale in favor of a Java rewrite was a political one and probably based on money and available talent on the job pool. A good Java developer is more common than a good RoR dev. –  maple_shaft Dec 15 '11 at 13:39
1  
@Saurabh: "parameters like scalability" play no role at all. R0R can be written in a scalable manner. Java can be written in a way that doesn't scale. Both technologies work. –  S.Lott Dec 15 '11 at 15:25

I once heard of a company who gave a fake advertise that they want to hire some developers. The selection criteria was to plan a project (the one they were actuly starting to working on). You had to chose the technology and how many people would work on it etc.

Then they just picked the technology that was mentioned most of the times:)

I don't recomend this but I just had to share this short story:)

share|improve this answer

Some broad criteria may include:

1-Type of application (Web, ETL, etc.)

2-Expertise of development team and whether the gap is could be crossed

3-Budget fit

5-User Requirements and usability needs - Compare each competitive technology for that. This is very broad point. You need to examine every known requirement against the selected stack/platform.

6-Ease of finding knowledgeably support people (if you plan to live with the product)

7-Software licensing style (per user, server, etc.)

8-Interface compatibility between the platform/tools and the existing systems

9-Localization support (in some countries where English is not the first language)

share|improve this answer

It's a broad question, but one thing you should keep in mind is the balance between new technology and routine. It's a trade-off in my eyes and you have to choose a value between close to outdated but well known, tested and understood by experienced programmers and bleeding edge, interesting to learn, doing more things for you than the previous version.

My experience is focused on a team size of 5-7 programmers and I tend to say that you shouldn't introduce more than one entirely new technology per project if noone in the team has worked with it before.

As for choosing the appropriate technology, vertical prototyping can help a lot so you understand how the new framework affects the rest of the technology stack you're using.

share|improve this answer
    
+1 for 'not more than one entirely new technology per project'. One of our project went horribly off-schedule due to addition of many new technologies. Very true..we should not introduce many entirely new technologies per project. –  Saurabh Dec 15 '11 at 12:01

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.