Ian Cooper

Sponsors

The Lounge

Wicked Cool Jobs

Advertisement

Should you learn frameworks or principles

Normal 0 false false false EN-GB X-NONE X-NONE MicrosoftInternetExplorer4

There was a comment on the On Learning Boo post along the lines of : I only focus on learning frameworks, because they increase my marketability, learning new languages, ideas like DSLs just takes time away from that effort. It is a fairly common attitude. I have spoken to people who have told me that their focus is on learning the Microsoft .NET toolset, commenting that they feel that is enough of a challenge and one that translates best into career opportunities. I have seen recruiters and companies assessed with statements like 2 years of ASP.NET MVC as some means to indicate the competence of a developer to join a team.

At the same time for many developers the number of new frameworks tumbling out of Redmond makes it seems like a struggle to keep up. Those who feel that they must keep up, naturally feel overwhelmed. Restricting their focus to just what comes out of Redmond seems like a good strategy to manage the problem. Unfortunately, focusing on learning vendor frameworks is a trap. There will always be another new framework to learn to do what you were doing yesterday. Look at the churn in data access frameworks in the Microsoft space. Knowledge gained is quickly outdated. You end up on a treadmill, learning one vendor framework after another. You fall into the trap of appraising your next job solely on the criteria of what frameworks your prospective employer is using, just so that you can gain some experience using that new framework and keep your C.V. up to date.

Assessing developers by their knowledge of them, especially through certifications is an equally bad trap for employers to fall into. At best it is deceptive about what skills developers actually need. At worst it is a prison because the investment of knowledge in a particular technology becomes a ball-and-chain that makes individuals and corporations resistant to change. Having hired all those skilled Webforms developers and learnt all those vendor control kits, how could you rationally adopt ASP.NET MVC for your next project? After all you don't have any experience with it. Should you now dismiss your entire team and hire experienced ASP.NET developers? Or if you do change, what good did it do you to recruit people based on their understanding of the ASP.NET page lifecycle. Would it not have been better to hire people who had the skills to learn new frameworks?

When I was younger, I used to focus on learning the latest toolkit because I saw that as the best way to improve my marketability.  I spent ages poring over the internals of MFC, ATL etc. I could talk about the details of the STL, Boost, Loki with the best of them. I wanted to be an expert on those libraries. I looked for new jobs when old ones did not offer me the opportunity to use the latest and greatest frameworks. Did it make me better developer? Maybe, but not in the way I expected. What I gained from poring over those frameworks eventually was an appreciation of the common underlying patterns. I might have learned something from understanding how the internals were implemented too, but it was pattern recognition of ideas like iterators, factories, template methods that gave me the most benefit. The next time I tried to learn a library, seeing how it solved problems I understood, seeing how it use patterns and principles I recognized, meant that I was able to being working with the framework faster. But I did this hard way, not by recognizing patterns I was aware of and seeing where they were implemented, but by discovering them seeing them repeated.

The reason so many of us get excited by books like Fowler's Patterns of Enterprise Application Architecture, his work on GUI Architectures of DSLs (and the work of others) is that they capture those patterns and principles.  A solid knowledge of the principles relating models, views, and controllers would enable you to learn a range of web frameworks ore quickly because you look to see how they solve problems.

Learning new skills such as how to write a DSL in Boo will give you the breadth of aproaches that enable you to deliver better architected applications. The burden of maintenance is greater than the burden of writing, so a better architected application is always a good investment for a company. Far more than squeezing some obscure feature out of your latest framework is.

If anything the industry has moved on from those nuts and bots frameworks, and the abstractions have gotten better. Less and less do you need to understand the how and more and more the why? Knowledge of the patterns and principles provide continuing value to you as frameworks change. It also helps you understand how to use the frameworks, how to judge their quality against some kind of best practice yardstick and how to manipulate them when they fall short of best practice

As someone who interviews people I look more for understanding of the principles than the minutiae. The problem is that there will always be a new 'better' framework, a new popular paradigm. There is always the possibility that a new language comes along that we want to use instead for a given project. People who understand the principles can adapt. People who focus on the detail are intransigent to change, because they have too much invested in the framework that they have become an expert in.

Now before someone suggests otherwise I am not implying that people do not need to know how to use their tools to get the best out of them. Of course they do. But you will find a more efficient path to assessing and learning new frameworks through understanding the principles behind them than through learning each one in isolation.

 

 


Posted Thu, Jun 11 2009 3:12 AM by Ian Cooper

[Advertisement]

Comments

Dario Solera wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 3:38 AM

I completely agree: it's very important to learn patterns, principles and best practices. You get better at solving problems, and that's an invaluable thing.

At any rate, I can see that some frameworks are pushing new/improved design paradigms that later became patterns. This would be an interesting discussion topic.

Dave the Ninja wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 3:53 AM

+1 Ian. Very well put!

Ninja

progg.ru wrote Should you learn frameworks or principles
on Thu, Jun 11 2009 4:29 AM

Thank you for submitting this cool story - Trackback from progg.ru

