JavaRush /Java блог /Random UA /Топ-10 книг з програмування для початківців
Max Stern
35 рівень
Нижний Новгород

Топ-10 книг з програмування для початківців

Стаття з групи Random UA
У мене є колега, який провів безліч технічних співбесід для майбутніх “джавістів”. Одного разу я запитав його, що впливає на рішення взяти на роботу претендента без реального досвіду при виборі серед людей із приблизно рівними знаннями мови. Враховуючи ситуацію на ринку, думаю, це питання актуальне для багатьох із вас. Топ-10 книг з програмування для початківців - 1"Захопленість технологіями, вміння вибрати найкращий варіант вирішення завдання, загальна ІТ-ерудиція, розуміння, що його чекає на роботі" — такою була його відповідь. У цій статті я зупинюся на виданнях, які допоможуть новачкові-програмісту знайти ту саму ІТ-ерудицію, розуміння майбутньої роботи, а також спростити завдання вибору кращого рішення. Тобто отримати роботу і максимально добре проявити себе в ній із самого початку. Цей список я складав згідно з власними уподобаннями, тому він може бути дещо суб'єктивним. Тут є і класичні підручники з програмування, і настільні книги для програмістів усіх поколінь.

Покращуємо код та продуктивність

Просто писати код мало. Важливо писати його добре, вміти його покращувати, а також розуміти, як відбувається його розробка загалом. Наступні книги для програмістів-початківців і не тільки допомогли не одному поколінню фахівців впоратися з непростим технологічним процесом розробки ПЗ.

Програміст-прагматик. Шлях від підмайстра до майстра (Ендрю Хант, Девід Томас)

Оригінальна назва: The Pragmatic Programmer by Andrew Hunt and David Thomas Топ-10 книг з програмування для початківців - 2Якщо ви не читали цю книгу, швидше за все, на форумах та спеціалізованих ресурсах ви неодноразово зустрічали цитати з неї. Образ програміста-прагматика в цій книзі настільки чіткий і ідеалізований, що його можна назвати романтиком, хоч би як парадоксально це звучало. Тим не менш, поради з книги — слушні та актуальні незважаючи на її солідний вік. Не знаю, з чим порівняти “Програміст-прагматик” у світі книги з програмування. Найближчі аналоги поза цим світом — “Старий заповіт” або якась супер-крута куховарська книга. У “Прагматиці” все дуже конкретно і максимально застосовується практично. Деколи доходить до банальностей (наприклад, у розділі про ефективне спілкування зібрані елементарні правила ділового етикету), але часом поради з книги незамінні, особливо якщо у розробника-початківця немає терплячого і уважного ментора. Такі підказки про повторюваність коду, створення прототипів, оцінки. Або нагадування про неможливість створити досконалу програму. Є там і корисні технічні моменти, що стосуються, наприклад, налагодження коду, модульного тестування або швидкості алгоритмів... словом те, що потрібно для підготовки до кар'єри програміста.

Рефакторинг Поліпшення існуючого коду (Мартін Фаулер)

Оригінальна назва Refactoring: Improving the Design of Existing Code by Martin Fowler with Kent Beck Топ-10 книг з програмування для початківців - 3Якщо ви попросите когось перерахувати найкращі книги з програмування всіх часів, які допомогли зробити кар'єру, хтось обов'язково згадає “Рефакторинг”. Хтось може сказати, що ця книга застаріла, і в чомусь матиме рацію. Вона писалася в ті часи, коли рефакторинг ще не був повсюдним правилом, і деякі істини в ній очевидні для програмістів-початківців сьогоднішнього дня. Тим не менш, прийоми рефакторингу розписані в ній настільки добре і докладно (місцями, я навіть сказав би, багатослівно), що кожен новачок знайде в ній щось корисне. Декілька років тому вийшло оновлене видання книги, і там були додані нові прийоми, що просто чудово. До того ж, приклади в цій книзі написані на Java. З недоліків зазначу хіба багатослівність. Проте книгу рекомендую.

Чистий код (Роберт Мартін)

Оригінальна назва Clean Code: A. C. Martin Топ-10 книг з програмування для початківців - 4Ця книга хоч і новіша за попередню, але вже теж стала класикою книг із програмування. “Дядько Боб”, як іноді називають Роберта Мартіна у всесвітній програмістській тусовці, є одним з авторів маніфесту Agile, а також деяких принципів сучасного “чистого” програмування, наприклад, SOLID. Одним з головних лейтмотивів книги можна вважати... емпатію, або просто гарне ставлення до всіх, кому доведеться працювати з вашим кодом (у тому числі і вам в майбутньому). На цьому простому принципі та здоровому глузді будуються більшість правил "Чистого коду". Більшість правил та порад здаються дуже правильними, з тих, які інтуїтивно крутяться в голові, але чітко сформулювати їх непросто. Втім, з деякими думками автора можна посперечатися: він часом є надзвичайно категоричним. Наприклад, він пише, що хороший код не потребує коментування.

