11 сент. 2016 г.

Прочитанные книги. Часть 1


Я снова в деле. Прошло чуть больше года после того, как я перестал тут писать статьи. После такого, довольно продолжительного промежутка времени, я решил вернуться и хочу продолжить работу над собой и блогом. На мое решение повлияло несколько факторов:
  • наверное, самый главный - это то, что у меня теперь длительный отпуск и есть свободное время и силы на саморазвитие, на переваривание и изложение своих мыслей;
  • мое убеждение, что если хочешь что-то выучить, то попробуй это "что-то" кому-нибудь объяснить; 
  • у меня пока мало статей, а значит - мало читателей, но они есть, они заходят, когда ищут нужную им информацию и мне хочется верить, что они ее находят именно у меня. Таким образом я помогаю и себе и другим людям; 
  • ведение блога позволяет систематизировать информацию. И если я что-то изучаю, при этом желая об этом написать в блоге, то изучение изначально строится на более глубоком уровне, я пытаюсь понять материал так, чтобы научить этому кого-то другого, в данном случае тебя, читатель; 
  • в последней, мною прочитанной, книге автор писал, что вести блог - это КРУТО! И я с ним согласен! 
В этой статье я и хочу рассказать о книгах. У меня есть в планах постоянно, ежедневно, читать хорошую литературу, хотя бы 15 минут в день. Но независимо от того, будет эта литература хорошей или плохой, я хочу рассказывать об этой литературе вам, так сказать, делиться впечатлениями. А вы в комментариях можете оставлять свои отзывы и мысли. Но когда я пишу, что книга мне не понравилась (или понравилась), мой вам совет, не верьте, подвергайте сомнению мое мнение и мнение других людей и проверяйте, ведь ничто так не развивает, как скептицизм.
По поводу моих планов, я буду читать книги, после завершения 2-3 штук буду писать о них здесь, в блоге.

Сегодня рассказать я хочу о двух книгах. Первая - это "Совершенный код" Стива Макконелла, а вторая - "Программист-фанатик" Чеда Фаулера.

1. Стив Макконелл "Совершенный код (2-е издание)" (Steve McConnell "Code complete")

Оценка - 9/10
Это книга, после прочтения которой ты понимаешь, какой же несовершенный твой код. Ты читаешь свой вчерашний код и не можешь поверить, как такое вообще можно было написать. Конечно, я утрирую, но в целом примерно так и есть.
Книга - не панацея, она просто дает ответы на вопросы, что возникали на протяжении нескольких лет практики программирования. Очень простой пример, иногда я комментировал код как-то так:
int sumOfProfit = moneyService.getProfitSum(); // сумма прибыли
и у меня было сомнение, нужно это делать или нет. В книге объясняется, почему так делать не надо, как надо делать и еще миллион способов, как вообще можно делать. То есть, книга развеивает сомнения. От этого она не для новичков в программировании, потому что у новичков, как правило, еще нет никаких сомнений, некоторые вещи они пока что не делали никак, в их головах не возникало пока вопросов, на которые в книге есть ответы. Я думаю, что книгу можно начинать читать, имея за плечами, как минимум 2-3 года опыта программирования, при этом желательно иметь опыт работы в большой команде и на больших проектах, опыт разработки архитектуры и проектирования.
Много примеров кода, много кода на VB, Java и С++. Если вы не программировали на С++, как в моем случае, то процентов 10 материала придется пропустить.
Из достоинств можно выделить то, что автор объясняет процесс разработки с самого начала, с проектирования и заканчивает тестированием, рассматривая по пути разработку архитектуры, конструирование, рефакторинг, комменрирование кода, психологию программирования, инструменты разработки и еще много-много чего.
Также хочется сказать, что книга не на один раз, ее можно и нужно перечитывать бесконечно, ведь совершенного кода все равно не добиться. 
Из недостатков хочется выделить 2 вещи:
  1. Много примеров, статистика, опросы, эксперименты 80-х годов. Я не буду утверждать, но мне кажется, что данные безнадежно устарели, тем более, если учитывать нашу сферу деятельности - программирование, где каждый день появляется десяток технологий, каждые пол года - новый язык и т.д.
  2. Автор описывает ситуации идеального мира, в идеальных компаниях, где упор делается на качество продукта. В реальном же мире, в большинстве случаев, как прискорбно это не звучит, мы пишем код любого качества, главное, чтобы быстро и за это побольше платили.
На этом все. Планирую перечитывать эту книгу, хотя бы раз в пару лет и тогда точно код, хоть чуточку, но станет идеальней.

2. Чед Фаулер "Программист-фанатик" (Chad Fowler "Passionate Programmer")
Оценка - 6/10
Это вторая и последняя книга, которую я прочитал по программированию за последнее время и о ней я тоже хочу написать.
Структура самой книги такая:
  • совет, где автор рассуждает, наводит примеры как решить ту или иную проблему;
  • блок "Действуй", где даются практические, но посредственные советы по решению проблемы. Есть полезные блоки, но есть и "так-себе".
