среда, 14 мая 2014 г.

Рекомендуемые книги по программированию, проектированию и системной итеграции

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

Программирование


  • Харольд Абельсон, Джеральд Джей Сассман - Структура и Интерпретация Компьютерных Программ. На мой взгляд лучшая книга, рассказывающая что такое программирование вообще и как оно делается. Авторы проводят читателя от начал функциональной декомпозиции - понятия того, что мы пишем программу, чтобы она делала нечто полезное и эти действия можно разделить на этапы, до моделирования сложных структур данных и понимания того, как же исполняется программа. Необычным для подавляющего большинства программистов будет то, что с оператором присваивания мы знакомимся только в третьей главе, после того как напишем довольно сложную полиморфную программу! Так же авторы показывают как осуществляется интерпретация программы, ее компиляция, а так же как работает абстрактное вычислительное устройство - регистровая машина. Впрочем данное вычислительное устройство не так уже и абстрактно, стоит вспомнить, что виртуальная машина Android построена именно по регистровой модели. Само понятие ООП не вводится, но интересно, что авторы при этом умудряются рассказать, что такое связь данных и обрабатывающего их кода, конструктор, как реализовать полиморфизм и т.д. Книга содержит огромный набор задач, в интернете даже есть специальные сайты, посвященные их разбору и решениям на разных языках программирования.

  • Лавров С.С. - Программирование. Математические основы, средства, теория. Книга тяжелая и математичная, но демонстрирует базу нашей работы. Приводятся математические основы логики, формальных языков, объясняется теория вычислимости на примере языка Lisp. Автор объясняет основные понятия языков программирования, делает введение в ООП и ФП. Думаю, увлекающимся теорией будет интересно.

  • Alan Carter, Colston Sanger - The Programmers' Stone (рус). Немного о мышлении программистов или почему одни разработчики на порядок продуктивнее других.

  • Luca Cardelli, Peter Wegner - On Understanding Types, Data Abstraction, and Polymorphism. Это не книга, а скорее статья на 43 страницы, очень насыщенная математическим формализмом, в которой авторы рассказывают о том, что такое система типов. Кто занимается практическим программированием на таких языках как Java, тот по сути неявно, исходя из каких-то эмпирических закономерностей, строит программу как свою собственную систему типов. В данной работе же формально объясняется переход от нетипизированной вселенной к системе типов, в том числе и параметрических (можно понимать их как Generics). Так же есть главы, посвященные абстрактным типам данных, наследованию и полиморфизму.

  • John Hughes - Why Functional Programming Matters. Небольшая статья на 23 страницы, являющаяся введением в функциональное программирование. Объясняется что такое функции высших порядков, как их комбинировать друг с другом. В заключение приводится пример решения задачи из, как выразился автор, "искусственного интеллекта" - разбор дерева игры с помощью ФП.

  • Евгений Кирпичев - Элементы функциональных языков. Полезная статья для интересующихся ФП. Собраны сведения обо всех элементах и конструкциях функциональных языков, которые придают им такую мощь и выразительность: функции второго порядка, замыкания, сопоставление с образцом, хвостовая рекурсия, вывод типов, алгебраические типы данных, классы типов (не путать с классами в Java!) и т.д. Статья очень насыщенная и полезная, помогает иначе взглянуть на привычные вещи.


Проектирование


  • Martin Fowler - Patterns of Enterprise Application Architecture. Классическая книга, описывающая каталог шаблонов построения корпоративного приложения. Не смотря на то, что большая часть книги посвящена тому как написать свой ORM, есть и актуальные на сегодняшний день мысли. По крайней мере в общих чертах знать каталог шаблонов нужно, чтобы понимать общий язык разработчиков/архитекторов корпоративных систем.

  • Chris Richardson - POJOs in Action: Developing Enterprise Applications with Lightweight Frameworks. Книга старая, но актуальная и по сей день. В некоторых местах перекликается с трудом Фаулера, в частности так же описаны основные подходы к организации бизнес-логики приложения: модель предметной области, табличный модуль и транзакционный скрипт. На примере конкретного приложения рассказывается о применении данных подходов к решению тех или иных задач. Большое внимание уделено организации доступа к бизнес-логике, в частности именно здесь описан довольно часто используемый в наше время подход с незащищенной моделью предметной области. Отдельно описывается сокрытие слоя бизнес-логики за фасадом на основе Spring Framework и за фасадом на основе EJB 3. Есть глава, посвященная использованию iBatis. Последние главы книги рассказывают о блокировках в приложении, зачем они могут быть необходимы, какие типы блокировок бывают и как их реализовать.

  • Principles of Transaction Processing. Книга - просто бриллиант, прочесть необходимо каждому, кто занимается построением OLTP-приложений. Повествование довольно ровное и глубокое, сначала описываются концептуальные вещи: что такое транзакция, как устроено типовое транзакционное приложение, очереди сообщений, последовательности транзакций - BPM и механизм компенсаций, а затем начинается технический хардкор: блокировки, процесс восстановления, двухфазный коммит, репликации, в том числе и мастер-мастер, и все это на максимально глубоком уровне с множеством схем и необходимой математикой. В конце авторы делятся кратким обзором популярных технологий (Java EE) и мониторов транзакций (CICS, IMS TM, Tuxedo). Эх, если бы в наших Вузах так преподавали бы хотя бы базы данных...

  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides - Design Patterns: Elements of Reusable Object-Oriented Software. Опять же классика, хотя в последнее время и теряющая популярность. Лично я на собеседованиях про паттерны GoF практически не спрашиваю, хотя знать язык паттернов считаю полезным, может быть без деталей реализации, тем более, что реализации в современном мире зачастую отличаются от описанных в книге. Например, адаптер из Eclipse RCP, а так же множество многопоточных одиночек, начиная от неправильно работающего DCL и заканчивая решением на static handler'е.

  • Rod Johnson - Expert One-on-One J2EE Design and Development и Rod Johnson, Juergen Hoeller - Expert One-on-One J2EE Development without EJB. Довольно старые книги, рассказывающие об основах работы с Java EE (тогда это называлось J2EE) без использования EJB. Напомню, что EJB в то время была довольно тяжелой технологией, в частности в EJB 1.x не было даже локальных вызовов - взаимодействие бинов всегда осуществлялось посредством RMI, а о многословности Entity Beans из EJB 2 многие помнят до сих пор. Оправданы или нет были соответствующие решения никто уже не расскажет, кроме IT-археологов. Однако, думаю, что ознакомиться с мотивацией создания Spring Framework в изложении его автора будет интересно.

  • Adam Bien - Real World Java EE Patterns Rethinking Best Practices Paperback. Обратный взгляд на проблему. Времена EJB 2 давно прошли и многие вещи, впитанные раньше с молоком матери, теперь требуют пересмотра. Нельзя всю жизнь говорить, что я в 88-м году писал на этом вашем C++, все это ерунда. Время течет. Появилась революционная во многих отношениях спецификация EJB 3.0, а в 2009-м еще и EJB 3.1. Данные спецификации серьезно изменили подход к разработке EJB-компонентов и организации их взаимодействия. В своей книге Адам рассказывает о новых шаблонах проектирования, в частности об упрощении разработки сервисных фасадов и самих сервисов, рассматривает вопрос отказа от выделенного DAO-слоя, его место может занять сам Entity Manager, а так же вопрос о передаче слою представления самих доменных сущностей вместо набивших оскомину DTO, активно применявшихся во время EJB 2. В общем, не Spring Framework'ом единым жив программист!

Операционные системы


  • Introduction to the New Mainframe: z/OS Basics. Книга от IBM, являющаяся этаким "быстрым введением", попыткой объяснить что такое мейнфрейм, зачем он нужен и как устроена его операционная система z/OS. Изложение местами оставляет желать лучшего, но если выполнять лабораторные работы (и иметь при этом подходящий стенд), то книга в целом полезная.