Parag Mehta wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 5:00 AM

Hi Ian, Nice Article!. I fully agree with your thoughts

marko wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 6:45 AM

excellent post :)

I have a friend, and from college until now he was always trying to learn as he calls it: Concepts...so he learn about networking, about drivers and so on and so on...so now wherever he find job, doesn't matter is technology asp.net mvc or actionscript, soon he becomes the best in that area...so, I can tell from this example and from my experience, you are right.

Cheers

David Hayden wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 9:42 AM

Well said, Ian.

I think you're saying, however, that learning new frameworks is not a bad idea as learning new frameworks often leads to learning new concepts, principles, and patterns.

In fact, I think learning a framework, if it is a good framework, will help bring value to principles and patterns that are not often easily digested into value by merely reading them. Often you need to see them in action, which is what a good framework can do.

That being said, however, you must be able to separate the principles from the framework and understand its value outside of the context of the framework to become a better developer.

Ezequiel... wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 11:23 AM

Great Post...

I think the error is to learn a new framework like a black box... Ok, if you have to learn a new one, go deeper into the code and understand what all those methods are doing.

That will be you a better developer...

sorry for my english, grettings from Argentina

Peter wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 11:26 AM

Ayende covered a similar topic, which may interest you: "The difference between derivation and innovation" - ayende.com/.../The-difference-between-derivation-and-innovation.aspx

Jibey Jacob wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 11:42 AM

I've been working in this industry for well over a decade, and after a recent revelation I've had to make a broad overview of what's been happening. I've learned lots of new frameworks, programming paradigms, programming languages, etc. during the course of my career. All this time I never knew that I was being robbed though. Almost everywhere I worked, they used Ethernet at Layer 2 to run IP over, and I never knew about Ethernet's hierarchical nature. Why is Ethernet hierarchical? How is this hierarchy formed? Is there any documentation on this?

I've sworn to never again work for any employer unless:

1. Everything attached to the Internet around the planet is upgraded to IPv6. This implies use of InfiniBand at Layer 2, in lieu of Ethernet.

2. The Internet is enhanced with the logic to biometrically authenticate human users and determine that the person being authenticated cannot be at more than one place at the same time. This requires the development of a new routing protocol that enhances IPv6 and one that uses GPS-bases addressing in addition to the functionality in IPv6 addressing.

3. WiMAX is rolled out around the planet so I can use a VoIP phone on this newly enhanced Internet wherever I go. My phone must be intelligent enough to tell me whether any phone number is on a PSTN, cell network or if its a VoIP number, and I wouldn't want to deal with anyone on a PSTN or cell network.

4. When I do start working again, I wouldn't want any device drivers running in the Windows kernel other than signed drivers from Microsoft. All other drivers will have to be user-mode drivers signed by their respective developer companies and certified by Microsoft HQL.

5. The "friend" keyword has to be obfuscated in the C++ language.

6. All monies that are due to me must be paid to me ASAP.

Joe Chung wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 2:43 PM

Don't argue false dichotomies.

5x1llz wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 9:37 PM

great post...

to be honest there has to be a balance because I have gone through enough job interviews to know that while they question you about OOP e.t.c. when you START the job they really want to know if you can do X with the set of tools they're using.

I find you need to have a good understanding of principles... and also keep up with all flavours and mixtures of tools

In the past few weeks I've spent so much time on frameworks, because as you said they're new frameworks OSS/MS coming out every freaking 3 minutes it's ridiculous... I still have parts of C# 3 I'd like to play with but also have to find out all the innards of MVC and MVC Futures to keep up with the project I'm on and deliver this baby on time..

it's a real balancing act I tell you.. often times, I learn the framework, get it working and then refactor to principles as I learn them ( i.e. I start seeing more and more code smells and then refactor them or add new language acrobatics to them to keep them clean e.t.c. )

5x1llz wrote re: Should you learn frameworks or principles
on Thu, Jun 11 2009 9:43 PM

Sorry I'd like to add that sometimes some frameworks are so good and enticing, it's hard not to just adopt them and get to bed ontime... i.e. S#arp Arch.. But I've refrained only so that I can learn MVC as much as possible first before jumping on a quick-fix OSS framework that hides all the plumbing a little too well.. that being said I still study it's use of principles and the tool to see how others are leveraging and combining both for a super clean solution.

It is really more work this way but the responsibility of learning is on the student... and it's nice to actually know what's going on as much as you can, so don't always go for the magic-bullet OSS without knowing how to do most of it on your own.. this is another benefit to OSS.. you can just use them to learn...

Saibou wrote re: Should you learn frameworks or principles
on Fri, Jun 12 2009 6:41 AM

IMO, there's no opposition between a good knowledge of the frameworks and a better comprehension of the principles and patterns.

likewise, you need a pretty large experience to figure out the principles and best practices.

I consider it's natural to begin by learning the frameworks in details and month by month you get enough experince to see beyond these details.

Bill wrote re: Should you learn frameworks or principles
on Fri, Jun 12 2009 11:05 AM

