What is meta? ×
Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 128 Stack Exchange communities.

The biggest problem I am facing now as a developer is finding the right tool for the job. The problem isn't finding them, but knowing whether they are worth taking the time to evaluate. Especially, when making the wrong choice can be very costly. The time and effort to install, learn and experiment with a new technology shouldn't be underestimated.

To give you an example, I am having a tough time making a decision on what JavaScript framework I should invest my time in. There are tons of them and finding the right one can be quite frustrating. You never know, until you've sat down and used it. Evaluating software was hard enough before the popularity of open source, but now it's becoming a nightmare, especially with the rapid change in technologies.

For this reason, I often turn to Stack Overflow to get people's experiences. Unfortunately, Stack Overflow doesn't like these questions because they're considered non-constructive and open-ended. I do understand the reasoning behind it. The Q&A format can be abused to market products and projects. Regardless, some legitimate questions are closed because the person asking the question doesn't have enough experience with a technology to frame the question in an objective way.

What are developers supposed to do when faced with what tantamounts to drinking from a firehose? As developers, we are spending more time evaluating technologies than actually getting work done. Perhaps, there can be special question and answer type with limited parameters to better fit the Stack Exchange format?

share|improve this question
    
I don't spend the bulk of my time evaluating frameworks at all; sounds more like analysis paralysis. Unless you have a deep understanding of a framework, and the particular problems the asker is trying to solve, it's a crapshoot. It's easier to do a superficial framework analysis with your particular needs in mind, pick one, move forward, and accept either that (a) you might be wrong sometimes, and/or (b) you'll have to "work around" essentially no matter what you chose. –  Dave Newton Sep 3 '12 at 17:28
9  
Don't ask for tool recommendations. Ask about the problem you're trying to solve. The answer might very well be a tool recommendation. –  Bart Sep 3 '12 at 17:29
8  
"As developers, we are spending more time evaluating technologies than actually getting work done.". Your problem is here. You should choose the technology only when you're experienced enough so that it doesn't take much time. Even if you're working alone, don't spend too much time choosing. Build. Maybe you didn't choose the best technology but you'll be wiser next time. –  dystroy Sep 3 '12 at 17:30
2  
I feel with you. Most problems we face can be easily solved by yourself, whereas for technology evaluation, external input is very valuable. –  CodesInChaos Sep 3 '12 at 18:09
    
@dystroy, I spent a good deal of time studying JavaScript before I realized that it sucks in a viscious manner. I may not get type checking, but I can at least get some structure and sensibility out of it. Sadly, the computer scientists who hated the world for not using LISP, found a way to foist it on us via JavaScript. –  user148298 Sep 3 '12 at 19:12
2  
@user148298 Non Sequitor Alert Non Sequitor Alert –  Rosinante Sep 4 '12 at 0:17
    
@user148298 JavaScript "sucks" in a few, specific, avoidable ways. Once you know those ways, it's as expressive as any other curly-brace language, plus a bit more. If your objection is to JS itself then consider a language that compiles to JS. Like with any framework, you'll still have to know JS, but the language will isolate you from the few, specific, avoidable areas where JS is malformed. –  Dave Newton Sep 4 '12 at 4:34
3  
The Q&A format can be abused to market products and projects. Oh don't worry, we got that covered big time. We have a satellite with several self-replenishing-flag-guided-nukes (sponsored by Diamond-Moderation Inc., New York ... don't confuse with Diamond Mockeration Inc. in Massachusetts. Never ask them for nukes...NEVER!) in orbit which allows us to nuke nearly everyone within a few minutes. –  Time Traveling Bobby Sep 4 '12 at 7:18
    
I considered filing a feature-request for a "List Overflow", which allows us to create lists and manage them...but everytime I start thinking about it I ran into several problems: Subjective, unmaintainable, and if you want lists go to Wikipedia. –  Time Traveling Bobby Sep 4 '12 at 7:20
    
In general, when I don't want to spent a ton of time evaluating which choice of technology to use for a particular problem, I just choose the most popular one and roll with it. The most popular one is often technically inferior to some of the other options, but the true value of the popular choice is the size of the community. A large community is an extremely helpful support net. In your case, since you are looking for a javascript framework, choose jQuery. Not because it's necessarily the best, but because it's so popular you will always find help when you need it. –  Ben Lee Apr 18 '13 at 19:18
    
Just an addendum to my previous comment: Obviously you should do a quick examination of each possibility to ensure that it is capable of what you need to do (not to mentioned finding a list of possibilities to begin with) -- but that's the easy and less time-consuming part. When you've narrowed it down to a short-list and don't feel like doing an in-depth analysis of each choice, going with the popular one is not a bad heuristic. –  Ben Lee Apr 18 '13 at 19:21

4 Answers 4