SOA, ESB и интеграция


  • Thomas Erl - SOA: Principles of Service Design. Классическая книга одного из идеологов понятия сервисно-ориентированная архитектура. Автор объясняет, что такое вообще сервисно-ориентированные вычисления и архитектура, что понимается под сервисно-ориентированностью, принципы разработки, понятие контракта, что такое связывание сервисов и другие вопросы, возникающие при построенииSOA.

  • Thomas Erl - SOA Design Patterns. Паттерны реализации сервисно-ориентированной архитектуры, о том как строить сервисы, объединять их в единое целое, создать хранилище информации о сервисах, осуществить их поиск и публикацию в вашей системе.

  • Lonneke Dikmans, Ronald van Luttikhuizen - SOA Made Simple. Относительно новая книга, описывающая весь путь выделения сервисов и объединения их в работающую систему. Понравилось, что понятие сервиса вводится на примере ресторана, так действительно многие вещи становятся более понятными. Контракт сервиса описывается на примере меню и времени работы. Тот факт, что у сервиса может быть несколько интерфейсов, описывается на примере официантов и электронной службы заказов. Сокрытие реализации - вас просто не пустят на кухню. Так же рассматриваются детали реализации SOA на платформах IBM, Microsoft и Oracle. Книга написана понятным и доступным языком.

  • Waseem Roshen - SOA-Based Enterprise Integration: A Step-by-Step Guide to Services-Based Application Integration. Данная книга понравилась системностью изложения. В ней описывается развитие интеграционных механизмов в исторической перспективе: показан переход от взаимодействия через сокеты, к удаленному вызову процедур, затем к распределенным объектам и столь знакомым нам серверам приложений и заканчивается обменом сообщениями. На базе обмена сообщениями формируется понятие сервиса, в частности - веб-сервиса, и сервисной шины предприятия. Рассмотрены подходы к интеграции приложений, базирующихся на мэйнфреймах и пакетных приложений, например ERP от SAP. Большая глава книги посвящена тонкостям работы с веб-сервисами, в частности это одна из немногих книг, где толково описано, что такое UDDI. Упор при изложении делается на технологии IBM.

  • Eric Pulier, Hugh Taylor - Understanding Enterprise SOA. Книга, несмотря на свой возраст, довольно интересная. Авторы пытаются описать теорию и процесс перехода от монолитной архитектуры к SOA на примере выдуманного предприятия. Единственная книга, в которой затрагивается человеческий фактор.

  • Gregor Hohpe, Bobby Woolf - Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Классическая книга, описывающая подходы к интеграции и детали их реализации. Основное внимание уделено построению системы обмена сообщениями и реализации отдельных компонентов данной системы. Не важно, разрабатываете вы на Java, используете Apache Camel или какую-то промышленную ESB, информация, изложенная в данной книге, будет вам полезна. Я не знаю, почему данную книгу упорно приписывают Фаулеру, прямо обидно за авторов.

  • David Chappell - Enterprise Service Bus: Theory in Practice. Книга довольно старая и с появлением современных ESB не очень актуальная, но интересующимся тем, что же лежит под капотом IBM Integration Bus, Oracle Service Bus, JBoss ESB, Mule ESB и т.д. будет полезна.

