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.

I would like to ask something about project management. I got a project that has some requirements, it can be done from scratch with the use of a big framework. Maybe some tools are necessary for some of the functions. But using a framework seems very cool, it seems that reduces the amount of work, but need to study a framework first. But study a frameworks seems very big for the team. So, what do you think? Just get the thing done from scratch or study a framework and get started like 'Standing on the shoulders of giants'?

share|improve this question

closed as not constructive by gnat, Mark Trapp, World Engineer, Walter, Jim G. May 11 '12 at 23:58

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

6  
It's okay to reinvent the wheel as long as your reinvented wheel is substantially rounder and has better bearings than its predecessor. –  Jerry Coffin May 11 '12 at 5:06
1  
… which it probably won't be, especially if you haven't invested time in understanding its predecessor. –  Quentin May 11 '12 at 5:58
3  
Variations of this have been asked many, many times already. –  user8 May 11 '12 at 6:10
    
So many programmer questions are covered by a Joel blog entry, including this one: joelonsoftware.com/articles/fog0000000007.html –  Andrew Shepherd May 11 '12 at 6:57
1  
Even a square wheel is better than a wheel that can't be mounted... –  Max May 11 '12 at 9:36
add comment

3 Answers

If wheels were never reinvented for good reason, Honda Civics would have wheels chiseled from stone.

One great reason to not use a framework is that a lot of frameworks suck so bad, light barely escapes them. Sadly, people who use nothing but frameworks and libraries tend to not be in a great position to evaluate them.

As a client-side web dev, I've learned to favor tools that help you get the job done fast without compromising the flexibility you get from doing things your way because the tools will stay out of your way when you need them to. Django and JQuery (not really a framework technically but fits with the discussion) are very much built on this principle. Both are also stupid popular with those of us who continue to want more granular control of how stuff is implemented.

The prefab collectoins of built-for-you stuff, particularly where UI is concerned are almost never as flexible as you wish they had been and good luck to you when you want to start customizing something. I'm not saying you shouldn't shop around, but if you know your stuff and the available tools seem kind of awkward and difficult to maintain, ditch 'em and DIY. You will save time in the long run.

But the critical thing to remember is that you can almost always have your cake and eat it too. If you're trying a new framework or library out and it seems full of unnecessary chains of dependencies and requires overly rigid implementation that puts pointless constraints on environments it lives in, toss it out. It's a bad tool.

share|improve this answer
    
I believe the wheel has not been reinvented but just refactored numerous times... –  user1249 May 11 '12 at 12:07
    
@ThorbjørnRavnAndersen - that's because axles, tyres and suspensions have been reinvented so many times the wheels need continual modification. What you used to do in C you needed to do in C++, then Java and then C# and now objective-C. One day we'll stop continually 'improving' things. –  gbjbaanb May 11 '12 at 23:30
    
That day would be the day we're all dead. –  Erik Reppen May 11 '12 at 23:56
add comment

Using a framework suitable for the task at hand usually saves a lot of time, especially if it solves problems you are unfamiliar with.

I see the following problems:

  • You have a specific framework in mind. Question is if it is the most suitable for the task at hand?
  • Learning curve. How hard is it to use? How hard is it to debug your code?
  • Coolness factor of big framework is deceptive, but irrelevant. Use the best tool at hand.
  • Frameworks all have limits and trade-offs. Will any of these influence what you need to do?

At this time you need more information to be able to answer the question for yourself. I would suggest doing a quick proof-of-concept in the specific framework you consider, so you can compare effort and get an idea of how well suited it is for the task at hand.

I would also strongly suggest you keep your mind open to whether the framework you consider is the best for the task at hand or not.

share|improve this answer
add comment

It's not bad to reinvent the wheel, but only when necessary.

When is it necessary?

When you find a need to compact the amount of code for program size, efficiency ( meaning you found a better way ) or for learning purposes. These are the answers I have received from community feedback on a similar questions.

So the answer I believe you may be looking for is, NO! It's preffered to use a library or packaged framework when and if possible and to not reinvent the wheel for sake of time and money efficiency. It will be much quicker and easier to learn new libraries then reinvent the wheel for most circumstances. In addition you want to make sure the library or packaged framework encompasses skills your team may already have like programming knowledge and data storages.

I hope this helps.

@Ted Wong. Please try and clean up your question. I believe it has merit but needs to be organized and asked better. I gave you a up vote to try and correct this before the moderator closes it.

share|improve this answer
add comment

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