Ефективна робота з успадкованим кодом (Майкл Фізерс)

Оригінальна назва: Working Effectively with Legacy Code ин Michael C. Feathers Топ-10 книг з програмування для початківців - 5До цього життя вас не готувало... Ні, правда: якщо ви тільки вчитеся, то не уявляєте, який це біль — працювати з базами успадкованого коду, який, ймовірно, писав ще дідусь Білла Гейтса. Цей код часто написаний зовсім не так, як ви звикли, а задокументований настільки погано, що іноді хочеться знайти його автора і... На жаль: життя Java-програміста на великих проєктах часто пов'язане саме з підтримкою legacy. Ця книга може допомогти з технічними аспектами роботи з давнім кодом, а також допоможе вам змиритися зі своєю долею. Так, я серйозно. Ця книга стане вам у нагоді, якщо ви твердо націлилися на аутсорсингову або продуктову компанію з великими проєктами.

Head First. Паттерни проєктування (Ерік Фрімен, Берт Бейтс, Кеті Сьєрра, Елізабет Робсон)

Оригінальна назва Head First Design Patterns: A Brain-Friendly Guide by Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson Топ-10 книг з програмування для початківців - 6Шаблони проєктування, ці логічні правила гарного тону, які якщо їх не вивчати з часом і так спадають на думку (або ні…) і які перетворюються буквально на суперсилу програміста-початківця, якщо до них почати придивлятися якомога раніше. Так, спочатку корисно покрутити відносно складний персональний проєкт і спробувати розбити його на підзавдання самостійно... і врешті-решт знайти потрібний патерн. Однак коли йдеться про роботу, часу на експерименти не завжди вистачає. Коли я потрапив на стажування ,я дуже мало знав про патерни: навчаючись на JavaRush, я просто проскочив усі ці фабрики-синглтони-ін'єкції-залежності, вважаючи, що й так розберуся, коли буде потрібно. Однак розібратися потрібно було дуже швидко, і саме книга "Head First. Паттерни про.ктування” мені у цьому допомогла. Вона легко написана, наповнена ілюстраціями та гумором… мені здається, що подача для теми “шаблони про.ктування” дуже важлива: її можна подати дуже нудно, а можна – так, як у Head First. Відмінний додаток до “Чистого коду” та/або “Рефакторингу”!

Комп’ютерна архітектура та загальні комп'ютерні науки

Наскільки важливо майбутньому програмісту розбиратися в архітектурі комп'ютера, знати, як влаштовані операційні системи, а як бази даних? Не факт, що ці знання вам знадобляться у роботі безпосередньо. Але вони безперечно допоможуть вам продемонструвати захопленість ІТ-сферою та ІТ-ерудицію. І найголовніше: якщо ви знаєте, як все влаштовано, це допоможе вирішувати завдання краще. Інфа 100%. Так що вам ще дві книги на допомогу.

Код (Чарльз Петцольд)

Оригінальна назва Code: The Hidden Language of Computer by Charles Petzold Топ-10 книг з програмування для початківців - 7Перше видання “Код” побачило світ ще на початку двохтисячних, але насправді вона могла з'явитися і раніше, і пізніше – і була б так само актуальна. Справа в тому, що в цій книзі робота комп'ютера пояснена на дуже низькому рівні, починаючи з того, як працюють ті самі нулі і одиниці, і перший технічний приклад — це схема ліхтарика, який можна вважати найпростішим однобітним комп'ютером... Ні, ви не думайте, що у книзі все дуже примітивно. Насправді навпаки. Там описані схеми комп'ютерів з командами, робота пам'яті і операційних систем по суті. Мабуть саме після її прочитання я зрозумів, як працюють комп'ютери. Нехай архітектура та набір команд процесора змінюється, а пропускна здатність пам'яті збільшується, по суті обчислювальні машини працюють так само. Чи потрібні ці знання Java-програмісту? Безпосередньо в роботі вони стануть у нагоді дуже небагатьом. Але побічно мені в роботі часто допомагало те, що я розумів, як все це працює насправді.

Введення в комп'ютерні науки (Гленн Брукшир, Денніс Брілов)

Оригінальна назва Computer Science: An Overview by Glen Brookshear and Dennis Brylow Топ-10 книг з програмування для початківців - 8Ця книга потрапила до мене ще в університеті, коли я вивчав основи комп'ютерних наук. Тільки мені дісталося шосте видання, а нині актуальним є, здається, аж 13 видання. Книга є базовим курсом з комп'ютерних наук, який вже багато років читається в університетах США та інших країн. Охоплення матеріалу у ній дуже широке: архітектура машин, системи числення, обробка даних, операційні системи, принципи побудови баз даних, структури даних, файлові структури тощо. Не всі розділи книги написані однаково добре. Наприклад, колись мене дуже збентежили розділи про методи проєктування та бази даних, а ось розділи про системи числення, побітові обчислення, архітектуру ПК та структури даних мені дуже зайшли. Найкрутіше в книзі — величезна кількість вправ із ключами.

Алгоритми та структури даних. Та ще біда!

Враховуючи, наскільки високорівневим стало сучасне програмування, знання алгоритмів втратило першорядну важливість. Тепер достатньо застосувати потрібну бібліотеку та не ламати голову над тим, як краще відсортувати масив. Однак ламати голову в роботі вам таки доведеться, і не раз. Пам'ятаєте пункт “вміння вибрати найкраще рішення з можливих” з вимог до програміста-початківця? Так ось, що б хто не говорив, я вважаю хорошу алгоритмічну підготовку чудовим прокачуванням для пошуку оптимальних рішень. Тому наступні дві книги — про них. Про алгоритми.

Грокаємо алгоритми. Ілюстрований посібник для програмістів і допитливих (Адітья Бхаргава)

Оригінальна назва: Grokking Algorithms: Anillustrated guide for programmers and other curious people by Aditya Y. Bhargava Топ-10 книг з програмування для початківців - 9Сам автор на початку книги пише, що алгоритми далися йому не відразу, і він намагався писати "Грокаємо алгоритми" так, щоб вона читалася просто. Розрахована вона на програмістів-початківців, тобто тих, хто може написати “hello, world” і знає, що таке int, рядок, цикл, розгалуження та масив. Та й може вивести масив на екран. Необхідне знання математики – приблизно на рівні 6-7 класу середньої школи без вишукувань. І це перший серйозний плюс книги. Вона не намагається уявити читача студентом-математиком, як багато видань на тему. Тобто якщо ви боїтеся математики, алгоритмів, які вже намагалися вивчати останні і нічого не зрозуміли, ця книга чудово підійде для вашої реабілітації у власних очах. Другий позитивний момент — у книзі розглянуто те, що цілком може стати в нагоді на практиці (розуміння цього — точно). Починається вона з пояснення суті бінарного пошуку та ефективності — буквально на пальцях та з безліччю картинок. Третій — у книзі багато питань і вправ (приклади коду — на Python, але це не так важливо). Момент, який для когось може бути позитивним, а для когось — негативним: книга не вдає з себе всеосяжного довідника. Скажімо, із загальноприйнятих для вивчення алгоритмів тут є лише два — неефективний алгоритм вставки та ефективний алгоритм швидкого сортування. Чому б автору не розглянути інші алгоритми, скажімо, бульбашки чи злиття — не знаю. Насправді алгоритм злиття в книзі згадується, але коротко, без розбору і лише в порівнянні з швидким сортуванням. З іншими темами все так само. Є основи, які розібрані дуже добре, але часом дуже хочеться більш поглибленого продовження, яке просто немає. Одним словом, перед нами дуже базова книга, після якої, швидше за все, захочеться знайти книгу, де все розписано серйозніше. Наприклад, таку.

Алгоритми (Роберт Седжвік, Кевін Вейн)

Оригінальна назва: Algorithms by Robert Sedgewick and Kevin Wayne Топ-10 книг з програмування для початківців - 10Насправді ця книга може як зачарувати, так і злякати. Відлякати хоча б своїм обсягом на дуже багато сторінок і певною академічністю. Тому якщо до неї, академічності, не схильні, або не почуваєтеся впевнено в математиці (старші класи, найпростіші елементи вищої математики для інженерів), то з цієї книги краще не починати. Математичних термінів там не так і багато, але сам підхід передбачає таке мислення. А ось після попередньої книги чому б і ні. Вона дасть орієнтир. Перший розділ місцями — узагальнення знань з Java та визначення деяких структур даних. Його краще читати вибірково, а ось другий і третій розділ не завадить вивчити досить докладно. Інші — також сповнені цікавої та ґрунтовної інформації про графи та рядки. Я б сказав, такі речі ДУЖЕ допомагають у формуванні програмістського мислення. Щодо викладу: відчувається, що автор — викладач, але звик працювати з людьми більшою мірою зацікавленими та підготовленими. Тож наберіться терпіння і читайте. А також вирішуйте завдання, їх тут вистачає. До речі, на Coursera ви можете знайти курс з алгоритмів, створений авторами книги.

Знай свій фреймворк

І насамкінець ще одна книга. І знову – корисна.

Spring у дії (Крейг Воллс)

Оригінальна назва: Spring in Action by Craig Walls, Ryan Breidenbach Топ-10 книг з програмування для початківців - 11Дуже відома книга з не менш відомою обкладинкою з “мужиком у спідниці”, який насправді не у спідниці. Відверто кажучи, вивчення Spring по одній тільки книзі — дуже непросте завдання, навіть якщо намагатися відразу все пробувати на практиці. До речі, зрозуміти, як це зробити, після прочитання того чи іншого розділу буває вкрай непросто. Я працював з цією книгою, коли потрапив на стажування в компанію, і ось при такому використанні вона дуже допомагає. Ба-більше, я навіть сьогодні, працюючи програмістом, постійно до неї повертаюся. Коротше кажучи, отримати загальне уявлення про головний джавовий фреймворк з її допомогою можна.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