Сервера приложений и мониторы транзакций


  • Michel Schildmeijer - Oracle WebLogic Server 12c: First Look. Первая книга, обзорно описывающая Oracle WebLogic Server 12.1.1. Основной упор вполне закономерно сделан на новых возможностях, таких как Java EE 6, интеграция с Apache Maven и т.д. Книга довольно компактная, всего 144 страницы.

  • Dalton Iwazaki - Oracle WebLogic Server 12c Advanced Administration Cookbook. Сборник полезных советов по установке, настройке, запуску сервера приложений. Основной упор сделан на создании высокодоступного кластера, описаны базовые понятия, настройка источников данных, JMS-ресурсов, миграция JMS-серверов, мониторинг сервера приложений и решение возникающих проблем. Отдельные главы посвящены масштабированию и производительности, а так же настройке безопасности.

  • Frank Munz - Oracle WebLogic Server 12c: Distinctive Recipes (Architecture, Development and Administration). Относительно новая книга, я ее еще не успел прочитать.

  • Robert Patrick, Gregory Nyberg, Philip Aston, Josh Bregman, Paul Done - Professional Oracle WebLogic Server. Книга посвящена тонкостям разработки корпоративных приложений, предназначенных для работы на сервере Oracle WebLogic. Рассматривается выбор архитектуры для веб-приложения. Описываются сервлеты, специфичные для WebLogic аннотации (то, что в последствии появилось в Java EE 6), работа с источниками данных, JMS-очередями, EJB 3.0-компонентами и JPA (на примере OpenJPA и Kodo). Так же не остались без внимания вопросы сборки, развертывания и защиты приложений. Интересные главы найдут для себя и администраторы.

  • WebSphere Application Server v8.5 Concepts, Planning and Design Guide. Хорошее введение в сервер приложений IBM WebSphere Application Server. Дано довольно подробное описание всех основных возможностей продукта, а так же разобраны отличия между вариантами поставки (Base, ..., Network Deployment), профилями (Full Profile/Liberty Profile), отдельно подробно рассмотрен вариант для мейнфрейма - WebSphere Application Server for z/OS и его отличие от "земных" версий. Много внимания уделено описанию частей сервера, которые лежат "вокруг" Java EE: Intelligent Management, WebSphere Batch, Service Integration Bus, а так же вопросам безопасности и миграции с предыдущих версий.

  • CICS Transaction Server from Start to Finish. Книга является введением наверное в самый известный монитор транзакций в мире. Воистину, число активных инсталляций CICS в стране является показателем зрелости IT и из значимости для бизнеса. Книгу только начал читать, впечатлениями поделюсь позже.

Интеграционные продукты Oracle


  • Guido Schmutz, Edwin Biemond, Jan van Zoggel, Mischa Kölliker, Eric Elzinga - Oracle Service Bus 11g Development Cookbook. Одно из лучших введений в Oracle Service Bus. Книга описывает практически все возможности шины. Рассмотрена работа в Eclipse и публикация проектов, отладка, размещение логики интеграционного взаимодействия в Proxy-сервисах, транспорты (HTTP, JMS, EJB/JEJB, File-transfer, Mail), работа с базами данных и вопросы безопасности. Так же приводится пример реализации своего транспорта для работы с WebSocket'ами.

  • Lucas Jellema - Oracle SOA Suite 11g Handbook. Официальная книга от Oracle Press, может использоваться как учебник по Oracle SOA Suite 11g и Oracle Service Bus.

  • Matt Wright, Antony Reynolds - Oracle SOA Suite 11g R1 Developer's Guide. Мой первый учебник по SOA Suite. Повествование разделено на две части, в первой описываются возможности Oracle SOA Suite и как с ними работать, во второй - процесс построения архитектуры SOA-решения на примере аукциона oBay. Вторая часть позволяет понять такие концепции, как взаимодействие SOA Suite и Oracle ADF, контракты и версионирование сервисов, использование бизнес-правил, тестирование и обеспечение безопасности. Из минусов отметил бы, что не все главы понятны, а так же тот факт, что работа с OSB разбросана по всей книге.

  • Antony Reynolds, Matt Wright - Oracle SOA Suite 11g Developer's Cookbook. Сборник рецептов для продвинутых пользователей Oracle SOA Suite. Рассматриваются вопросы построения отказоустойчивого кластера, работа с метаданными и MDS, обработка транзакций, построение трансформаций, композитные паттерны обработки сообщений, интеграция с OSB, интеграция с Java. Так же подняты вопросы безопасности, мониторинга и администрирования SOA Suite. Приводится пример реализации своего транспорта OSB для работы с ZIP-архивами.

  • Ahmed Aboulnaga, Pareek Arun - Oracle SOA Suite 11g Administrator's Handbook. Мало разработать SOA-решение, его нужно еще и поддерживать в работоспособном состоянии. Данная книга содержит информацию об используемом Oracle SOA Suite стеке технологий, настройке каждого компонента, тюнинге JVM, настройке безопасности, управлении метаданными, а так же решении возникающих проблем. Думаю, что она будет полезна каждому администратору Oracle SOA Suite. К сожалению, в книге не рассматривается администрирование Oracle Service Bus.

  • Matt Brasier, Nicholas Wright - Oracle SOA Suite 11g Performance Tuning Cookbook. В данной книге авторы делятся вопросами мониторинга интеграционной платформы, рассматривают тестирование производительности с помощью JMeter, рассматривают использование памяти JVM и настройку сборщика мусора. Далее рассказывают о тюнинге периферии: JMS и JDBC, а затем и самих движков бизнес-процессов: BPEL и BPMN. В последних главах рассмотрены вопросы многопоточности в Mediator'е, настройка пакетной доставки данных через адаптер к Oracle BAM, повышение производительности Human Workflow и механизма бизнес-правил, а так же, как правильно проектировать композитные приложения с упором на многопоточноть. К сожалению, в книге не рассматривается настройка производительности Oracle Service Bus.

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

