.Net Developer – первые шаги. Пора взрослеть

добавлено: 10 дек 10
понравилось:0
просмотров: 3166
комментов: 0

теги:

Автор: Николай Байбородин

В прошлой статье мы остановились на том, что освоились с базовыми технологиями платформы, с возможностями выбранного языка программирования (напомню, что в нашем гипотетическом примере это – С#), выбрали приоритетную для себя специализацию и потихоньку начали оттачивать свое мастерство. Для того, чтобы не остановиться в своем развитии, принимаем участие Open Source проектах, возможно даже пишем потихоньку что-то свое, принимаем активное участие в различных профильных онлайн сообществах. Пора сделать еще один шаг вверх по лестнице профессионального мастерства.


Четвертая ступень познания

Рассматривая предыдущие ступени, мы постоянно делали акцент на практической стороне развития специалиста. Но, набираясь практического опыта, ты наверняка будешь не раз сталкиваться с такими задачами, когда имеющийся в наличии практический опыт не в состоянии преодолеть пробелов в фундаментальных знаниях. Это – верная примета, свидетельствующая о том, что пора основательно садиться за книги. А значит, перед нами очередная проблема выбора – что читать, чтобы с пользой для дела. Но, сначала – небольшое отступление от темы. Дело в том, что я хочу снова вернуться к вопросу о выборе основного языка. Из фольклора девелоперов:

Когда Самого Главного Программиста спросили, какой язык программирования лучше учить, он ни минуты не колеблясь ответил – английский.

И это действительно так. Общение с потенциальными работодателями и заказчиками (если вы встали на тернистый путь фрилансера), чтение спецификаций, свежих новостей и обзоров – все это требует языковых навыков. Но, вернемся к книжной полке и попробуем подобрать полезную для профессионально роста литературу. И тут опять пригодятся знания английского языка. Конечно, можно читать книги и на русском языке, но в данном случае вы неизбежно столкнетесь с двумя очень неприятными моментами: во-первых, перевод книги обычно выходит значительно позже оригинала, следовательно придется запастись немалым терпение во-вторых, качество перевода большинства блестяще написанных книг оставляет желать лучшего. В тоже время, единственный минус чтения англоязычного первоисточника – его немалая стоимость, к которой не забудьте добавить еще и стоимость доставки. Но, к счастью, есть достойное средство сохранения вашего бюджета. Это – покупка книг в электронном виде (доступно как на Amazon.com, так в интернет-магазине главного IT издателя O’ Really). Вы не только сохраните кем-то посаженное дерево, но и существенно сэкономите на бумажном носителе и на доставке.
Несколько советов о том, КАК читать книги по разработке.

  1. Это не художественная книга. Во время чтения в пределах вашей досягаемости должен быть компьютер. Это необходимо для того, чтобы иметь возможность уточнить какие-то моменты через поисковик, обратиться к официальной документации (описания API, спецификации и т.д.);
  2. Проверяйте на практике все примеры, встречающиеся вам по ходу чтения. Набирая исходный код примера, вы вдумчиво его анализируете, он не проходит транзитом мимо вашего сознания. Кроме того, постоянная работа с кодом на протяжении чтения книги помогает вжиться в изучаемую технологию, закрепить некоторые моменты на уровне подсознания.
  3. Конспектируйте. По ходу чтения книги делайте пометки, выписывайте особо важные на ваш взгляд моменты. Возьмите себе за правило конспектировать КАЖДУЮ изучаемую вами книгу. Для ведения и систематизации конспектов можно использовать различное вспомогательное программное обеспечение. Так, например, я использую для этих целей Evernote. Он позволяет организовать все мои заметки по тегам, сортировать их и осуществлять сквозной поиск по заметкам.

Ну? Список волшебный книг в студию? А вот нет, позволю себе еще одно маленькое отступление… Дело в том, что по мотивам моего предыдущего поста разгорелась нешуточная дискуссия по поводу пользы от книг из серии “Для чайников”. Позволю прокомментировать свою позицию. Я считаю, что подобные книги… нужны. И готов это повторить сколько угодно раз. Не спорю, читать спецификации – это true way. Но, велика ли будет польза абсолютному новичку от такого чтения? Не больше, чем от книги на незнакомом иностранном языке. Примитивизм книг для начинающих тоже оправдан – как вы объясните смысл какой-либо концепции человеку, которых не владеет используемым вами понятийным аппаратом? Думаю, не многие рискнут общаться с трехлетним ребенком как с кандидатом физико-математических наук. Подобные книги опускаются на уровень нулевого владения технологией и постепенно, шаг-за-шагом подтягивают читателя до уровня горизонта. А там уже его личный выбор – оставаться на уровне знаний общей эрудиции, или  переходить от букваря к серьезной литературе (понятийный аппарат к тому времени уже более-менее сформирован). Именно поэтому, разговор о том, что и как читать мы отложили до четвертой ступени познания. Alarm! Список книг, которые рекомендуются к прочтению – сугубо личная точка зрения автора данной статьи и не претендует на истину в последней инстанции. Весь список для большей наглядности будет разбит на несколько групп. Итак…

Платформа

Andrew Troelsen – Pro C# 2010 and the .NET 4.0 Platform, Fifth Edition. Именно эту книгу я рекомендую в качестве первого серьезного учебника после того, как вы освоили основы платформы и языка программирования. Обратите внимание на то, что на подходе (Amazon принимает предзаказ) уже пятая редакция книги, соответствующая платформе .Net 4.0. 

Jeffrey Richter – CLR via C#, Third Edition. Многие считают эту книгу чуть ли не библией .Net разработчиков. И, по правде говоря, на это есть причины. Прочтение данной книги даст глубокое понимание внутренних механизмов функционирования платформы и позволит при создании приложений учитывать архитектурные особенности, достигая оптимальной производительности и надежности программных продуктов. Так же, как в случае с предыдущей книгой, уже выпущена в свет редакция, актуальная для четвертой версии платформы.

Кроме упомянутых выше, без преувеличения знаковых и фундаментальных книг, неплохо было бы обратиться к первоисточникам. Я имею в виду спецификации. Прежде всего, это спецификация ECMA-335 Common Language Infrastructure (CLI). И, если ваш основной язык программирования – C#, то не мешает заглянуть и в его спецификацию.

Архитектура приложений

Steve McConnell – Code Complete: A Practical Handbook of Software Construction, Second Edition. Если меня просят назвать любимую книгу по разработке, я не задумываясь говорю – Code Complete. Чего только стоит стиль написания этой книги! Ее можно перечитывать и перечитывать. Не говоря уже о ее практической ценности! Если ты вполне уверенно умеешь писать программный код, забудь все, что ты раньше знал и использовал. Прочитай эту книгу, и ты узнаешь, как ПРАВИЛЬНО создавать программные продукты. Причем, сам автор вовсе не склоняется к догматическим выводам, а предлагает широкий спектр технологий и практик качественного кодирования. А, какой из предложенных инструментов выбрать – решать уже тебе исходя из конкретной ситуации

Erich Gamma – Design Patterns: Elements of Reusable Object-Oriented Software. Шаблоны проектирования – это то, что позволит вам избежать изобретения колеса. Несмотря на немыслимое разнообразие программных продуктов, архитектурно они очень похожи. Раз-за-разом встречаются типовые задачи, раз-за-разом для этик задач вырабатывается индивидуальное решение. Но, рано или поздно случается прорыв – все кусочки мозаики складываются в законченную картину и становится ясно, что вот оно – универсальное решение, приемлемое для большинства программных проектов. На свет рождается шаблон проектирования. Данная книга, наверное, самый авторитетный сборник шаблонов проектирования программного обеспечения с подробным и обстоятельным описанием природы и механизма работы каждого шаблона. 

Martin Fowler – Refactoring: Improving the Design of Existing Code. Нет предела совершенству. Смысл любой деятельности заключается вовсе не в достижении идеала, а в стремлении к нему, ибо движение, развитие – это жизнь, а нахождение в состоянии полного покоя на самом деле – регрессия, движение в обратном направлении. Эта книга не о том, как достичь совершенства в программном коде, но о том, как сохранить движение. Она научит анализировать код, находя в нем проблемные участки, перестраивать структуру, добиваясь максимально согласованного взаимодействия программных модулей, выбирать адекватные ситуации методы и приемы оптимизации используемых алгоритмов. 

Microsoft Patterns & Practices Team – Microsoft Application Architecture Guide. Начну с главного – эта книга доступна для свободного скачивания. Кроме того, в случае проблем с английским языком, вы без труда найдете  такой же бесплатный перевод этой книги на русский язык. В чем же ее практическая ценность? Не секрет, что каждая платформа накладывает определенные ограничения на реализацию архитектуры разрабатываемых для нее приложений. Соответственно, для создания действительно качественного программного продукта все эти особенности необходимо знать и уметь эффективно использовать. Книга Microsoft Application Architecture Guide – это путеводитель по платформе, раскрывающий основополагающие принципы эффективной разработки программного обеспечения для операционных систем семейства Windows. Кстати говоря, значительная часть материала данной книги будет интересна и полезна также и разработчикам, ориентированным на другие платформы. 

Dino Esposito – Microsoft .Net: Architecting Applications for Enterprise. Если вы планируете учувствовать в разработке корпоративных приложений, то вы должны быть готовы к тому, что это совершенно другой мир, живущий по своим законам. И традиционные архитектурные решения там, увы, не действуют. Но, это не повод бежать без оглядки едва заслышав слово Enterprise. При наличии здоровых амбиций, желания и качественного источника знаний и эта цель может быть успешно достигнута. Данная книга  — одна из лучших среди посвященных разработке Enterprise приложений на платформе .Net. Гарантия качества – имя автора на обложке. Дино Эспозито в представлении не нуждается.

Классика программирования и разработки программного обеспечения

Thomas H. Cormen – Introduction to Algorithms, Third Edition. Фундаментальный труд известных специалистов в области кибернетики достоин занять место на полке любого человека, чья деятельность так или иначе связана с информатикой и алгоритмами. Для профессионала эта книга может служить настольным справочником, для преподавателя — пособием для подготовки к лекциям и источником интересных нетривиальных задач, для студентов и аспирантов — отличным учебником. Каждый может найти в ней именно тот материал, который касается интересующей его темы, и изложенный именно с тем уровнем сложности и строгости, который требуется читателю. 

Andrew Hunt – The Pragmatic Programmer: From Journeyman to Master. Не смотря на то, что индустрия разработки программного обеспечения уже выросла из младенческого возраста, до сих пор в ожесточенных спорах ломаются копья по поводу того, что есть программирование – ремесло, наука или искусство. В этой классической книге делается упор на ремесло программирования. А всякое ремесло, как известно, хранит в себе множество секретов, только постигнув которые подмастерье становится Мастером. Эта книга не претендует на то, чтобы раскрыть читателю все секреты ремесла, но поверьте, раскрывает она их не мало. К тому же, по причине невозможности объять необъятное, в книге рассматриваются наиболее значимые, ключевые принципы и техники реализации идеи в программном коде. 

Donald E. Knuth – The Art of Computer Programming, Volumes 1-3. Книга, точнее книги, которые не нуждаются в представлении и комментарии. Разве что, упомяну одну услышанную или прочитанную где-то байку: Все программисты делятся на два типа – те, кто утверждает, что прочел от корки до корки все три тома Кнута, и те, кто говорит правду :) Так или иначе, но эту книгу неплохо иметь на книжной полке и хотя бы периодически пролистывать, углубляясь в изучение тех алгоритмов, которые вы используете в данный момент в своих проектах. 

