Live data from Hacker News

Why I Hate Frameworks

discuss.joelonsoftware.com

51–60 of 127 posts

Re: Why I Hate Frameworks

#51

Earlier quoted context omitted.

Perfect thing to show people, when they want to know if Java is a good fit for their problem. Even a Pointy Haired Boss, shown this, might understand why Rails or Django or something might be a better way to go than dealing with this. EDIT: OK, so instead of Java, that should read "to know if enterprisey Java frameworks are a good fit for their problem." The irony is, that I just was IM'ing a friend about how this is…

Java is not the problem, the architecture is the problem. If you try hard enough, you can make something unwieldy and atrocious in ANY language. That's why enterprise architects get the big bucks.

That may be true, but it's a hell of a lot easier to make fugly spaghetti in something statically typed like Java (or C#, C++, and so on).

After 8 years of Java, I personally found it really refreshing to build stuff in Python and Ruby.

Re: Why I Hate Frameworks

#52
post #37
post #27

Here's the dirty little secret that no one wants to talk about... The purpose of "assisters" like frameworks and higher level languages is NOT to make good progammers more efficient. It's to make mediocre programmers more likely to produce something of value and to make poor programmers capable of producing anything at all. And if the bell curve tells us anything at all, it's that these "tools" target 90% of all prog…

"Only when you dip down into the mediocre masses do you need this help." And what is wrong with that? Some of us aren't the programming gods you are. If it helps people why get so high and mighty about it? I know with your superior intellect us philistines might seem dumb to you, but maybe you should stop writing about how smart you are when you can't even spell "programmers" right.

Fundamentally, you need to learn your craft. I have just inherited a large project based on Hibernate. I dislike it because there is all this crap between me and the database. I am proficient in SQL as well as Java and I don't like masking a very powerful language with a weaker Java-centric abstraction. If you are going to develop backends you need to understand databases and SQL. If you don't you will end up with an application that doesn't scale and is difficult to maintain.

Re: Why I Hate Frameworks

#53
post #46

Earlier quoted context omitted.

"essentially by building your own framework" Why build your own framework when there's one already there? Already well-used, well-tested, well-extended? Sure it may be easy enough to do, but is it really worth it? I, for one, would much prefer to be spending my coding time writing application logic than Yet Another Validation Library.

So, the popular theorem is that programmers who have been working for any amount of time already have the makings of their own frameworks. They've already written code to connect to or abstract a database. They've already written their authentication pieces. They've already written (or are using) something like Smarty for 'views' or display data. For many developers who toil in the same language all the time, or who…

I use Kohana myself, for exactly the reason that you mention you like Zend - it's a good starting point. And if I need to extend Kohana's model or rewrite it from the ground up, this is totally accepted and even encouraged by the framework.

I find it's just way, way easier to get up to speed with a framework as a base, and if your framework is any good, then it should be easy to shove aside later when you need to special-case things for performance or whatever.

Re: Why I Hate Frameworks

#54

Over-complexity is common in the Java space. I was aghast at using JMS. You make a Context so that you can tell it to make a ConnectionFactory, so that you can then ask that thing for a Connection, then you finally get to login . You can then instantiate Producers and Consumers and finally get messages. Why do I need to have 5 different objects when one would do? Having 5 different objects did absolutely nothing for…

This also makes unit testing extremely diffcult since you have the joy of creating mock objects for your Context, ConnectionFactory and Connection. I have all but given up writing test code at work. The various j2ee frameworks I have to use make it almost impossible.

Drop Classic J2EE and learn Spring. It will make things sooo much easier and manageable.

Re: Why I Hate Frameworks

#55
post #3

Rails: Here's a kick-ass hammer, a kick-ass saw, a kick-ass measure tape, etc... Oh, and if you need them to be different from the default, you can modify them as you want, but we think the default works for most people.

If Rails were a toolbox, all of its tools would break under duress. Regarding Ruby: "And furthermore, for me, programming languages and their runtimes are tools. I think they are for a lot of us. You wouldn’t continue to use a hammer whose head keeps flying off when you take a swift backswing, would you?" Good read: http://cbcg.net/2007/04/22/python-up-ruby-down-if-that-runti...

He also goes on to say:

I am discounting Rails here: I think Rails is great for what it is and I’ve had nothing but good experiences with it precisely because it is so “opinionated”. Its a very productive environment and manages to successfully avoid the runtime problems that I’ve personally hit in the past.

So... are you trying to make a point about Ruby or about Rails? Dare I give out the clichéd "Rails != Ruby" response here?

Re: Why I Hate Frameworks

#56
post #49
post #37

Earlier quoted context omitted.

"Only when you dip down into the mediocre masses do you need this help." And what is wrong with that? Some of us aren't the programming gods you are. If it helps people why get so high and mighty about it? I know with your superior intellect us philistines might seem dumb to you, but maybe you should stop writing about how smart you are when you can't even spell "programmers" right.

Struck a nerve, huh? This was partially in jest (notice the lol), and I realize this is sometimes hard to convey in writing. Sorry. But there's also a lot of truth in it, too. No one is born a mediocre programmer. It's a choice. Notice I didn't say a "junior" programmer. There's a difference. A junior programmer has less experience, but has a good attitude, is willing to learn, and practice his or her craft to get be…

