Як С++ допомогла мені на шляху до позиції Architect

Привіт! Моє ім’я Андріан, в ІТ-сфері я вже близько 15 років. За цей час я дійшов до позиції Business Solution Architect та навчився дивитися на проєкти з трьох сторін: розробника, замовника та користувача. Розуміти кожного мені допомогла мова С++ — вона навчила мене гнучкого мислення, розкрила творчий потенціал та дала можливість поєднувати електроніку та програми. Крім цього, виховала відповідальність, адже у С++ можна майже покроково контролювати виконання програми, тому за правильну роботу розробки відповідаєш лише ти. Так я більш впевнений у кінцевому результаті. Ці навички та досвід допомогли мені на шляху до позиції Architect: як саме С++ сприяла моєму розвитку в ІТ, чому вона необхідна у складних проєктах і про власний досвід з С++, поділюся у статті.

Ілюстрація Аліни Самолюк

Три місяці щастя

Коли я вчився в школі, то в освітню програму входив ще старий-добрий Borland Pascal. Він мені дуже не подобався — хотілось чогось простішого, де можна легко і коротко все записати. Особливо бісили begin/end. У процесі пошуку варіантів я почав досліджувати різні мови й саме тоді відкрив для себе «С». Досі пам’ятаю свої перші спроби написати Hello World і те відчуття, ніби в голові засвітилася червона лампочка й ти хочеш розібратися ще глибше. Я захопився і почав шукати додаткову практичну інформацію, але це було важко. Коли починав займатися програмуванням, то не мав ні інтернету, ні наставників — лише книжка, яку випросив у подарунок на 15 років. Досі не знаю, як мені її дістали батьки. Проте вже за три місяці я настільки опанував основи, що почав поєднувати програми з власними електронними пристроями та побудував першу автоматизацію будинку та розумний будильник.

Практичний досвід з С++: де знадобилась і як допомогла

Зараз я займаюсь embedded-пристроями, що дозволяють зберегти здоров’я людини. Тут необхідно точно розуміти, що і коли відбувається на низькому рівні. Ціна помилки дуже висока, адже від коректної роботи пристрою залежить здоров’я людини.

Знання С++ розвинуло в мені також суміжні навички — ризик-менеджмент, швидке перемикання між рівнями абстракції компонентів, принципи спрощення оптимізації та автоматизації. Зараз це дуже допомагає, особливо при спілкуванні з клієнтами та формуванні їхнього бачення реалізації проєктів. Оскільки «плюси» — це мова середнього рівня, то її зручно використовувати в embedded-проєктах — від інтерфейсів із «залізом» до написання користувацьких інтерфейсів.

Щоби досягати цілей проєкту, необхідне тестування, й один з моїх улюблених методів розробки, який значно економить час, — Test Driven Development. Його сутність в тому, що спочатку пишуться інтерфейси компонентів, потім етап-тести, а потім формується бізнес-логіка. Ми також маємо спеціалізовані тест-системи, які емулюють тіло людини та розділяють сигнали від кількох процесорів. Ми постійно контролюємо процеси в різних точках схеми, а коли потрібно — знімаємо сигнали та дивимось, чи все пішло як треба. І оскільки будь-яка зміна стрічки коду повинна пройти жорсткий код-рев’ю, нам треба організувати можливість покращення системи, уникаючи помилок, та передбачити наслідки.

На поточному проєкті наша команда передбачила 4 рівні сигналізації. У випадку повної відмови системи залишиться червоний світлодіод й сигналізуватиме про несправність пристрою. Ми гарантуємо безпеку — будь-яка зміна коду залишала алгоритм стабільним і безпечним для кінцевого користувача.

Зі свого досвіду в ІТ я переконаний: щоб організувати роботу з електронікою на низьких рівнях зі збереженням швидкості та зручності розробки, треба знати мову С та С++ — це спрощує життя. Через те, що процесор розуміє машинний код, мова вищого рівня ховає в собі більше внутрішнього функціонала (Memory Management, Garbage Collector, Resource Allocation). Надлишкові операції збільшують енергоспоживання процесора, а при живленні від батарейок це мегаважливо. Інший аспект — обмежений розмір пам’яті. Якщо ваш лептоп має 16GB, то в embedded-пристроях зазвичай від 32KB до 64MB. І оскільки більшість з них використовується для зберігання даних, то тут мова С/С++ оптимальна.

Плюси мови програмування важливіші за недоліки

Я за використання інструментів за призначенням, і це стосується й програмування. Кожна мова має свої переваги й недоліки, бо проєкт має задачі й свої обмеження. І це не означає, що якщо для досягнення бізнес-цілей проєкту використовують С++, то тестувати теж треба на «плюсах». Знання переваг різних мов дозволяє комбінувати їх в єдину систему та досягати економічно вигідних результатів у найкоротші терміни.

Те, що я почав свій шлях в IT саме з середньої за складністю мови С++, дало мені можливість розуміти систему на різних рівнях абстракції. Для архітекторів я розмовляю мовою компонентів, для техлідів — оперую алгоритмами, а з клієнтами спілкуюсь цінностями та перевагами продукту з огляду на час реалізації проєкту.

