Какие книги следует читать, чтоб стать программистом

Какие тысячи книг надо прочитать, чтоб выявить те «три», которые реально помогли стать хорошим программистом? Хочется поговорить не столько о конкретных книгах, сколько о типах книг. И в чем заключался академический подход к этому в СССР…



В свободное время модерирую JAVA раздел на одном из интернет форумов. Часто приходят ребята и спрашивают посоветовать пару книг или видеокурсов, чтобы быстро изучить язык и быстрей начать программировать и, став профессионалом, зарабатывать на этом. Все-таки, а что значит программировать?


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


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


Чтоб стать таким проводником, нужно одновременно соприкоснуться с двумя формами:

1. миром железа
26_10_005.jpg1000610452.jpg1001085325.jpg

2. сторона человеческого восприятия

1002729662.jpg1001694665.jpg


Ведь именно этим фундаментальным аспектам обучали в высших технических школах СССР. Если освоить хорошо их, то дальнейшие книги сами выстроятся — потребуются знания о методиках разработки, конкретных языках и фреймворках. Выбираться будут из тактических соображений, в зависимости от задачи и изучаются за конечное время.


Как считаете?
  • Вопрос задан
  • 22939 просмотров
Пригласить эксперта
Ответы на вопрос 9
@korvindest
Сам программист и имею некоторый опыт преподавания программирования, как школьникам, так и студентам.

Начинать с изучения алгоритмов архитектур, баз данных и прочего категорически не советую!

Убьете в себе всякое желание развиваться в этом направлении. Лучшая мотивация для человека продолжать что то начатое, это когда он видит как что то, только что созданное им, пускай и почти бесполезное, но (!)Работает.

Начните с какой нибудь книжки изучения языка (C, Java, C#)для начинающих. Для начала освойте основные конструкции языка: Типы данных, Ввод, Вывод, Условия, Циклы, Функции/Методы.
Потом переходите на решение простых задач:
— Вывести все числа от 0 до 10
— Вывести все четные числа
— Вывести таблицу умножения
— Красиво отформатировать выводимую таблицу умножения
— Вывести треугольник паскаля (тоже можно с форматированием)
Далее стоит уже порешать простейшие алгоритмические задачи, которые потихоньку заставят вас обратиться к книжкам этой тематики:
— Найти решение уравнения заданного коэффициентами, методом деления отрезка пополам.
— Позволить пользователю ввести набор чисел и вывести их в сортированном виде.
— Прочитать файл и вывести все встречающиеся в нем слова (уникальный список слов)

… тут уже начинает кончаться фантазия потому что я еще не пил свой утренний кофе, но если вам потребуется я с удовольствием добавлю список.

После того как эти азы вам будут уже известны вы и сами найдете себе задачу по плечу. И вам будет гораздо интереснее читать те книжки которые вам тут советуют. И не важно какую платформу и язык вы выберете потом, важно сначала научиться программировать.
Ответ написан
Alexx_ps
@Alexx_ps
Чтоб стать программистом нужны не книги, а практика, практика и еще раз практика… Даже прочитав 100 книг вы не станете программистом.
Причем практиковаться желательно не просто примерами листинга из книги или задачками в конце главы, а нужно брать эти задачки за основу и придумывать вокруг них какую-то полезную программу. Так вы намного быстрее начнете именно программировать, а не переписывать листинги из книги.
Ответ написан
Gibbzy
@Gibbzy
ну базы данных, сети, операционные системы про это конечно обязательно знать программисту (хотя на самом деле от специализации зависит)

но как правило выделяют следующих авторов:

тут нужно изучать что то подготовительное
например «Как программировать на паскале»
или «Что такое циклы, массивы и какие типы данных бывают»

Дональд Кнут
Грэйди Буч
Мартин Фаулер
Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес

+ книги по специализации
например если вы на java пишете то не пройдете мимо Брюса Эккеля.
Если вам нужны знания баз данных или операционных систем то прочитайте про них.
Ответ написан
Комментировать
@Optik
Странно как то выглядят комментарии. Либо книги либо практика. Без практики вообще никуда, но и работать без книг нельзя. Меняется лишь стартовая точка в зависимости от текущего уровня знаний и умений. Если совсем программировать не доводилось, то сначала надо получить представление минимальное. Источником отлично послужит intuit.ru, статей для новичков с разжеванным материалом полно. Если это все уже известно, то тут надо начинать читать Thinking in Java и искать возможность для реальной практики. Можно конечно и задачки щелкать, но гораздо быстрей прогресс будет идти на неэфемерном проекте, где есть сроки и есть люди способные направить в нужное русло. Можно open source, но, имхо, лучше найти работу с минимальным порог входа. А дальше уже будут Блох, Кнут и прочее.
Да это может не совсем корректный подход в понимании людей со стажем. Но для человека с головой этот вариант наиболее быстро ведет по пути развития. Только нужно помнить что ты до сих пор ничего не знаешь, а код того senior -а тоже надо проверять на наличие косяков и Г. Знание английского также сильно ускорит поиск инфы и новых знаний, ибо книги мастрид далеко не всегда есть на родном языке даже через годы + помощь на форумах англоговорящих будет оперативней и скорее более полезной (народу тупо больше, а значит и больше хороших специалистов). Еще очень важным моментом является инженерное образование, т.е. умение разрабатывать системы, обслуживать их, изучать неизвестные. И тут боюсь книг не существует. Только ВУЗовская школа.
Ответ написан
Комментировать
Wott
@Wott
что бы стать хорошим программистом надо намного больше чем «три» книги. Даже если общими мазками выписать области знаний, то будет больше. А начинать надо с алгоритмов в частности или дискретки более обще.

Что бы быстро стать оплачиваемым программистом надо не java а php+html+css+js, только что бы не остаться быдлокодером надо потихоньку разворачивать курс какого-нить программисткого ВУЗа — прежде всего математику, базы, сетевые приложения

В «человеческом» надо прежде всего учиться общаться — communication skill из любого прожект-менеджерского курса, потом VCS и методы разработки вообще и совместной разработки в частности — ООП, шаблоны архитектуры и прочие.
Ответ написан
Комментировать
difiso
@difiso
В параллельной вселенной я космонавт
Donald Knuth «The Art of Computer Programming». Без этого никуда
Ответ написан
Комментировать
@contor Автор вопроса
Ну да, это и отличает два пути:
— 9 классов — ПТУ — Вечерняя высшая школа
— 11 классов — Дневное обучение

И то и другое имеет место быть и работает. Я говорю о том, что программистам настраивать себя надо на то, что фундаменталку изучать придется…
Ответ написан
Комментировать
@Harshow
Я конечно не супер знаток, но вот эти книги рекомендуют почти все, кто связан с программирование, независимо от специализации.
Ответ написан
Комментировать
goodprogrammer
@goodprogrammer
к. ф.-м. н.
Книги бывают разные: теоретические (это подспорье), более практические похожие на курсы (такие лучше прорабатывать тщательно).
Но полезнее ставить перед собой задачи (от элементарных к более сложным) и доводить их до конца. Тогда ваш мозг сам подскажет и выцепит нужную инфу, книгу, курс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы