J'ai été là où tu es et j'ai failli abandonner à quelques reprises. Bien que je ne sois pas du tout un développeur expert de Scala, je sens que j'ai maintenant une solide compréhension du langage - certainement assez pour qu'il ait complètement empoisonné ma relation avec Java.
La première chose que j'ai faite a été de passer quelques semaines à jouer, à lire divers blogs et des introductions à la langue. C'était une erreur, je n'ai pas appris (ou du moins compris) beaucoup de choses utiles, et je me sentais complètement hors de mes profondeurs.
La deuxième chose était de passer du temps à résoudre des problèmes qui étaient techniquement simples mais m'ont forcé à explorer par moi-même des aspects spécifiques de la syntaxe Scala:
Bien que cela ne m'ait pas transformé en expert du jour au lendemain, cela m'a donné suffisamment de familiarité avec le langage pour qu'il ne me semble plus aussi impossible.
Avec ce regain de confiance, j'ai finalement fait ce que j'aurais dû commencer: obtenir la programmation en Scala par Martin Odersky, et essayer de lire un chapitre entier tous les deux jours. C'est un livre bien écrit et complet, et si vous avez déjà une solide expérience en programmation, cela ne devrait pas être trop intimidant. Il n'est pas nécessaire de rendre votre première lecture trop pénible: sautez les parties marquées comme facultatives, assurez-vous de comprendre les concepts mais ne vous embourbez pas dans les détails (en particulier, je pense que les chapitres sur les collections sont exagérés et peuvent être écrémé). Savoir qu'un concept existe et où lire une explication détaillée de son fonctionnement est une aide précieuse.
Une alternative à la lecture du livre est d'assister à la classe Coursera - elle est beaucoup moins complète, mais couvre la plupart des points cruciaux et se décompose en unités logiques gérables. D'un autre côté, je ne sais pas s'il est possible d'accéder aux cours une fois le cours terminé, et j'ai également constaté que j'étais beaucoup moins engagé en écoutant quelqu'un (même quelqu'un aussi évidemment intelligent et compétent que Martin Ordesky) que lors de la lecture d'un livre.
Un autre problème avec Scala est la quantité de vocabulaire que vous devez ingérer - paramètres par nom? pour la compréhension? fermeture? Si vous vous sentez dépassé par cela, j'ai trouvé qu'un bon mélange du glossaire Scala et des recherches ciblées de débordement de pile m'a beaucoup aidé (recherchez les réponses de Daniel Sobral et Travis Brown). En fait, je suis allé jusqu'à créer un deck Anki avec le glossaire, et je pense que cela m'a été d'une grande aide.
Enfin, c'est probablement évident, mais du code, du code, du code. Trouvez un projet parallèle sur lequel vous pouvez travailler, même si c'est quelque chose de trivial. Ce que j'ai fait, c'est écrire un robot d'exploration Amazon très simple qui m'enverrait un tweet chaque fois qu'un auteur qui m'intéressait publie un nouveau livre. Cela a pris plus de temps que prévu, mais c'est à ce moment que je suis tombé amoureux de la langue.
Si vous arrivez jusque-là, vous n'aurez probablement besoin d'aucune aide supplémentaire, mais une bonne suggestion, une fois que vous aurez compris le langage, consiste à approfondir les concepts sous-jacents. Vous connaissez bien la POO, essayez de lire sur la programmation fonctionnelle - je peux dire avec une certitude absolue que cela vous épatera. La programmation fonctionnelle dans Scala devrait être publiée prochainement (ish), mais l'édition à accès anticipé est déjà excellente. Une autre réponse suggère la programmation fonctionnelle pour les développeurs Java , que je ne connais pas, mais qui a tendance à croire que c'est bon (quand un livre O'Reilly ne vaut-il pas au moins le coup d'œil?).
J'espère que cela n'a pas été trop long et évident, et je vous souhaite sincèrement le meilleur. Scala a ses défauts, mais c'est une langue merveilleuse et emmènera votre cerveau dans des directions dont vous ignoriez l'existence. Et je vais chercher ton "Learning Haskell, découragé" dans un an :)