Nice article. Unfortunately we see that in big projects there may be too strong of a reliance on specialists performing certain tasks. This isn't only because of the potential specialist nature of the task, but also for an important part because workers have an incentive to become a specialist. Generalists are expendable, while specialists are not. This implies that a specialist in a given domain has greater job security within the project, and thus has an incentive to protect his specific domain.
Then again, depending on the frameworks in use (i.e. GWT) that frontend and backend are all in the same code base. This can be great for some applications and undesirable for others. However, I'm frequently surprised by the desire to break every tasks out into a role.
For example one person to write the queries, one person to put the HTML into a JSP page, one person to create a backend service, one person to setup the server, one person to run the CI, one person to write some tests.
Let's look at other industries. Remember back in publishing and design. There used to be a ton of people there too. The type setters, the people designing layouts and then others physically compositing and scaling those elements for photographing and making into plates. There were tons of people involved in any good publication. Now they're all out of work and one person can do all of their jobs with the right software suite and farm out the printing.
I posit that we'll see a greater fusion of roles. A Java dev can crank out hibernate queries all day (I know, they'll be ugly and slow) and just drop in some stuff from a Bootstrap template to spice it up. Wait for the next economic contraction in IT and you'll see the disposable roles become apparent.