To me personally expertise in Ember would mean several things:
concepts
A solid understanding of the various Ember features and ideas, and how to use them effectively:
- core: routing, components, testing, app management (filesystem, build, deploy, updates, etc)
- ember data: adapter/serializer customization, how the store works, JSON API conventions, etc.
- popular addons: simple auth, mirage, concurrency, etc.
- testing
I think the “how to use them effectively” is pretty important here. Theoretical knowledge is one thing, and very important, but there’s no substitute for some real-world experience using the Ember concepts and tools when things get messy or weird. Ember is a heavy framework with a really broad surface area and I think when it really comes down to it experience with it is going to result in better code and faster development.
component design
I don’t think this is quite as important in Ember as in something like React, since Ember provides other primitives like services, router, etc. out of the box but having a good understanding of component design patterns in general (contextual, higher order, provider, container, etc) can really help maintainability and readability especially in a huge app. I think this is where the biggest crossover value would be with other SPA frameworks, especially understanding the tools that Ember provides and their respective analogues in a more component-centric framework.
javascript
Sure Ember does a lot for you but one should have strong js fundamentals to really understand what’s going on, write clean code, and use a lot of the tools and concepts that the framework doesn’t provide. Especially as Ember continues to align itself more closely with modern javascript and the js ecosystem.
community
Some level of connection with the community: IMO one of Ember’s biggest strengths, I think it would be hard to really appreciate and understand Ember without at least a passive understanding of the community and ideas the framework has been built with. I think even from a totally passive standpoint this would involve understanding the framework goals and ideas (ambitious, batteries included, convention over configuration, etc), where to find help (docs, guides, the code itself, discord, this site, etc), the addon ecosystem (hugely important to ember), and probably the evolution of the framework and the ideas behind its development and maintenance (release cycle, editions, core team, history and modernization, versioning, etc). Ideally some one with “expertise” would also be an active part of the community, contributing anything from more of that= inclusive and welcoming feel to help to docs to addons to core code.
is this any different from expertise building Single Page Applications? If so, what makes it different?
I just had a conversation about this with my former manager, specifically from the perspective of hiring. I think it’s very different and to me it comes down to how well you can write good maintainable Ember code. In my experience the most maintainable code in Ember specifically is code that is well organized and sticks with Ember conventions as much as possible, and you can’t write that kind of code without some level of Ember expertise. This affects your development at a pretty fundamental level because it influences how you think about problems and design, how you structure your code, how you test it, etc.
My first Ember code was terrible because I didn’t have a good understanding of the fundamental tools and concepts so I’d jam code in the wrong places, or do things in roundabout ways, and I had teammates that quite literally just used Ember as a way to deliver jQuery into the browser. That’s not to say a great experienced JS SPA dev couldn’t rapidly gain the necessary Ember expertise, but I think it will take some amount of time for anyone. I’m sure this applies to any framework to some extent, and you could even argue that Ember’s conventions steer someone without expertise in the right directions a lot faster, but I still think you need some level of experience to REALLY be dangerous (the good kind of dangerous) with Ember.
what resources and learning strategies do you recommend for developing expertise?
- I don’t think there’s any real substitute for just writing real-world code, whether that’s a side-project or an app you’re working on for an employer or client, or an addon you’re contributing to the community.
- I’ve actually learned a whole lot from reading threads on this site and trying to answer questions here and there
- contributing to ember core or addons: it can be intimidating to start, especially if you don’t have the expertise, but I think the core team is doing a great job of trying to make it easier and more accessible, and what better way could there be to learn the framework than actually writing code/docs for it?
- 3rd party resources: @balint’s Rock and Roll with Ember book and EmberMap’s video series are both great resources that teach best practices along with basic concepts
- Reading RFCs, keeping up with Ember development
- Reading blog posts and other resources in the greater javascript ecosystem: I think this can help place Ember in the greater ecosystem, cement Ember concepts as you draw connections to other frameworks and also see where it’s different