You're viewing a comment by amn and its responses.

amn Permalink
March 24, 2016, 12:25

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.

Comment Responses

January 13, 2017, 12:45

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 :)

Reply To This Comment

(why do I need your e-mail?)

(Your twitter handle, if you have one.)

Type the word "security_508": (just to make sure you're a human)

Please preview the comment before submitting to make sure it's OK.