Хонингование такого ремесла как программиста-нелегкая задача, но ее можно сделать более увлекательной.
Изучение нескольких языков программирования может показаться завершающим этапом, но это только начало.
У вас есть необходимые (языки программирования) инструменты, теперь вы должны научиться ими пользоваться. Конечно, это помогает, если вы действительно хорошо знаете язык программирования, но фокус в том, как вы его используете.
Если у вас есть умение решать сложные задачи, а также немного выносливости, вы сможете пройти через эти книги и пройти путь от программиста-подмастерья до эксперта.
1. Код. Тайный язык информатики - (Чарльз Петцольд)
Эта книга не научит вас, как программировать, ни как получить работу в технологической отрасли.
С другой стороны, это первый шаг к такому путешествию. Тем не менее Эта книга решает эту проблему необходимой технической смекалки.
“Компьютерный процессор делает идиотски простые вещи — он перемещает байт из памяти в регистр, добавляет байт к другому байту, перемещает результат обратно в память. Единственная причина, по которой что-либо существенное завершается, заключается в том, что эти операции происходят очень быстро. Цитируя Роберта Нойса: "после того, как вы примирились с наносекундой, компьютерные операции концептуально довольно просты".”
Даже если вы давно работаете с компьютерами, есть шанс, что Петцольд может научить вас чему-то новому или, по крайней мере, показать вам что-то с точки зрения, которую вы раньше не рассматривали.
Это точка входа во все технические вещи, и необходима что-бы завершить свое образование и стать опытным программистом.
2. Программист - прагматик. Путь от подмастерья к мастеру - (Хант Э., Томас Д.)
В этой книге Эндрю Хант и Дэйв Томас дают читателям ряд советов по улучшению результатов программирования.
Эти советы в основном сосредоточены вокруг принципа, что программирование-это, по сути, совместное занятие. Если вы стремитесь работать инженером-программистом или программистом любого рода, большая часть кода, с которым вы будете работать, не будет вашим. Советы Ханта и Томаса помогут вам работать в такой среде.
Их советы практичны и лучше всего усваиваются на практике. Когда вы возьмете книгу в руки, старайтесь идти медленно и обдумывать советы авторов в следующий раз, когда будете программировать. Это не одноразовое чтение, а скорее семинар по передовым практикам.
Несколько примеров:
Совет 11: сухой — не повторяйтесь
Совет 30: вы не можете написать идеальное программное
обеспечение
Совет 44: Не программируйте случайно
Совет 50: не используйте код мастера, который вы не понимаете
Совет 70: подпишите свою работу
"Программист-прагматик” предлагает бесценный совет для всех, кто работает с кодом, и он должен быть в библиотеке каждого программиста.
3. Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн - Алгоритмы - Построение и анализ
Если у вас есть степень бакалавра в области компьютерных наук, вы, вероятно, уже знаете об этой книге. Вы, вероятно, также прошли через некоторые упражнения из нее. Если нет, то стоит перейти к ее прочтению.
Может показаться пугающим читать подобную книгу без инструктора. Независимо от того, сколько времени вам потребуется, базовые структуры данных и алгоритмы, представленные в этой книге, бесценны для любого программиста, серьезно относящегося к своему профессиональному росту.
Конечно, вы можете выжить несколько лет, работая инженером-программистом, не помня о временной сложности QuickSort. Вы можете выжить, не имея возможности кодировать DFS, не вставляя его из переполнения стека или не используя встроенную библиотеку.
Но идея не нуждаться в структурах данных и алгоритмах, прошедших школу, является подростковой. Это инструменты, с помощью которых программисты решают задачи. Они - хлеб с маслом современного инженера-программиста.
Вы не можете надеяться продвинуться в качестве программиста, инженера-программиста или ученого-компьютерщика, если не знакомы с содержанием этой книги (или книги по алгоритмам по вашему выбору).
4. Искусства программирования - том 1. Кнут Д. Э.
Как и в случае с предыдущей книгой в этом списке, прохождение “искусства компьютерного программирования” является сложной задачей. Лишь немногим удалось последовательно пройти всю книгу. Еще меньше людей потратили время на то, чтобы пройти всю математику в первых нескольких главах.
Я еще не просмотрел весь Том, но все равно не могу рекомендовать его больше чем остальные книги из списка. У нее есть свои проблемы, главным образом в отношении того, насколько хорошо язык микса кнута подходит для современной аудитории, но если вы пройдете мимо этого, он обеспечит невероятное понимание и глубину основных алгоритмов и структур данных.
Эта книга-настоящий вызов интеллекту и упорству, но она также является источником огромного богатства информации.
Сам Билл Гейтс сказал, что если вы закончите эту книгу, вы должны отправить ему резюме.
Стоит попробовать, верно?
5. Карьера программиста - Гейл Лакманн Макдауэлл
Хотите получить работу инженера-программиста?
Каким бы ни был ваш ответ, Эта книга все равно стоит того что-бы ее прочитать. Хотя учебники по алгоритмам и структуре данных очень важны для чтения, они практически не дают никакой реальной практики. Я знаю, что в обеих книгах, которые я перечислил прямо перед этой, есть множество упражнений для каждой концепции, которую они вводят, но есть загвоздка: вы всегда знаете, какой инструмент использовать. В реальном мире программные проблемы не сопровождаются подсказкой о том, какую структуру данных, алгоритм или технику следует использовать. После объяснения основных структур данных и алгоритмов (и, кстати, не переходите сразу к этой книге), автор включает два дополнительных раздела. В конце книги, перечисляя задачи средней и тяжелой сложности.Эти проблемы приходят в случайном порядке и бросают вызов читателю, чтобы выяснить лучший подход к их решению. Если бы вы внимательно изучали предыдущие главы, вы бы уловили различные паттерны и подсказки, когда речь заходит о выборе правильной структуры данных или алгоритма для решения проблемы. Эта книга поможет вам лучше решать проблемы в контексте компьютерного программирования, поэтому она очень важна.
6. Мифический человеко-месяц, или Как создаются программные системы - Фредерик П. Брукс-Младший
Эта историческая книга о программной инженерии занимает место обязательной книги об управлении программным проектом.
Если вы планируете работать с командой инженеров, концепции, представленные в этой книге, расширят ваш взгляд на то, что работает, а, что нет в контексте разработки программного обеспечения.
Основная идея заключается в том, что разработка программного обеспечения напрямую не сопоставима с другими дисциплинами, в которых рабочая сила непосредственно взаимозаменяема со временем. Во всяком случае, Брукс утверждает, что верно обратное.
- "Хорошая стряпня требует времени. Если вас заставляют ждать, то это делается для того, чтобы служить вам лучше и доставлять вам удовольствие",
- цитирует Брукс подзаголовок ко второй главе книги.
Это и дюжина других эссе о практике разработки программного обеспечения служат для того, чтобы осветить любому программисту подводные камни в этой дисциплине. Эта книга предназначена для того, чтобы убедиться, что вы не ошибаетесь в своей роли как части команды, организации и технологической отрасли в целом.
Это отличная книга для чтения, а затем можно тонко рекомендовать ее вашему проектному менеджеру.
7. Алгоритмы для жизни. Простые способы принимать верные решения - Брайан Кристиан и Том Гриффитс
Последняя книга в этом списке не полностью связана с написанием кода, а скорее с изучением методов решения проблем, полученных в результате разработки определенных алгоритмов (с которыми, пройдя так далеко по списку, вы, вероятно, уже сталкивались).
Авторы этой книги делают блестящую связь между человеческой психологией и информатикой, связывая обоснование нескольких тщательно подобранных алгоритмов с повседневными проблемами.
Нередко программисты иногда сомневаются в том, насколько применимы изучаемые ими концепции за пределами написания кода на компьютере. К счастью, Кристиан и Гриффитс дают ответ на этот вопрос, применяя общие алгоритмы к задачам, не связанным с компьютерными науками, и количественно оценивая ответы на повседневные проблемы.
Хотя обучение использованию алгоритмов и структур данных с целью написания лучшего кода является полезным занятием, изучение того, как использовать их в контексте вне текстового редактора, делает их изучение гораздо более увлекательным.
Подписывайтесь и пишите свои комментарии, буду рад с ними ознакомиться, так же буду очень признателен идеями по улучшения канала.
P.S. С глубочайшим уважением, ваш "книжный патруль".