views:

258

answers:

12

Out in the dev lang there are many many, frameworks for all types of languages. For instance, javascript has jQuery, which I use all the time without even thinking about it. Then for php there is Zend and CodeIgnitor, Ruby has rails, Python has django. That's just a few off the top of my head.

I have always been the type of person that was against a framework, especially for PHP. I was always under the impression that using a framework would make people conceive you as lazy developer or to have the inability to code in the raw format. However, for a while now I notice large projects are being made in these frameworks.

I am very curious as to what the opinions are of everyone. Does using a framework make you less of a developer then using raw code, also lets add in a variable and say that you don't already know all the ends and outs of the primary language?

+3  A: 

Not using one makes you sure hell of a lot less productive however!

Pierreten
+3  A: 

Using the right framework gives you the ability to get actual, real work done. This means, IMO, you're more of a programmer, not less.

Reed Copsey
+16  A: 

I always lived by the idea that it's better to write everything yourself...

... just to see how it works, then throw it away and use stable frameworks :)

While this may sound like a joke, there's much truth here -- rolling up something yourself will teach you a lot. And what you learn will allow you to better utilize what is already available.

Kornel Kisielewicz
I agree wholeheartedly. One should write their own ORM, just so they can appreciate one that's written for them. But they should also know when to call it quits and leverage the work of others.
Mike Brown
Yes, it's knowing "when to stop" that makes a good programmer :)
Kornel Kisielewicz
The only downside of this approach is that your version may take a very different approach to the major stable framework's version; for instance, if you code a "Pylons" and then wind up using a "Django", you'll learn stuff, but it's not necessarily the best use of your time. Depending on the circumstances, it might be better to just skip "your version", and spend that time reading the source code (and maybe even fixing a bug or two) of the framework you plan to use. Oh, and if your framework doesn't let you view the source code, don't use it :-P You'll thank yourself later, trust me.
machineghost
+2  A: 

No more than using a language instead of raw binary does.

ceejayoz
+5  A: 

See Not Invented Here.

Andy West
+4  A: 

A good framework is indispensable in Javascript, to tide you over all kinds of incompatibilities between browsers that would otherwise drive you crazy. In languages where you have more control over the runtime environment, it's not indispensable, but it can supply you with a lot of useful functionality and stop you from reinventing the wheel -- so using the right framework for the task (which may not necessarily be the most popular one, if what you're doing is a better match for a different framework, perhaps a lighter-weight or somewhat specialized one) doesn't make you a lesser programmer, it makes you an intelligent one;-).

Understanding what's going on at (at least) just below the layer of abstraction you're coding to is an excellent idea (partly due to Joel's "law of leaky abstractions"), but that's no reason not to use a lower level of abstraction than available and suitable, except in a "learning and experimenting way" (i.e. not in production work;-).

Alex Martelli
+3  A: 

The only way to use 'raw code' is to write your programs in 0s and 1s. Otherwise, you are using a 'framework' of some sort. C is a layer on top of assembly which is a layer on top of machine code. That doesn't make a C programmer any less or a programmer - she is just working at a different level. In the same way, using a framework on top of PHP means you are just working at a different level. There are good programmer who build Zend (and other frameworks), and there are good programmers who use those frameworks to build business applications. Being an application level programmer is nothing to be ashamed of - it is hard work to do it right, whether or not you use a framework.

Ray
0s and 1s is just a layer on top of soldering your own specialized hardware, which is just a layer on top of the laws of physics... etc
Carson Myers
we probably shouldn't start a discussion on who is doing the programming down at the physics level...
Ray
+2  A: 

As the complexity of the tasks we are trying to accomplish increase, our only choice is to build on the foundations that others create. The main goal of any programmer should be to solve a business problem in a cost effective manner. If you don't solve real problems in a cost effective way then you definately less of a programmer.

Jeffrey Hines
+1  A: 

Being entirely dependent upon a framework makes you less of a developer. Using one as part of your toolkit when the need is there does not.

prodigitalson
A: 

There is zealotry on both sides of the argument. You have the ones so starry-eyed about one particular framework that they use it for /everything/ (I usually see them in the form of beginner Railers or PHP programmers). Then you have the ones that are "hardcore" and as such "don't need hand holding", which more or less translates to them using last generation's frameworks instead (beacuse, after all, it's turtles all the way down).

It really comes down to knowing your framework. I would posit that using a framework without knowing its strong and weak points does indeed make you less of a programmer (if you are the one in charge of the decision), and should be counted as a cardinal sin. Study the frameworks, study the problem domain, make the informed choice, not the biased one.

Being able to make these kinds of decisions is what seperates good programmers from the... not-so-good ones.

Daniel Bruce
+3  A: 

Davidmoreen, does using ASCII make you less of a programmer? I say, go ahead and make your life easier.

alt text

Derek Illchuk
Very good point my friend.
David
+1  A: 

I beleive it's important to understand the fundamentals of your tools and know how they work. THere'll be times when you need to work on the framework itself or just understand and debug what it's doing.

That said do you really need to remember to call session_start() at the beginning of every page load, or include the config files, or establish a database connection, or any one of the other minuetae that a framework will do for you and leave you to get on with creating the "unique" portions of your application?

I disagree with learining and using a framework without understanding the undelying language and concepts, but choosing to use one gives your code structure and makes you a lot more productive.

Jim OHalloran