Меня часто спрашивают, какие книги почитать о программировании. Расскажу о книге, которая обязательна к прочтению: «Роберт Мартин. Идеальный программист. Как стать профессионалом разработки ПО».
Эта книга не про языки программирования, а про жизнь программиста. Как на самом деле живет и работает программист. С какими проблемами сталкивается, как их решает. Особенно рекомендую эту книгу новичкам, которые еще не знают, стоит ли им становится программистами. Потому что в книге Мартин описывает разные ситуации и поведение в них.
Роберт Мартин — это известный специалист в области разработки ПО. Программированием он занимается с 1969-го года, а с 1996 по 1999 был главным редактором журнала C++ Report.
В книге он рассказывает о том, как пришел в программирование в 17 лет и с чем столкнулся. Любопытно, что хотя с этого времени прошло почти 50 лет, но все проблемы программистов и сейчас остались прежними. Работодатель не очень ценит работу программиста.
Мы написали каждую строку кода в этой системе. Да, без преувеличения каждую. Мы написали операционную систему, обработчики прерываний, драйверы ввода/вывода, файловую систему для дисков, систему подгрузки оверлеев и даже компоновщик с динамической переадресацией – не говоря уже о коде приложения. Мы написали все это за 8 месяцев, работая по 70–80 часов в неделю для соблюдения немыслимо жестких сроков. Тогда я получал $7200 в год.
Система была закончена в срок. А потом мы уволились.
Причина увольнения Мартина была в том, что после такой напряженной и успешной работы компания дала им прибавку всего в 2%.
В книге много жизненных примеров и советов Мартина о том, как лучше поступать.
Единственное, что я могу сказать, что далеко не со всеми советами Мартина я согласен. Например, Мартин советует:
Изучайте то, что лежит за пределами вашей привычной зоны. Если вы программист. NET – изучайте Java. Если вы программируете на Java – изучайте Ruby. Если вы программируете на C – изучайте Lisp. А если вам захочется серьезно поработать мозгами, изучайте Prolog и Forth!
Так забивать голову я категорически не рекомендую. Изучение должно давать конкретный практический смысл. Поэтому изучайте то, чем вы сейчас занимаетесь, и постепенно расширяйте свой профессионализм.
А вот с другим советом я согласен и всегда сам даю этот совет студентам.
Каждый профессионал обязан понимать предметную область программируемых им решений. Если вы пишете бухгалтерскую систему, вы должны разбираться в бухгалтерии. Если вы пишете приложение для туристической фирмы, вы должны разбираться в туризме. Быть экспертом не обязательно, но к изучению темы необходимо относиться ответственно. Начиная проект в новой для себя области, прочитайте одну-две книги по теме. Проведите собеседование с клиентом и пользователями об основах предметной области. Поговорите с экспертами, постарайтесь понять их принципы и ценности.
Если программист разговаривает на одном языке с заказчиком, то вероятность того, что работа программиста будет достойно оценена и хорошо оплачена, намного выше.
Поэтому рекомендую вам эту книгу. Купить ее со скидкой можно здесь.