views:

453

answers:

7

What I mean by that is saying "I'm going to use the Microsoft stack" and then sticking to IIS/MSSQL/ASP.NET/Silverlight. Now, it might not be the Microsoft technology stack. It could be a Linux/Apache/MySQL/PHP/JavaScript/Flash/Flex or Linux/Tomcat/PostgreSQL/Java/JavaScript.

How important is it to make the choice on what to use for server, database, server-side code, and client-side code, and then stick to that?

EDIT: For clarification, I don't mean across all projects. I am referring to the beginning of a project when you must decide how you are going to go about implementing the solution.

A: 

You get experience with that and you become faster and faster and you don't have to learn the same thing again and again

Davide Vosti
+2  A: 

It's important to know two things before deciding to stick with just one stack:

  • What is your target market?
  • What is your core competence?

The technology stack you use is a choice that is meant to respond to and/or complement these two questions.

First, the target market -- who are your potential customers? Are they small, upcoming businesses that need to find the cheapest solutions to the most common problems? Are they big, established corporations that have traditionally stuck to enterprise solutions? Do they accept open source, or are they skeptical about it? Do they require rigid technical support structure, or are they flexible to your terms?

All of these have implications as to which technology stack you wish to use for your venture, whether solo as a consultant or when you put up a startup.

The second question is as important -- which technology stack are you good at? Which technology stack are you willing to spend time and/or money learning? In your area, which technology stack has a good support community?

If you are creating a startup, there are additional questions: in your area, what are your prospects of hiring developers in a given technology stack? Are they expensive in this particular area? Are they readily available? Is there enough supply of both senior labor and fresh graduates?

You must take all of these into account.

Take note that there have been consultants and startups that are good at more than one technology stack (most of the time these are startups with multiple teams though).

Jon Limjap
+2  A: 

As long as you have proven, and reliable, interactions between the various layers of your stack, there's very little need to be conformed to any one particular 'named' stack (e.g. as you said 'the Microsoft stack'). However, it should be noted that if you're constantly changing technologies, you'll end up as a jack of all trades, but master of none - and that is most certainly death to any significant web applications or services you choose to make.

My suggestion? Find a set of technologies you like (custom or 'named', as you suggest it) and stick with it. But, do you research first, you don't want to end up stuck with some shoddy combination that doesn't the job done. But, for the sake of reliability of your developments: don't change technologies every two minutes. Of course, when choosing your technology, you must bear in mind the requirements of the task at hand - so know this before you commit.

James Burgess
A: 

@Davide Vosti: I think you misunderstood the question. I clarified in the original posting, but I'm asking about for a particular project, not across all projects.

@Jon Limjap: That sounds like good advice, but what would you recommend for a project that only you are using? Or only your company is using, and you can choose anything you want to (perfect world, I guess).

Thomas Owens
A: 

@Thomas,

I think the second point becomes more relevant: what are you good at?

The chances of success in a project increases if you're good at what you're using. :)

Jon Limjap
+1  A: 

I believe that it is more important to use the technology stack which:

a) Provides the best solution according to measurable statistics (performance, reliability etc) b) You have adequate inhouse skills to provide a suitable level of competency to allow you to solve your problems with, including support and maintenance c) Unless you are in education and personal training, provides the least business impact (Financial costs, training etc)

There is the "If it ain't broke" mentality which will say stick with what you have unless it doesn't do what you need it to. This will be supported by all the points above unless you can give suitable metrics to backup a justification to switch to a new technology.

We all want and love to play with new technologies, but if it costs the business cold hard cash with no justifiable gain then you probably wont end up flavour of the month.

Xetius
A: 

To choose a stack, look at what you enjoy doing. For example, if you absolutely cannot live in Windows, you should not torture yourself and your friends by sticking with it. When you are in a comfortable environment, the rest is easy. Learning how to do some specific thing by some specific tool is the easiest thing in IT world, right :D?

Then, to stick with your stack, only let those who share your choice be in your team. I once was accepted into a Microsoft oriented team, and it was a miserable experience. Whenever we had discussion, I realized after a while that I was lamenting about some "stupid features" (I just got used with Linux stuffs), and made others feel really bad. Furthermore, my opinions also diverted our attention from the project into the technology used, which further decreased the miserable productivity I contributed (remember, Linux advocate in Visual Studio is not THAT productive). Therefore, don't let people like me into your Windows team, nor should you let Windows/Microsoft people into your LAMP team.

I think that's all

magice