UPD 11.03.2015 Добавлены книги: Principles of Transaction Processing, Introduction to the New Mainframe: z/OS Basics, WebSphere Application Server v8.5 Concepts, Planning and Design Guide, CICS Transaction Server from Start to Finish.

Понравилось сообщение - подпишитесь на блог

14 комментариев:

Denis K комментирует...

Спасибо)

zpetrovich комментирует...

Супер! Спасибо за подборку! Осталось малое, все это прочитать :)

Alexey Anufriev комментирует...

Благодарю за наводку на Patterns of Enterprise Application Architecture

chiffa комментирует...

Спасибо! Кое-что заберу на почитать.

Плюс дополню, если позволите, "необязательной" программой от вендора для тех, кто только начинает знакомиться с FMW (требуется простой аккаунт на сайте Oracle) :
- SOA Foundation - http://www.oracle.com/technetwork/topics/entarch/oracle-ra-soa-foundation-r3-2-1561708.pdf
- SOA Infrastructure - http://www.oracle.com/technetwork/topics/entarch/oracle-ra-soa-infrastructure-r3-2-1561710.pdf
- BPM Foundation http://oracle.com/technetwork/topics/entarch/oracle-ra-bpm-foundation-r3-0-176694.pdf
- BPM Infrastructure http://oracle.com/technetwork/topics/entarch/oracle-ra-bpm-infrastructure-r3-0-176697.pdf

http://www.oracle.com/technetwork/topics/entarch/itso-165161.html - да и вообще вся страница очень полезна - содержит информацию по многим продуктам.

Еще люблю кидаться этой ссылками в тех, кто осваиваем XML\XSD\XSLT\XPath\WSDL - xfront.com, zvon.org

Ilja комментирует...

Спасибо за статью. Как раз у меня в Киндле заканчиваются книги, теперь есть отличный список пополнения. Очень полезно!

Pavel Samolisov комментирует...

@chiffa Еще раз спасибо Вам за ценные комментарии. Про ITSO конечно знаю, но сам до сих пор не осилил. Не хватает понимания контекста, что-ли. Например про Maturity Model не все понятно. В список старался по возможности добавлять те книги, которые сам читал, поэтому ITSO упоминать не стал, но все равно Вам спасибо.

Кстати, раньше у Oracle была сертификация по ITSO, теперь она предваряется еще и сертификацией по SOA. Это пример того, что "сдаваться" нужно как можно раньше, со временем сертификационные цепочки удлиняются, Oracle это любит :)

Pavel Samolisov комментирует...

@chiffa Кстати, недавно вышла еще такая книга: Oracle SOA Governance 11g Implementation, читали?

chiffa комментирует...

@Pavel Samolisov, вот прямо эту книгу не стал читать но вот с этим знакомился - http://www.opengroup.org/soa/source-book/gov/gov.htm. Тоже относительно недавно опубликовали.
Не стал читать, так как присутствует несколько субъективный взгляд на SOA Governance от Oracle.

