A empresa que trabalho possui vários projetos que utilizam JSF.
Este framework, se bem usado, é uma mão na roda para determinadas situações.
Entretanto, aqui na empresa que trabalho, muito se tem discutido em relação aos frameworks action-based e component-based.
A questão é que muitas vezes perdemos mais tempo configurando os componentes do que focando na regra de negócio, principalmente quando a empresa tem um modelo de layout padrão. Além disso, o JSF da muita liberdade para inserção de regras de negócios na camada de apresentação (nos componentes) através dos managed beans, e pra dar manutenção de um projeto que não foi você quem fez se torna mais e mais delicado, porque envolvem escopos, referências a outros managed beans, etc.
Fora que ele não oferece algumas facilidades que os frameworks atuais action-baseds oferecem como o suporte a serviços REST.
Por este e outros motivos, o VRaptor 3 (action-based) será o framework da vez (ao que tudo indica) na empresa em que trabalho.
Mas é um assunto polêmico e existem casos em que o JSF ainda é muito bem vindo, porém eu particularmente já não me acho tão produtivo utilizando JSF, ao contrário quando utilizo o VRaptor por exemplo.
OBS: não é minha intenção evangelizar nenhum tipo de framework aqui! ^^