Мова мов! Такий «скромний» титул носить гроза всіх першокурсників ХНУРЕ — великий та могутній С++. У цій статті ми з вами поговоримо зі студентом нашого університету, щоб дізнатися, як це стати C++ Software Developer.
— Розкажи трохи про себе. чим займаєшся і коли прийшов у професійну розробку?
— Професійно розробкою я почав займатися на 3 курсі. До цього була участь в олімпіадах і, звичайно, в написанні лаб. Зараз я розробник мовами С/C++ і створюю ПЗ для embedded систем.
— Який був твій шлях вивчення плюсів? Що читав, що проходив?
— Для початку розповім, що з С++ читав я і наскільки це було корисно.
- «САМОВЧИТЕЛЬ С++ З ПРИКЛАДАМИ І ЗАВДАННЯМИ»
Почалося все із цієї книги. Спочатку вона зачепила тим, що на відміну від інших книг із 1100+ сторінками, у ній було лише 400+. Виявилося, що недарма. Книжка дала СУПЕР поверхневу інформацію.
Тому перша моя порада тим, хто збирається серйозно вивчати плюси — «Не треба йти на поводу у лінощів». З плюсами не схитруєш. Треба читати всі 1100 сторінок.
- «ПРОГРАМУВАННЯ. ПРИНЦИПИ ТА ПРАКТИКА ВИКОРИСТАННЯ C++», Б'ярн Страуструп
Це була така книга, що далась не одразу. Чесно кажучи, на 2 курсі я виявився для неї занадто дурним, як дивно це не звучало. З неї краще точно не починати, але варто повернутись, коли будеш уже з плюсами «на ти». Краще, напевно, натомість стартувати з «Базового курсу С++».
- «МОВА ПРОГРАМУВАННЯ СІ», Денніса Рітчі.
А ось цю книгу я можу назвати прямо необхідною. У деяких тут може виникнути резонне питання: «А до чого тут Сі, якщо ми хочемо вивчити С++?» Пояснюю: багато розробників С++ активно використовують фічі мови Сі. Так що навіть якщо ви вже дали собі установку, що ви кепський плюсіст, Сі – все одно мастхев!
- «КОМП'ЮТЕРНІ СИСТЕМИ АРХІТЕКТУРА І ПРОГРАМУВАННЯ» та GOF (Приклади об'єктноорієнтованого проєктування. Паттерни проєктування).
Ще ці дві книги, які не так сильно мають відношення до плюсів, але прочитати їх потрібно точно, щоб у коді не діялось ПЕКЛО!
Вона, до речі, є у бібліотеці ХНУРЕ, тож буде дуже приємно почитати друкований варіант.
— А що щодо курсів? Чи є сенс проходити їх, чи варто вкладати час тільки в книги?
— Оооо, є один дійсно топовий курс з плюсів, сертифікат від якого не соромно потім вказати на LinkedIn.
HTTPS://STEPIK.ORG/COURSE/7
HTTPS://STEPIK.ORG/COURSE/3206
У курсу 2 частини, і ось у другій розповідають як плюси працюють під капотом, а це супер важливо. Тож однозначно рекомендую. І не забудьте паралельно на CODEWARS навідуватися хоча б кілька разів на день.
- Які бар'єри можуть виникнути щодо плюсів? Що саме заважало тобі?
— Для мене серйозним бар'єром був GUI (Graphical User Interface). Думаю, так у багатьох початківців «плюсістів». Мені він здавався якимсь страшним звіром. Але насправді тут все набагато простіше, ніж здається. Важливо просто зрозуміти, що тобі все дає твоя ОС, нічого самому пиляти не треба. Просто береш і викликаєш функції, а якщо ще простіше — використовуєш, наприклад, фреймворк QT. Ще проблема була: от начебто знаєш МП, а щоб такого написати — не знаєш.
Як виявилось, така проблема дуже поширена. Що з цим робити? Вивчати предметну сферу. Простий приклад: якщо хочеш написати компілятор, то й читай книги про розробку компіляторів, а не далі заглиблюйся в пристрій мови, сподіваючись, що дивом знайдете знання створення компіляторів.
— Як відбуваються співбесіди у плюсістів? У чому особливості? Чи є теми, на яких валять?
- Пам'ятаю, одна співбесіда у мене була суто за книгою «ЕФЕКТИВНИЙ ТА СУЧАСНИЙ С++» від Мейерса.
- Цікавою була співбесіда в GameLoft. Спочатку був тест із відкритими питаннями з різних тонкощів: робота з темплейтами, робота з пам'яттю, витік пам'яті тощо. Ще було кілька завдань, два з них пам'ятаю досі: перевести RGB колір заданий у 32 бітах в 16 біт, і оптимально обчислити чи перетинаються два квадрати, які задані точками.
- В останній компанії, куди я і пройшов, питали про класи STL і як вони працюють. Пам'ятаю, про fstream запитали і його зв'язки з iostream. Також були питання про віртуальне успадкування, віртуальну таблицю, віртуальні функції та що віртуальним бути не може. Т.к. влаштовувався я на embedded, то був тест, де було дано код, який оперує бітами, і треба було розписати, що і як робиться в ньому. На щастя, на одному з предметів в університеті я непогано навчився з таким завданнями справлятися.
- Не знаю як щодо тих тем, на яких прям конкретно валять, але дуже проблемне питання про undefined behavior, так що варто бути готовим.
Лише небагато людей, пробираючись крізь дрімучий ліс покажчиків та глибини STL, затримуються, щоб одного разу вирішити для себе, що їхня дорога в IT лежить саме через плюси.
На цьому варто подякувати нашому співрозмовнику за цінні поради та історію свого становлення «плюсістом». Сподіваємося, що ця стаття допоможе і вам, студентам ХНУРЕ, підготуватися до свого власного шляху до C++ Software Developer, і почати його якомога успішніше!
Каріна Темчур