First of all, I agree with you fully 100%. Learning a new IDE or upgrades in the tools that you use or even a new framework can be time-saving and professionally useful. However, the rate of change is getting to be so fast that depending on a framework rather than principles is a fool's errand--full of sound and fury; signifying nothing.

One of the things it took me too long to work out is that Design Patterns are essentially a helpful set of models for applying principles. In fact, I see design patterns as a cheat sheet for applying good OOP principles, and not some stultifying set of modes that limit one's ability to think.

If you don't first get the principles straight, you'll never get the frameworks right.

Jibey Jacob wrote re: Should you learn frameworks or principles
on Sat, Jun 13 2009 12:56 PM

What I meant was that the "friend" keyword has to be deprecated in C++.

And in this industry where companies hire people in place of criminals that can't show up at work, I guess Ethernet would make sense. I know that if I work for such companies I'll never really get paid.

TD wrote re: Should you learn frameworks or principles
on Fri, Jun 19 2009 2:45 AM

Hi there. I wrote that original comment, so allow me to elaborate before you flame on. I do agree in the importance of learning new concepts and principles. In the past year and a half, I've read Jimmy Nilsson's DDD book and dabbled in Python and IronPython. Before that, I fell in love with design patterns.

However, on the specific matter of learning a new language every year, I have mixed feelings. If I had the time, sure, I'd love to. I'm very curious about F# at the moment. But sometimes I wonder if that advice was given at a relatively slower time in the industry, i.e., before the .NET avalanche.

What about the idea of taking the time to master your primary language? Doesn't it take years to approach a mastery level with a language? How many of us fully understand the .NET event model? I can create and raise custom events, but I don't know the steps off the top of my head. Many developers have never applied custom delegates. Have you researched how you might apply custom attributes to your code?

The bottom line for me is, well, the bottom line. In the limited free time I have, I have to pick and choose what to learn. In my opinion, I'm better off using that limited time doing what the market compels me to do.

Fregas wrote re: Should you learn frameworks or principles
on Mon, Jun 22 2009 2:23 PM

Sadly, few employers look at patterns or principles on a resume other than some basic oop.  All they care about is whether you know sql 2008, wcf, wpf, wf, LinqToSql, etc.  

I totally agree with you.  Even knowledge of a programming language syntax is less important to me than just being a good programmer that knows good principles.

DaveTheDave wrote Keeping your skill set relevant
on Tue, Jun 23 2009 12:19 PM

Keeping your skill set relevant

Oakland Business Directory wrote re: Should you learn frameworks or principles
on Tue, Jun 30 2009 10:00 PM

I was thinking of looking up some of them newspaper websites, but am glad I came here instead. Although glad is not quite the right word… let me just say I needed this after the incessant chatter in the media, and am grateful to you for articulating something many of us are feeling - even from distant shores.  Please come visit my site  <ahref="http://www.oaklandcaclassifieds.com">Oakland Yellow Page Business Directory  when you got time.

retirement communities wrote re: Should you learn frameworks or principles
on Mon, Jul 13 2009 11:26 AM

You got a really useful blog I have been here reading for about an hour. I am a newbee and your success is very much an inspiration for me. Please come visit my site  <a href="http://www.consultantretirement.com">retirement housing</a> when you got time.

vacation rentals wrote re: Should you learn frameworks or principles
on Mon, Jul 13 2009 11:28 AM

Wow! Thank you! I always wanted to write in my site something like that. Can I take part of your post to my blog? Please come visit my site  <a href=“www.businesseschicago.com”>vacation rental</a>  and give me any valuable feedbacks.

vacation rentals wrote re: Should you learn frameworks or principles
on Mon, Jul 13 2009 11:31 AM

Wow! Thank you! I always wanted to write in my site something like that. Can I take part of your post to my blog? Please come visit my site  <a href="http://www.vacationrentalsresort.com">vacation rental</a> and give me any valuable feedbacks.

Jkgofdxe wrote re: Should you learn frameworks or principles
on Mon, Jul 13 2009 7:59 PM

gXmNmQ

vacation packages wrote re: Should you learn frameworks or principles
on Tue, Jul 14 2009 3:51 AM

You may have not intended to do so, but I think you have managed to express the state of mind that a lot of people are in. The sense of wanting to help, but not knowing how or where, is something a lot of us are going through. I would love some feedback on my site  <a href="http://www.toursightseeing.com">vacations</a> when you got time.

stock brokers wrote re: Should you learn frameworks or principles
on Tue, Jul 14 2009 3:54 AM

I am not really sure if best practices have emerged around things like that, but I am sure that your great job is clearly identifed. I was wondering if you offer any subscription to your RSS feeds as I would be very interested and can’t find any link to subscribe here. Please come visit my site  <a href="http://www.brokersbonds.com">online stock broker</a> when you got time.

Discount Furniture wrote re: Should you learn frameworks or principles
on Tue, Aug 4 2009 4:58 PM

I agree, thanks for the article it was good!

Add a Comment

(required)  
(optional)
(required)  
Remember Me?
Devlicio.us