Розбираючись в перевагах С++, уявімо автомобіль і кермування ним. Якщо прирівняти мову програмування до коробки передач в машині, то С++ — це механічна коробка передач, створена вами. Ви знаєте, що там відбувається, яке перевантаження їй дати, коли вона буде використовувати це перевантаження тощо. Отже, вона для вас прозора. Тому для мене сильною стороною С++ є отримання рівно того, що написав. Оскільки наші розробки виконують послідовність дій й інколи виникають задачі, де треба зробити щось відмінне від алгоритмів у високорівневих мовах, то «плюси» — це ідеальний варіант.

Без широкого погляду на технології в проєкті успіху не досягти

На проєкті саме архітектор — це та людина, що володіє інформацією про кожну стадію розробки, несе відповідальність за кінцевий результат і має переконатись у відповідності кожного компоненту вимогам до системи в цілому. Архітектор як координатор працює на ширшому рівні, складає компоненти в систему, будує зв’язки. І оскільки саме він створює концепцію, поєднуючи її з іншими системами, то має орієнтуватись в технологіях, необхідних ресурсах, об’ємі та послідовності виконання робіт, їхній вартості та наявних в нього людях. Тобто має знати все й переважно володіти саме технологіями, а не мовами програмування. Також йому треба розуміти, які актуальні рішення вже є в схожих проєктах у цій галузі, і як створити повністю щось нове. Звичайно, що проєкт можна розробити й без архітектора, проте коли треба масштабуватись — без нього не обійтись.

Я почав структурованіше мислити в буденному житті

Володіння не найпростішою мовою програмування С++ покращило моє повсякденне життя. Я почав логічніше мислити в буденних справах — будь-яку проєктовану мною задачу я тепер розглядаю технічно: як її записати мовою програмування, як її автоматизувати, як розподілити на компоненти, перевикористати й так далі. Тому, що нижчою мовою ви пишете, то більше розвивається логічне мислення. Згодом воно закріплюється, і ви адаптуєте цю особливість під себе. Що більше дій виконуєте, то більше думаєте, як автоматизувати й прискорити процес. І, звісно, багато залежить від самої людини, але мій шлях був саме такий.

Як легко і швидко вивчити С++ — лайфхак і поради для цілеспрямованих

Неможливо ідеально вивчити мову, адже кожен рік-два вона вдосконалюється і додається щось нове. Тому вчитись треба все життя, це life-long learning. Зараз, щоб освоїти будь-яку мову програмування, я виділяю день: спочатку шукаю частини бізнес-задач відповідною мовою, потім їх адаптую та комбіную під свої потреби. Так я теорію закріплюю практикою, бо тут головне саме практика застосування!

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

Як бути фахівцем

Якщо ви контролюєте, що відбувається на низькому рівні, вам легко уявити, що коїться на верхньому. Якщо ви зможете записати алгоритм чи процес на «плюсах», значить маєте уявлення про компоненти системи та їхню взаємодію, легко перемикаєтесь між рівнями абстракції, тож завжди можете стати архітектором. Питання лише у вашому бажанні та зацікавленості у цьому шляху. Класний інженер — це людина, яка тримає руку на пульсі усіх етапів розробки та відповідає за ідеальне функціонування кінцевого продукту. Це професія з великим майбутнім, де конкуренція тільки зароджується.

👍НравитсяПонравилось5
В избранноеВ избранном1
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Автор, ви знайшли мову під свій стиль мислення. Це не С++ вас навчив, допоміг і тд. Це ваш хід думок, особливість пам’яті, стиль роботи просто комфортні з плюсами. Часто зустрічала людей, які не можуть писати на високорівневих мовах, бо весь час лізуть у глиб зрозуміти що і як. І вирачають купу часу на щось банальне.
Такі люди і в буденному житті так мислять, і часто це інтроверти -флегматики, може навіть трошки з РАС.
Це нормально, це ваш розум допоміг вам стати архітектом, а не плюси.
Тому з личкою вітаємо, але стаття мало кому допоможе.

Це мотиваційна стаття для тих хто стає на свій шлях.
Личка моя вже 4 роки. Дякую за вітання.

Я не знаток c++, но у меня от него стойкое впечатление, что это прекрасный язык, но если можно на нем не писать — лучше на нем не писать)

Особенно если ты узнаешь впечатление от его прекраснейших «оптимизаций», которые по сути переписывают твой код — да так что он тупо перестаёт работать.

будь-яку проєктовану мною задачу я тепер розглядаю технічно: як її записати мовою програмування, як її автоматизувати, як розподілити на компоненти, перевикористати й так далі.

А на дотнетах и джавах мы не думаем, просто фигачим. Как плюсы помогут синьор веб деву стать архитектором?:)

Як С++ допомогла мені на шляху до позиції Architect

Уважно перечитав всю саттю тому що само отого от мені зробити і не вдалось.

Чому мені С++ в тому не допоміг? Я думаю тому що на С++ мало великих проектів такого рівня де потрібен саме підхід архітектора а не фахівця в якійсь конкретній технології. Тому і попит на архітектів зі знанням плюсів прямує до нуля.

Враження від статі як від студентського реферату, якійсь набір банальностей і я б навіть сказав хибних висновків. На ГЛ змушують писати твори на вільну тему для реклами компанії чи що?

Чому мені С++ в тому не допоміг?

youtu.be/qkYc7e7cyVc

Подписаться на комментарии