This morning I had about 8 frameworks in front of me, trying to decide which one I'll use for a new project. In about an hour I've disqualified three, simply because they lacked functionality I need. They have other super awesome features, and they might even have the specific features I needed but didn't make it obvious in their documentation, so we are left with five. Time to dig a little deeper, spend about half an hour trying to understand what (basic) architectural decisions each of them would impose on me.

Two more off the list, one for being an over-engineered piece of crap and the other because after a while I had absolutely no idea what it was about. That brings us down to three, and it took about four hours1. This is were it gets tough, all three frameworks seemed excellent for what I need them for, from a very high level view.

Time to look even deeper, and get a bit subjective; I spend about an hour examining each one's code, and looking for obvious smells, or just plain obnoxious coding style. Looking at the code also gave me a better understanding of their architecture, and after about 8 hours2 I'm down to 2 and I've decided to stop for the day.

Sounds easy? Well it is:

  1. I've been doing this for almost 15 years. I have absolutely no idea how long it would have taken me to get down to 2 choices if I was relatively new.
  2. I know exactly what the project's requirements are, having written most of them myself.
  3. It's a pet project, a wrong choice wouldn't hurt (much).

Still, the process is basically the same:

  1. Know what you need

    Your project must have well defined requirements.

  2. Know what you don't want

    Avoid architectural choices that smell, or that you simply aren't comfortable with.

  3. Know what you want

    If all else is equal, look at stuff like code quality, testing coverage, etc.

I'm now at a point where I might venture a question on Stack Overflow. If I do, I will try to:

  • Clearly present the project's requirements,
  • Explain why I've already disqualified some of the available solutions,
  • Point out that I'm trying to choose between the two frameworks, but I'm open to other suggestions.

In doing so, I have:

  • Asked a question about an actual and practical problem,
  • Shown prior research and effort to solve my own problem,
  • Didn't leave much room for spammy answers.

I probably won't ask, pick one of the two and be done with it, but I don't think my question would have been closed (but who knows?). As I've already mentioned, I don't know how much time all this would have taken me if I was a noob, but 99% of "recommend me" questions I've seen from (truly) noobs are:

  • Extremely broad and/or
  • Naive (trying to chose based on popularity/hype alone) and/or
  • Pointless (trying to chose a framework when it's completely unnecessary).

These questions are of little use to anyone, I'm afraid, and I don't think we should do anything to accommodate them. Call me elitist if you must, but you'll need to keep in mind that developers have been evaluating solutions decades before Stack Overflow appeared, and we were doing just fine. I'm addicted to Stack Exchange (not so much Stack Overflow itself, though) and I don't really miss the good old days. The site has helped me spend more time on actually being productive instead of searching for things, but we can't take research and effort completely out of the equation.

I'll gladly help someone solve an actual, practical problem, if it's within my expertise. But if it's broad recommendations you are looking for, my time will be better spent building stuff.

</rant>

1 In case you're wondering where the extra half hour went, well, there were a few questions on Programmers that needed closing ;)
2 This time the extra time was all Reddit.

share|improve this answer
    
In my case, I am a programmer for over 26 years starting from circuits and assembly language and fell in love with C# and .NET. Up until recently, I realized I have to face the music and learn JavaScript. Sigh... It reminds me of LISP and its LSD inspired syntax. If I am going to program in JavaScript, I want the experience to be as painless as possible and working within a framework would help. Currently, I really like Ember.Js because it's intuitive, object-oriented and allows for easy mixing of other libraries. –  user148298 Sep 3 '12 at 19:07
    
@user148298 Then you know all of the above, there's no best in general, there's best for what you are building. Tell us what you are building... –  Yannis Sep 3 '12 at 19:15
    
In actuality, you're more likely to have a question closed if it is JQuery vs Vanilla.js. You'll get links to the obligatory Gorilla vs Sharks allegory designed to humble and humiliate you. –  user148298 Sep 3 '12 at 19:19
1  
@user148298 Good thing then that I always have the option to pester the SO moderator's mercilessly in Teacher's Lounge, until they re-open it ;) On a (far more) serious note, if you frame your question correctly and clearly present well defined requirements, Gorilla vs Shark doesn't apply. –  Yannis Sep 3 '12 at 19:23
6  
@YannisRizos This answer is a work of art. –  Rosinante Sep 4 '12 at 0:20
    
This is considered pretty fast for a one-man operation. Easily takes ages for any other entity as they go back and forth over impertinent details. Choices can be a bad thing sometimes. –  prusswan Sep 4 '12 at 6:55
2  
@prusswan Fast? Well, I intentionally didn't disclose the nature of the frameworks I'm evaluating, for all you know they might be extremely small pieces of code. I'm sharing an experience that I thought was relevant as I was actually doing this when the question appeared. For larger solutions, the evaluation process might indeed take ages, but the process itself is more or less the same (imho). Furthermore OP specifically discusses JS frameworks, if it takes you ages to evaluate JS frameworks you are doing it wrong (again, imho). –  Yannis Sep 4 '12 at 6:58
    