Henry S. Warren – Hackers’s Delight. Лучшая рецензия на эту книгу из тех, что мне довелось читать, звучит так: “Считайте, что это нулевой том Искусства программирования”. Кроме того, некоторые источники рекомендуют эту книгу для подготовки к интервью в Google, что тоже говорит о многом. 

Harold Abelson – Structure and Interpretation of Computer Programs – 2nd Edition. Букварь по разработке программного обеспечения, объясняющий фундаментальные основы. Во многих университетах мира это первый учебник по Software Development.  Да, и сама книга тоже из университетской среды. Издает ее великий и могучий MIT. И опять приятный сюрприз. Книга в электронном виде распространяется совершенно бесплатно. Причем, при желании можно найти и перевод на русский язык. Начать поиски советую с домашней страницы книги.

Вот такой список получился. Скорее всего вы не нашли в нем вашей любимой книги. Кто-то может спросить – а где же книги по ASP .Net, по WPF, по Silverlight и так далее? Ответ прост – цель которую мы перед собой ставим, покоряя очередную ступень, это получение базовых, фундаментальных знаний. Напомню, что со специализацией мы определились на предыдущих ступенях. А это значит, с какой-то литературой по данной технологии вы уже знакомы, возможно даже у вас сложились свои предпочтения.


Комментарии




Необходимо войти на сайт, чтобы оставлять комментарии