Вообще, SOA Governance - это безусловное добро. Примерно, как ПДД (Не знаю, может дурацкая аналогия). То есть вроде и методология есть (как раз от opengroup), и продукты вендоров, но не взлетает в реальном мире. Вполне допускаю, что мне еще не встречалась настолько зрелые архитектура, процессы, инфраструктура, в которой бы SOA Governance заработал. Если есть такой опыт, то с удовольствием бы послушал.

Чтобы не быть голословным - нами используется широко UDDI и его WS API. То есть у нас есть свои таксономии, свои keyword, провайдеры, сервисы итд. Но все это решает местечковые задачи, которые можно спокойно перенести в СУБД. Даже удобней станет. А вот c OER вообще не взлетело - делали три подхода, разными людьми - и со стороны харвестера, и со стороны плагина в eclipse, и просто через UI. Не прониклись. Пока для себя вывели минимально необходимое условие построение именно управления SOA - должны быть отдельные люди, которые этим занимаются. Они владеют большей частью информации о системе, но занимаются только этим.

А у Вас получалось?

Pavel Samolisov комментирует...

У нас не получилось, да особо и необходимости пока не было с UDDI и Oracle Enterprise Repository, хотя я их ковырял конечно, интеграция в основном осуществляется с массой унаследованных систем, основной протокол - jdbc. Впрочем, возможно в скором времени будем активно внедрять.

Получилось выстроить формальный процесс согласования интерфейсов между основными системами, чтобы доработка системы и шины велась согласованно. Дело осложнялось тем, что коллеги работали по Scrum, а мы по Kanbun, но в итоге получилось, в том числе и админов обучить работать с шиной. Сейчас крупных сбоев при обновлениях нет. Сразу скажу, что отказались от версионирования сервисов, опыт показал, что стоит только ввести версионирование, все. сразу же один метод сервиса будет использоваться в версии 1.1, другой - 1.2, третий 2.0 и поддерживать надо будет все, т.к. шина почему-то воспринимается как такая служанка, которая всем должна, а ради нее никто не должен рефакторить.

Quester комментирует...

Я всё же спрошу.

Вот например я самоучка по всем вещам с которыми мне приходится работать.

Есть вот например вот такой скромный стек технологий и фреймворков и вещей, которые НУЖНО знать.
Java SE
Core
Java EE
Servlets
Jsp
Spring Framework
Core
Security (ACL)
Web
Hibernate
JUnit
Mockito
JavaScript
JQuery
AngularJS

XML
GoF паттерны
HTML вёрстка
CSS
LESS

DI
Хорошие практики программирования и написания кода
Знать что такое SOLID
...и я точно забыл что-то ещё из вспомнить.


Ну вот хорошо.

Это просто, вот так вот скромно, тот перечень вещей, которые, скромно так, нужно знать.

Я вот на днях считал, сколько литературы нужно поднять для того чтобы про всё это просто прочитать. Даже не научиться пользоваться, а просто прочитать и, может быть, попробовать пример написать. Скажем на каждую технологию или что-то там ещё есть книга или туториал страниц на 500 (это средний размер текста, обычно больше) и таких книг, хороших и полезных обычно штуки 2. Ну т.е. 1000 страниц для 1 технологии.

В общем утрируя, и поковырявшись в библиотеке я недавно приблизительно посчитал что просто прочитать нужно около 12000 страниц текста. Это если в день поглощать страниц по 100, прорабатывая подробно весь материал, это только 4 месяца ничем больше не заниматься кроме чтения и тестирования.

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

Ок, скажем этот геройский период пройден. Я что-то знаю, ничем не умею пользоваться в совершенстве. Но полон уверенности, что что-то уже умею. Я начинаю что-то делать и нахожу, скажем, вот этот перечень литературы, который, как оказывается, тоже, очень хороший и практически обязательный не просто к прочтению, к пониманию. Ещё 3-4 геройских месяца. Опять же - это не работа - это только учёба. А информация которую выучил за первые 3 месяца постепенно из головы выветривается.

