Platform generalists versus framework specialists

A trend I’ve noticed especially in Javascript/front-end jobs are emphasizing, requiring, even titling jobs after specific Javascript frameworks. “Ember.js engineer needed”. “Angular programmer”. This raises a few of thoughts for me:

  • Is the framework so complicated you need someone with extensive experience building non-trivial apps?
  • Is your timeline so short you don’t have time to teach anyone a framework?

Earlier in my career, when WPF was announced, I had a choice to invest time in my career to learning it. It was the obvious successor to WinForms, and *the* way to build thick-client apps in .NET, if not Windows going forward. I hesitated, and decided against it, after learning more about the technology and seeing how proprietary it was.

Instead, I doubled-down on the web, learning server-side frameworks to help build web apps more than ever. ASP.NET MVC embraced the web, unlike WebForms, which had its own invented abstractions. All the WebForms knowledge I had is more or less wasted for me, and I vowed to never again become so engrossed with a technology that I become specialist in a framework at the expense of understanding the platform it’s built upon.

I don’t want to be an “Ember” guy, an “Angular” dev, an “Aurelia” expert. I want to be a web expert, a messaging expert, a REST expert, a distributed systems expert. I saw this most clearly recently when helping out on a Spring MVC project. Because I understood web platforms, I could pick up the framework easily. The parts in Spring that were hard were hard because of the complexity of the framework, and those were parts I was a lot less inclined to be an expert upon.

One of the biggest reasons I’ve shied away from new, all-inclusive, heavyweight frameworks is it’s a tradeoff for me of potential productivity and administrivia knowledge. I’ve only got so much room in my head, and I’d much rather it be occupied with more important things, like vintage Seinfeld/Simpsons quotes.

About Jimmy Bogard

I'm a technical architect with Headspring in Austin, TX. I focus on DDD, distributed systems, and any other acronym-centric design/architecture/methodology. I created AutoMapper and am a co-author of the ASP.NET MVC in Action books.
This entry was posted in Architecture. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • I love the “administrivia”, did you make that up? Good point about saving room for the obviously more important things in life.

  • Tijmen Bruggeman

    I don’t know about all of the frameworks but I reckon they adopt common patterns. Would it be a smart idea to invest time in learning these patterns to quickly adopt and understand other frameworks?

    • jbogard

      Yep, exactly!

    • balazs hideghety

      Nice article, nice thoughts. Market and HR is different. They want people willing to relocate, commuting each workday, rather than people willing to work. They are willing to wait months for the “proper” candidate, and by proper I mean: a cheap, “expert”. As one of the HR said in a phone interview: most of our clients is looking for B class developers…

  • I try to hire saying things like “has applied the MVVM pattern and can understand why it works, where it doesn’t fit, etc” because too often a developer “knows angular” but they’ve never actually taken the time to see how it actually works and that it’s not magic. I still use Knockout myself but have read enough about Angular that I can see how it does its watches, etc and take an educated guess, which I then went and learned about to confirm, how it works under the hood.
    Agree that learning the platform, and knowing how to apply your knowledge, is better than being an expert in a narrow thing like a framework that may no longer be ‘cool’ in a year’s time.

  • Quooston

    Something I wrestle with all the time. I consider myself a “man of many talents, master of none”. Good or bad? Don’t know for sure, but it’s done me pretty well this far. All those frameworks are just tools that you can quickly learn enough of to be pretty productive when you grok the underlying tech.

    Good article, totally agree.

    • Bitwise

      I think that you’re selling yourself short there; the value of being a generalist when it comes to technologies and frameworks is that you’re constantly demonstrating your understanding of the core concepts that form the foundations of these technologies.
      That knowledge is far more valuable than the particulars of any one framework or tech stack; in that sense, you might just be more of a master than a single-stack evangelist.

  • Ryan Litvak

    I for one welcome our new framework overlords

    • jbogard

      *sigh*

      • Dave

        I just want to double down on that *sigh*

    • some dude

      Haha, good one.

      Kind of funny seeing a post talking about over engineering while older post is about event source, which no matter how I see it just another over engineering pattern. I know it is from different author but seeing it on same website I cant help but laugh at the irony.

  • I think it depends on the position whether you’d want a generalist or a specialist. In my opinion, Angular is complicated enough that the learning curve is non-trivial. It took me close to 6 months of using it until I really got my head around it.

    I think on-the-job training approach works fine when you’re hiring a junior/mid-level person to join a team during a normal scenario. If we suddenly lost an Angular expert on our team or if a scope/resource issue came up, we’d probably go for an expert. Plus, most specialists have the same skill set as generalists… they’re just maybe not quite as experienced (time-wise). I would feel pretty confident that a team that understood Angular would have a pretty good head start in figuring out something like React.

  • Noam

    I agree. a lot of young guys are becoming angular/ember/mocha/coffee/espresso developers and don’t really know strong server side and distributed systems. I guess you can get by that if you work on SPA.

    I think it’s exhausting to keep up with those frameworks because every week there is a new one coming out that is THE framework.

  • Bloody market dictates you. For juniors the most obvious thing to do is dive and learn a framework that is currently in most demand.

    Market is really funny. I remember back in 2010 there were dozens of .NET jobs in financial sector in London that required knowledge of “design patterns” or, more specifically, “GoF”. Someone told someone this is a must. This is cool. Funny enough, if you search right now on jobserve, there is exactly *one* position with GoF in its text. Don’t need to mention that design patterns did not become obsolete or less useful during these five years.

    Since most HR managers and recruiters are not capable to distinguish between GoF and WPF (or WTF), having right keywords in your CV becomes crucial, otherwise you won’t be even spoken to. This is one of the major curses of the industry, as I see it.

  • Enrico Buonanno

    This is just one aspect of a wider problem with recruiting in IT: it focuses on what you already know, not on your ability to learn. In a field where you must learn a lot of new things on every new project!

  • Tony McKinney

    Do these companies also have weak architecture if they would describe it using the framework? I saw an ad for a WPF developer recently. By contrast, there is a Ruby shop nearby recruiting .Net and Java developers and training them. I think the latter is more rare. I also prefer to study more fundamental concepts rather than dump a lot of time on specific frameworks.

  • Jimmy,

    I share your feels on WebForms. Looking back, it was basically VB6 for the web. If I would known then, I would have went a different direction.

    What I see happening is client-side development morphing into it’s own profession. Soon, you’ll need a client-side developer, server-side developer and a database guy.

    The knowledge required for each of these roles is just too deep for any one person to master.

  • Brutus Maximus

    The framework du jour experts…

  • Macchendra

    So as a generalist, I am wondering: how do I access the results of my SqlCommand that I retrieve in one HtmlHelper method in a completely separate HtmlHelper method? Dang, I should make them into one big HtmlHelper method that does both. I wish I had time to learn how to modify the ORM…