Ja bym pewnie polecił na przebranżowienie Jave, Springa, DDD, TDD, pattern design.
Jak ktoś dopiero zaczyna, to po co mu DDD? Potem są wyznawcy cargo cultu, którzy chcą jak w książce, ale nie wiedzą, po co.
Wzorce projektowe też na początku nikomu nic nie powiedzą poza tym, że w książce tak zrobili.
Zaczynać od TDD? Ja bym nie chciał, to niszczy tę pierwotną zabawę w tym, że robisz coś, nie wiesz co, ale zmieniasz linijkę i patrzysz co się stanie. W TDD ciężko to osiągnąć.
Z drugiej strony gdyby początkujący stosowali TDD (albo chociaż pisali testy jednostkowe), to może byłoby mniej pytań w stylu coś mi nie działa, ale nie wiem co i nie umiem sprawdzić, bo nawet dupa-debugging nie umiem zrobić
, bo testy i odpowiednie asercje by pokazały co mniej więcej failuje.