Я почему это всё написал.

Мне, так уж получилось, приходится учиться всему самому, и решать опять же самому много задач. Читать мнооооого литературы. Читать много хороших (как например этот) блогов, и не очень, и практически в каждом из них я так или иначе напарываюсь на списки "правильной" литературы без которой хоть сегодня в прорубь и можно не всплывать.

Возможно, это просто элемент пессимизма во мне работает, но после прочтения энной книги (ага, за прошлый год я их прочитал 10, 2 последние вообще по JavaScript'у) я начинаю понимать, что я не знаю ещё больше чем раньше, что да, теперь я знаю немного больше, и что из тех 10 000 технологий которые были придуманы за последнее время я ковырнул кое как, ну 2, ну 3. И понимаю что когда я приду на собеседование, мне зададут вопрос, на который я, при всём объеме прочитанной информации, всё равно не смогу ответить. Не потому что глупый, а потому что, ну просто например, слово monitor в Java Tutorials встречается на весь туториал целых 2 раза, хотя это важный термин в концепте многопоточности в Java.

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

Может я делаю что-то неправильно? Может у меня мозг недостаточного объёма или ещё что не так? Как всё-таки всё это выучить. Не просто прочитать, а уметь пользоваться? Хорошо пользоваться. Не просто для собеседования. Для себя.

Quester комментирует...

P.S. Сори за такой крик отчаяния. Но за эту неделю это 3-й подобный список на который я натыкаюсь и я понимаю что всё это мне прочитать реально, месяца за 3-4 геройского недосыпания. Но уметь пользоваться всем и понимать в совершенстве всё, даже не знаю когда это произойдёт. Не будем о грустном.

P.P.S. Design Patterns: Elements of Reusable Object-Oriented Software и Patterns of Enterprise Application Architecture отличные книги, кстати.

CGen комментирует...

У Adam Bien можно почитать и вторую книгу.

Сколько отчаянных криков ;-) Зачем изучать чего-то и при этом не быть уверенным, что Вам это точно пригодится?

Один весьма уважаемый человек(реальный High-performance & low-latency specialist, http://mechanical-sympathy.blogspot.ru/) говорит, что вы должны быть сумасшедшим, если используете Spring. Про его мнение об XML я промолчу, но полностью с ним согласен.

P.S.
Лично я SOAP использую - это весьма полезно во многих случаях, но использовать его абсолютно везде не стоит.

Pavel Samolisov комментирует...

@Quester Прошу прощения за задержку с ответом, был в отпуске.

Коротко отвечу так: никто не ждет от вас, что вы прочтете все эти книги за один вечер, более того, никто вообще не ждет, что вы прочтете их все. У каждого опытного разработчика своя стопка книг под кроватью и до сих пор продолжаются горячие зарубы на тему, кто лучше для новичка: Эккель или Хорстман. У вас вообще может быть свой список книг в зависимости от того, каких концепций вы придерживаетесь. Сами же эти концепции задаются как ни странно в Вузе (это в пику тем, кто на всех углах орет о бессмысленности высшего образования в IT). Одним рассказывают про DDD и они после этого фанатеют от Эванса, другим про DDD не рассказали, но объяснили, что EJB - зло, после этого они читают POJOs In Action и прозревают как оказывается надо писать, у третьих преподаватель наоборот фанат EJB и вход идут туториалы Sun/Oracle. Четвертые вообще ничего не читают, потому что учатся то дураки, а гении таймменеджмента копипастят код коллег, но это отдельная тема. Так же стоит отметить, что преподаватели в Вузе часто задают и специализацию, а у каждой специализации сами понимаете свой набор книг из раздела "нужно прочитать во что бы то ни стало".

В целом у меня на чтение книг из данного списка ушло 7 лет, в основном - на Java, книги по тому же WebLogic раньше вообще не читал, т.к. им не занимался, но за 4 года изучил и даже сертифицировался.

Дорогу осилит идущий.

Pavel Samolisov комментирует...

Добавил четыре новые книги

Отправить комментарий

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!