Книга небольшая, о том, как построить карьеру разработчика и достичь в этом небывалых высот, стать незаурядным, быть рентабельным для компании и об отношениях с заказчиками. Еще много информации, как по мне, очень толковой о том, как выбрать технологию для развития, чтобы стать востребованным специалистом.
Автор - бывший музыкант, много примеров строится на музыкальной индустрии.
Вот несколько выводов или цитат из этой книги:
  • программировать нужно любить, без этого работать будет сложно, а сделать карьеру - еще сложнее;
  • автор выделяет энтузиазм, как главный секрет успеха для того, чтобы стать лучшим программистом и критикует тех, кто работает только ради денег;
  • как выбрать сферу деятельности? Основная идея в том, что, если хочешь стабильности - выбирай популярные, ТОПовые языки и технологии. Если хочешь больших денег и достичь высот - придется смотреть в будущее, рисковать, выбирать одну из развивающихся технологий или языков. Делай ставку на развивающуюся технологию и играй;
  • будь всегда хуже в команде, чтобы стать лучше. То есть, работай с лучшими и станешь лучшим, хоть и будет тяжело;
  • разбирайся в технологиях, с которыми работаешь. Узнавай, как и почему они работают, чтобы знать, как их починить, когда они внезапно сломаются;
  • задавай вопросы "Как?" и "Почему?";
  • изучай не программирование, а бизнес, в котором работаешь, с которым связана твоя деятельность;
  • найди наставника или стань наставником;
  • участвуй в opensource проектах, анализируй код мастеров;
  • ты никогда не должен чувствовать себя слишком комфортно. Скромность и заниженная самооценка - очень хорошие качества для развития;
  • работай лишь 8 часов в день, но настолько интенсивно, чтобы просто не смог работать больше;
  • проект - это не спринтерская дистанция, а марафон. Держи такой темп, чтобы пробежать его полностью;
  • не затягивай с решением проблем и исправлением багов;
  • не обещай сделать то, чего сделать не сможешь;
  • не паникуй! Оставайся спокойным и продумывай каждый свой шаг. Смотри широко на картину в целом, а не на узкую фигуру проблемы;
  • не закрывайся от людей. Наиболее важным качеством, позволяющим проявить себя на рабочем месте, является коммуникабельность;
  • не опускай возможности реального общения (не по телефону или скайпу) с заказчиками или руководителем;
  • делая задание, думай о том, какую выгоду оно принесет бизнесу;
  • приходи на работу с целью, продвигай свои идеи, делай предложения, чтобы все видели и знали о том, над чем ты работаешь;
  • ты никогда не почувствуешь себя готовым на 100%. Большинство людей недооценивают себя;
  • заведи блог и пиши там статьи, мысли, делись тем, с чем ты разобрался;
  • технологии развиваются быстрее, чем мы успеваем их изучать. Знакомься с передовыми технологиями на рынке, думай наперед, постарайся предвидеть будущее;
  • чтобы не терять мотивацию, при работе над задачей каждый день спрашивай себя "Сегодня ситуация лучше, чем вчера?". Улучшения должны быть небольшими и постепенными, но ежедневными!
Вот такая вот книга. Определенно, в ней есть полезные советы, интересные мысли, но перечитывать я ее не буду. Много советов очевидные, банальные, поверхностные. Что понравилось, так это истории из деятельности великих людей, которые много чего добились, таких историй в книге штук 5-6.

Еще я увлекаюсь психологией, иногда читаю художественную литературу, поэтому следующие посты о литературе будут не только о книгах по программированию. Вот, что я планирую прочитать в ближайшее время:
  1. Gerald M. Weinberg - Psychology of computer programming, 1971.
    Книга старая, но все еще актуальная и чуть ли не единственная в своем роде. Нет книг, или очень мало, рассматривающих программирование с точки зрения психологии. К сожалению, ее нет в русском переводе, так что буду читать на английском, а это займет чуть больше времени. О ней я узнал как раз в книге "Совершенный код", о которой писал чуть выше. Автор ее очень расхваливал и рекомендовал. Сам понимаю, что программирование и психология очень близки, так что, буду читать.
  2. Дейл Карнеги "Как перестать беспокоиться и начать жить". Тоже по психологии, уже начал, а это значит, что нужно закончить.
  3. Элис Мьюир "Уверенность в себе. Книга для работы над собой". Тоже начал, не знаю, хорошая ли книга и насколько она будет полезной. Прочитаю, отпишусь :)
По поводу литературы по программированию, то следующей книгой будет Bruce Eckel "Thinking in Java, 4th Edition" или "Философия Java", если на русском. Давно хотел прочитать.

На этом все, всем развития и улучшения!

Комментариев нет:

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

Спрашивайте, критикуйте, оставьте свое мнение