Personally I've found when a decent framework is used, there's a lot less crap; since a lot of choices have already been made

ex. for web apps it prevents people from putting everything on one page (DB calls, logic, HTML, ...)

Re: Why I Hate Frameworks

#57
post #49
post #37

Earlier quoted context omitted.

"Only when you dip down into the mediocre masses do you need this help." And what is wrong with that? Some of us aren't the programming gods you are. If it helps people why get so high and mighty about it? I know with your superior intellect us philistines might seem dumb to you, but maybe you should stop writing about how smart you are when you can't even spell "programmers" right.

Struck a nerve, huh? This was partially in jest (notice the lol), and I realize this is sometimes hard to convey in writing. Sorry. But there's also a lot of truth in it, too. No one is born a mediocre programmer. It's a choice. Notice I didn't say a "junior" programmer. There's a difference. A junior programmer has less experience, but has a good attitude, is willing to learn, and practice his or her craft to get be…

I use a framework because I'm aware of the fact that I'm an inexperienced coder. I could work out every little detail by hand, but for me it's much easier to have something basic in place that I can tweak to my heart's content.

So I guess I'm just an ambitious junior programmer? Which is to say, I want to get better, but I also want to make my project production-ready as quickly as possible, so I use a frame and fill it out.

So I think it's a mistake to say that frameworks are only useful for making bad workers produce work. Better to say that there's a time and place for everything, and that while frameworks are overused, they're useful for certain people doing certain tasks.

Re: Why I Hate Frameworks

#58
post #49

Earlier quoted context omitted.

Struck a nerve, huh? This was partially in jest (notice the lol), and I realize this is sometimes hard to convey in writing. Sorry. But there's also a lot of truth in it, too. No one is born a mediocre programmer. It's a choice. Notice I didn't say a "junior" programmer. There's a difference. A junior programmer has less experience, but has a good attitude, is willing to learn, and practice his or her craft to get be…

Personally I've found when a decent framework is used, there's a lot less crap; since a lot of choices have already been made ex. for web apps it prevents people from putting everything on one page (DB calls, logic, HTML, ...)

Unfortunately for the original article, the JSR-168 Portal standard is one of the worst things ever created that became horrifically popular for some mysterious reason.

Re: Why I Hate Frameworks

#59
post #49
post #37

Earlier quoted context omitted.

"Only when you dip down into the mediocre masses do you need this help." And what is wrong with that? Some of us aren't the programming gods you are. If it helps people why get so high and mighty about it? I know with your superior intellect us philistines might seem dumb to you, but maybe you should stop writing about how smart you are when you can't even spell "programmers" right.

Struck a nerve, huh? This was partially in jest (notice the lol), and I realize this is sometimes hard to convey in writing. Sorry. But there's also a lot of truth in it, too. No one is born a mediocre programmer. It's a choice. Notice I didn't say a "junior" programmer. There's a difference. A junior programmer has less experience, but has a good attitude, is willing to learn, and practice his or her craft to get be…

"Struck a nerve, huh?"

Yes. I am not a great programmer. I only started caring about it a couple of years ago and since I don't have a real education in it I am very behind in many areas. I am trying to get better, but it's not easy.

"No one is born a mediocre programmer. It's a choice."

I don't know if I agree with this. Some people are born with incredible talent in various areas. Some people are just born musicians, others athletes, others programmers. There is no substitute for hard work, but some people will never be able to grasp what others can do. No matter how long you play guitar, you're not going to be Jimi Hendrix.

I understand your sentiment, I really do. But I would be careful of calling misinformed people lazy. I would bet good money that there are "standards" I am breaking with my code that I don't even know exist. If the books I read or the sites I visit haven't told me about them, I wouldn't call myself lazy.

In the end, HN is a community of amazingly talented people who are, to me, beyond brilliant. I think it's easy to lose sight of the "real world" some times when there are so many smart people in one room. Just have a little bit more slack for people who are trying and not as good as you. I think you will find it explains a lot.

"Some of us choose to write clear, effective, easy to maintain code without a framework. If you ever have to maintain my code, perhaps you'll understand."

Do you "choose" to do that, or are you benefiting from the years of education and experience you have? It's not like I can wake up tomorrow and choose to be an expert programmer. I can only try to keep learning(which is why I hang around here). I completely understand your frustrations with work, it can be a pain in the ass to deal with people who make your work harder through their incompetence, but I don't think it's as deliberate as you are suggesting it is.

Re: Why I Hate Frameworks

#60
post #54

Earlier quoted context omitted.

This also makes unit testing extremely diffcult since you have the joy of creating mock objects for your Context, ConnectionFactory and Connection. I have all but given up writing test code at work. The various j2ee frameworks I have to use make it almost impossible.

Drop Classic J2EE and learn Spring. It will make things sooo much easier and manageable.

It definitely does make the above more manageable, but it doesn't solve the core problem which is that the whole design pattern is built for complete configurability, but without sensible defaults. In some sense, Spring only exists to manage the massive configurability of Java design patterns, but by adding it's own configurations to the mix. It's definitely a cool idea, but the better solution is to just avoid factory/context patterns. It's solving a problem most of us don't have.
Post reply on HN