Every program has (at least) two purposes: the one for which it was written, and another for which it wasn't.
Alan J. Perlis
I am doing a startup!
Cross-browser testing from your browser!
I have written my fourth book!
Be faster than Larry Wall in the shell!
You're viewing a comment by Christoph and its responses.
I completely disagree with this biased article. It seems like you're either using frameworks wrong or it's based on bad experience. You have to make a framework your tool, not be their slave. Then suddenly all the reasons above turn 180 degrees.
Very few frameworks, by their nature, let you turn themselves into your tool. I am by no means a very experienced framework user, but I have been through Wordpress, Django, Celery (Python), JQuery, RedMine, and some others, and have not to date been in a position where I could turn either of these into a tool I could really wield. It was always an upstream battle against frames of thinking imposed on me by these. And I don't blame them per se -- like I said, frameworks, by nature, impose limitations. You trade complexity for convenience.
Can you give examples which frameworks you have managed to make your tool and turn the reasons 180 degrees? I am interested in the process --- like, what did you have to do to the framework in question, or a particular way you applied the framework, etc.
Needless to say, I agree with the author of the article. Frameworks rose to the top because there was genuine need to share and reuse logic for rapid application development. That need has been addressed indeed, at the cost of development freedom. Nothing very strange about it, but we can't continue to pretend it's the only way. It's a bad way, but the mind rot has set in, wouldn't be the first area of life where humans have settled for the mediocre alternative. But we need to acknowledge the mediocrity for what it is then.
Hi, I totally agree with you, but I have some other thoughts and lets just put aside the fact that jQuery is not a framework.
I have just spent 6 months wrangling Django, more specifically the admin side of the framework, and yes, it is an opinionated beast. Most frameworks are. They are built by developers who have an 'aha' moment about how things should work, then they build it, viola, a new framework. I agree that using a framework stifles creativity, but the irony is that a framework is a creative solution to a perceived problem.
SO was I able to use Django creatively... kind of, did I have to fight it to do what should be simple things... definitely. But when I needed to do something which the framework was built for... Oh the wonder and simplicity. I needed a database table to be searchable... ok, just give a list of searchable fields as a class member and bang... searchable database table. If I tried to code that from scratch, a) I would have just built the same thing over again, and b) it would have taken me far longer than setting a variable in a class.
To put it simply, frameworks are simply tools you can use to get a task or set of tasks done, without writing the code yourself. They are not meant to allow creativity, they are meant to be the hammer to the nail, nothing more. If I need to cut watermelon, will I choose a hammer? (That could actually be fun).
Another reason of why to choose a framework is recruitment. Yes, you can be super creative and solve heaps of things with your own code, but then any dev to come after you needs to understand your thought process, and style of coding. Why do you think the largest companies in the world think Python is great... one word... formatting. You can raise a pull request, and the way the code looks wont be very different between every dev on the team. So it's a productivity thing, If Company A uses framework Blurg, then it can hire Blurg developers, contract them in or out, and get productivity off the starting line. Otherwise every company you walk into would be like learning Angular all over again! Possibly worse if you happen to get hired by the PHPSpaghettiMonster.Org
Whats my point here? Basically, I don't think frameworks are evil, and I do think solving problems with your own creative code is a dying art. I want to blend both worlds, because writing the same boilerplate crap day in and day out is depressing, but trying to figure out why coolframework5 just wont stop converting all my strings to ALL CAPS is a pain I don't need.
Both approaches have their place, when used in the right way. We just need to learn when to use them!
BTW, I totally made Django my biatch. I killed off a bunch of plugins, took it back to core Django + Django Rest Framework, sprinkled on some Angular, then overrode that puppy till it was half dog, half machine. My productivity increased after 2 months, I took the defect rate way down, and I didn't have to spend ages doing some basic stuff, allowing me to get the UI to an acceptable state of usability. I definitely solved some problems in a creative way, using lesser worn paths or Django development.
Nice article :)
(why do I need your e-mail?)
It would be nice if you left your e-mail address. Sometimes I want to send a private message, or just thank for the great comment. Having your e-mail really helps.
I will never ever spam you.
(Your twitter handle, if you have one.)
* use <pre>...</pre> to insert a plain code snippet.
* use <pre lang="lang">...</pre> to insert a syntax highlighted code snippet.
For example, <pre lang="python">...</pre> will insert Python highlighted code.
* use <code>...</code> to highlight a variable or a single shell command.
* use <a href="url" nospam>title</a> to insert links.
<a href="url" nospam>title</a>
* use other HTML tags, such as, <b>, <i>, <blockquote>, <sup>, <sub> for text formatting.
Type the word "antispam_508": (just to make sure you're a human)
Please preview the comment before submitting to make sure it's OK.
Peter Krumins' blog about programming, hacking, software reuse, software ideas, computer security, browserling, google and technology.
Reach me at:
Or meet me on:
Subscribe through an RSS feed:
Subscribe through email:
Enter your email address:
Delivered by FeedBurner
See all top articles
See all downloads
See more detailed list of recent articles
See more detailed category information
See more detailed list of all articles