@Rosinante Thanks ;) –  Yannis Sep 4 '12 at 6:59
1  
@YannisRizos - Wouldn't it have been great if there were some reliable source that told you that one of them was over-engineered crap, one of them is unclear about what it is for but actually is good at blah, and a basic idea of what situations they were all good fits for? Stack Exchange probably has the resources to this fairly well, but it doesn't have a mechanism. Of course, I don't have a mechanism either, but there really is a big value if anyone figures it out. –  psr Sep 4 '12 at 18:08
    
Didn't seem ranty to me at all - quite a good answer –  Adam Rackis Sep 5 '12 at 1:07
    
@prusswan you're either unlucky or mix programming with politics. At four different entities I used to work at through last decade, engineering part of technology evaluations went about as Yannis describes: not particularly easy stuff but not even close to what you describe –  gnat Sep 5 '12 at 6:19
    
@psr and Adam sorry for ignoring you, but I never got the notification for your comments. (bug report here: meta.stackexchange.com/questions/145940/…) –  Yannis Sep 5 '12 at 7:55
    
@psr The problem is that the one framework I considered over-engineered crap is the sweetheart of its niche. Had I posted a question about it, I would most probably have been mercilessly flamed by fanboys and fangirls. I would absolutely love it if we somehow could accommodate such questions, but I don't think the engine can currently cope with them. Also my decision to drop it is completely subjective, and has already given me some (extremely minor) grief with colleagues, as they were hoping it would be my final choice due to its popularity. –  Yannis Sep 5 '12 at 8:04
    
"will look good on my resume" was the sanest of the arguments given from a colleague. Well, I don't care, I only care for building solid stuff in as little time as possible. If the parameters of an evaluation question are strictly technical, then it's a good question to ask (imho) and it's all I'm saying. –  Yannis Sep 5 '12 at 8:06
    
@Yannis I see the bug report you linked to is closed. What was the resolve? –  Tshepang Apr 25 '13 at 20:56

The Q&A format can be abused to market products and projects.

Besides this. There aren't correct answers for these types of question. Or was is all answers are equally correct? Either way off-topic for SO.

some legitimate questions are closed because the person asking the question doesn't have enough experience with a technology to frame the question in an objective way.

I fail to see what lack of experience with technology has to do with the ability to ask an objective question (perhaps you have an example).

As developers, we are spending more time evaluating technologies than actually getting work done.

Often these type of question require knowledge about what someone needs. This will be totally different from OP and other readers.

Perhaps, there can be special question and answer type with limited parameters to better fit the Stack Exchange format?

It is much more useful to dive into these things yourself, because only you know all the requirements and expectations. And these types of question simply don't suit the Q&A style of SO. Maybe there are some forums somewhere on the internet (remember SO isn't the only source of knowledge on the internet). But these kind of questions simply don't work on SO.

Perhaps if you can rewrite such a question to be objective and specific you may get more luck.

P.S.

The only JS framework to use is Vanilla JS. It comes pre-installed on every modern browser. And is pretty fast ;-)

share|improve this answer
7  
Heh, thanks for reminding me this: vanilla-js.com –  Yannis Sep 3 '12 at 17:34
4  
LOL! Vanilla-js.com is hillarious! But seriously, what I really mean is that a newbie will often ask a question that seems open-ended because they don't know enough about the technology to frame the question in a way that will produce an "objective" response. –  user148298 Sep 3 '12 at 19:06

I have often used SO to help choose or evaluate technologies. While my process is very subjective, I gain quite a bit of insight from SO. I'm including in this list only the things I do on SO, leaving out everything else.

I start with a growing list of candidate technologies. For each candidate:

  1. Look for tags for the candidate. See how many questions use the tag. This gives me an idea of popularity. It can also indicate bad documentation, that it is hard/confusing to use, etc.
  2. Search for the tag, sorting by votes. This shows what are the things that most helped people, and things that I should learn before I start using this candidate.
  3. Search for the tag, sorting by newest. This shows how active the candidate is and if it is still being used much.
  4. Look for questions that relate to my expectations and requirements. Especially look to see of the answers are easy or complex. This gives me a feel for how well it will meet my needs.
  5. Look at random questions with the tag. Get a feel for the quality of the answers -- how good is the Stack Overflow user community for that tag. Get a feel for the reputation level of the answerers.
share|improve this answer

I came across this question the other day, which would probably get nuked immediately if it was asked now: low quality, subjective, list of all things etc.

But look at the answer(s). How much time would it take you to be able to get to that kind of executive summary on your own? This is an excellent example of sharing knowledge, and for my money is far more useful (i.e. to a greater number of people) than most of the "I can't get it to work" questions we get.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .