Пуля дура, штык молодец - или skills that matter

Это не опус, а скорее минимальный перечень всего того, что нужно любому жабопрограммисту, чтобы достичь высоты высот и познать глубины ДАО.

Все дело в пришивании подворотничков.

Если не очень хочется бегать за водкой для старших научных сотрудников НИИ ГиТ - то нужно работать в правильной конторе. А в правильную контору устроиться, помимо 80% везения, надо еще 20% мозга общепризнанных знаний и умений. Общепризнанными, в контексте программирования всяческих железяк и сессионных бинов - является вот этот самый CS. Если вы подумали про Counter Strike - вы сразу негодны, потому что нет стрелялки кроме Quake III Arena! Ниже - список методической литературы для изучения.

  • Introduction to Algorithms - это квинтэссенция бОльшей части того, что можно найти у великого изобретателя TeX. Доступно, с картинками и местами - практически на пальцах. У меня такая была под подушкой да я на неё даже два раза дрочил!.

  • Algorithms (4th Edition) - вторая штука, которая позволяет проникнуть мозг величием и счастьем.

Этих двух книжек, как правило, при правильном применении - хватит для того чтобы отпиздить ими любого по голове насмерть пройти собеседование в гугле, пейсбуке и твиттере, практически не приходя в сознание.

Эта винтовка - моя

все эти клевые теоретические подковки для начинающего жабодава нужны, но недостаточны для понимания жабы как таковой. Поэтому надо проникнуться предметной областью, и как правило - начать со странного.

  • Java Language Specification - это альфа и омега жабы как таковой. Period. Без хотя бы разового прочтения - вы коровопоклонник, не более.

  • Java Virtual Machine Specification - это все то, благодаря чему мы несмотря ни на что! Без знания этой штуки, как впрочем и без знания предыдущей - можно жить, но со знанием - можно жить очень хорошо. Особенно зная про волшебный Chapter 17 из предыдущего пункта.

Все вышеописанное - этот тот фундамент, который позволит с одной стороны - называться программистом, а с другой стороны - иметь приставку java. Если этот фундамент хуевый - то и все дальнейшее не поможет, потому что на хуевом фундаменте можно построить только спрингохибернейт.

Далее пойдет лирика, в виде:

  • Concurrent Programming in Java - Даг Ли расскажет про то как правильно готовить экзекуторы и чем лечить дедлоки, ставрейшены и прочие приятности многовисячного программирования.

  • Programming Concurrency on the JVM - это вкусное и приятное дополнение к книжке Дага, в которой будет рассказано про STM, разные штуки с актерами и прочие ништяки из эпохи современности.

  • Java Generics and Collections - такая себе теория типов в доступной форме и без жесткого анала матана, расскажет про коллекции, вариантности и прочие генерики. Да и похер что у автора фамилия Нафталин, с кем не бывает.

  • Effective Java - это, в чем-то спорная, книжка, покажет как вообще не сходить с ума на жабе. Очень хорошо подойдет джуниорным девелоперам, наверное.

Вот собственно это все - так называемый кандидатский минимум, который нужен для успешного освоения суровых практик и дисциплин жабомира. Он не привязан к конь кретным технологиям, большинство вещей там универсальны в пределах платформы. Так что весь этот набор подойдет как упоротому свингеру, так и мизантропичным серверсайдерам.

Для скалы это будет

  • Scala Language Specification - чтобы понимать, почему блять val a может не проинициализироваться, хотя вроде бы должно.

  • Programming in Scala - мурзилка от создателя, написано довольно хреново - но по делу.

  • Scala In Depth - это собственно описания почти всего, что есть - имплиситов, context boundaries и прочих полезных штук. Читается очень легко и приятно.

  • Akka Concurrency - набор рецептов приготовления Akka.

Ну и совсем упоротые могут почитать Purely Functional Data Structures, моск выносит почище SICP.</lj-cut>