I work in a small video game development studio, where the whole company is one team working on one product, and each person has a fixed broad function (e.g. programmer, artist, musician). We can't be cross-functional since the range of functions is very wide - it's not like the typical cases I read about where e.g. "the database engineer can do a bit of front-end engineering too" - it's rare to find programmers that have artistic talent and even rarer to find artists that can code at all!
In Kanban, it looks like one recommended way of dealing with this is to have each discipline as a column, and to move stories from e.g. "In progress - engineering" to "In progress - art" as it progresses, but in video games there's generally there's not a hard dependency between the disciplines (don't need to wait for all of one discipline to be done before the other can work), and if there is, the disciplines will work closely together to iterate on that one task/story, so pipelining it like this doesn't make sense to me.
In Scrum, when picking a set of stories to accomplish in one sprint, some sprints will have mostly art-heavy stories queued up, and some sprints will have mostly engineering-heavy stories queued up. By picking the next most important stories, we'd be committing to having some disciplines sat idle once their part is done, since as I said, artists are unable to move on to engineering tasks.
In both cases, in a small company, any spare capacity can't be moved to other teams, and the hiring process (to increase capacity for some disciplines) is far slower than actual work (and of course, not always possible or desirable).
What I think may be good ideas (though I haven't read anything like this anywhere, hence why I'm asking this question!) are:
For Scrum, fiddle the priorities of stories to account for capacity across disciplines, so rather than take on a second engineering-heavy story, look down the backlog for an art-heavy story, to make sure the sprint contains about the right amount of work for each discipline. This doesn't feel quite right because it means we're not always working on the most important story.
For Kanban, have a lane for stories, and a lane for each discipline, pull stories into 'doing' when any discipline starts work on it (and to 'done' once all disciplines are done with it), so each discipline can get a bit ahead if there is spare capacity (but if staffing levels are right, it'll average out over the course of the project). This doesn't feel quite right because the stories lane will need to ignore WIP limits, meaning there will be some waste if things change. Also it just looks messy!
Am I thinking about this in the right way? What do other non-cross-functional teams do? And what's the actual name for non-cross-functional team so I can search for this better?