Using Frameworks Doesn’t Mean You Don’t Have To Know What You’re Doing

11 commentsWritten on August 23rd, 2011 by
Categories: Opinions

I came across a good post yesterday titled "Are frameworks making developers dumb?". I wouldn't say frameworks make developers dumb, but i have noticed on way too many occasions that many developers don't really have a clue about what the frameworks they're using are actually doing. And it's not just within one specific developer community. I've seen it in the .NET, Java and Ruby camps and i'd expect it to be common in every single platform that becomes big enough to no longer be considered a niche.

People develop frameworks so other people don't have to deal with certain details all the time. People use frameworks so they can focus on what matters to what they're trying to do, without having to focus on lower-level stuff that's not really relevant to them. I mean, that sounds great, right? Just use the right framework to do what you want to do and you instantly become more productive! Even if you picked a good framework to use (and we all know there are plenty of bad/horrible ones to go around), you still need to know what the framework is doing. Abstraction purely for the sake of not having to know what's going on is hardly ever a good thing when it comes to software development. Does that mean you have to know every single detail? Of course not, but you should be aware of the things that might end up hurting you.

In software development, nothing is free and when something suddenly becomes easy due to a framework, you ought to figure out why it becomes easier and how that is achieved. If you get the answer to those 2 questions, you're much more likely to use the framework more responsibly instead of following blind faith or not caring about things that you simply can not just ignore. Like it or not, memory management matters. The cost of complex database operations (leaving in the middle whether you're using an RDBMS or a NoSQL solution) or the frequency of them matters. Bandwidth matters. Remote calls matter.

And there's a lot more to it than possible performance issues. Unwise usage of frameworks can also have a detrimental effect on the maintainability of your code. What might look like an improvement at first could very well lead to serious inflexibility and/or fragility in the long run.

Simply put: a lot of the things that frameworks try to hide under the carpet matter. Every benefit you get from them has a potential cost. If you want to keep enjoying those benefits, you better learn how to avoid the costs.

  • Patrick

    Hi Davy

    I posted some time ago about this topic too: http://blog.eweibel.net/?p=718

    Patrick

  • http://twitter.com/peterhoogers Peter Hoogers

    This is so true. I saw a project where lazy loading was implemented (multiple levels deep, of course).
    Running a SQL profiler when doing some batch data manipulations in that application made you want to shoot yourself.
    Give people a “magical feature” and they will abuse the crap out of it without even realizing it. Sadly, I think this is due to the UNinquisitive nature of a lot of devs out there, which is unlikely to change :-)

  • http://profiles.google.com/tkmagesh77 Magesh K

    I wouldn’t have attempted MVC if i had to implement it myself..  

    • http://davybrion.com Davy Brion

      i certainly don’t mean you should write everything yourself… it’s just worth investing a bit of time into figuring out how the stuff you use works

  • Dinuka Arseculeratne

    From my experience what i have seen is that people put various technologies in their cv which is in their current working project but they have not worked in areas which involved those. For example if some one was in a maintenance project he/she would not exactly know every technology used in that project but they tend to put that in their CV thinking that would be impressive. I have found many a people like that as well. Even if i were in a maintenance project what i would do is, in my free time go through the code in depth to understand the architecture which in turn benefits me as an employee and my employer as well.

    Cheers

    Dinuka

  • Justin

    I agree with you on this one. I don’t like to sound arrogant (because I’m really not), but I kind of get annoyed when other developers don’t take the time to understand how things work. I’ve always been an inquisitive developer (which is why I like your blog). I’m now in the process of reading a 900+ page book so I can understand how the CLR works under the hood (CLR via C# by Jeffrey Richter, I recommend it). The curiosity just comes naturally I guess.

  • http://twitter.com/mehieltwit Aggelos Karalias

    So true. 

    And this is the main reason why open source frameworks rule the world even in closed source platforms. Of cource a closed source framework with excellent documentation can be very predictable but if you have the sources you can see exactly what’s going on (and maybe debug/fix/extend it).

  • Pingback: ¿Hacen los frameworks tontos a los desarrolladores? | Koalite's blog

  • Pingback: Frameworks emburrecem os desenvolvedores? « fabiano florentino

  • Anonymous

    The north face store is more than just a jackets, it is a status symbol, But you should know is the north face jackets for women fashion house cultivates.

  • Justcdma

    I agree with you. but I have no so much time to study the details