Який мінімум треба для стажера C/C++, щоб отримати позицію trainee?

💡 Усі статті, обговорення, новини для початківців — в одному місці. Приєднуйтесь до Junior спільноти!

Добрий день всім.

Зіткнувся з проблемою яку не знаю чим вирішити. Почну с того що я хотів би знайти комерційний досвід у сферах де використовуються C і C++, тому і вчив саме їх. В результаті я (як для стажера) знаю ці мови достатньо (менеджмент пам’яті, файли I/O, STL, OOP, шаблони, кастомні структури данних по типу зв’язних списків і стеків, ну і алгоритми самі базові по типу бінарного пошуку та швидкого сортування). Також я вчив допоміжні інструменти(makefile, lldb, clang, etc) тому що хто такого візьме. Також для резюме я зробив 2 міні проекта, звісно не яскравих, але без проектів було б ще гірше, зробив я кастомні версії класів Vector і List(одно зв’язного), та гру tic tac toe з консольним інтерфейсом.

То що я хотів спитати. Чи цього мало, чи ні? Якщо мало, то що потрібно зробити щоб зацікавити HR?

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному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

1. Знайти вакансії/компанії де візьмуть трейні
2. Написати їм що володієш добре цим і цим і може на ізі вивчити що треба під їхню специфіку(так як ти на трейні то може і пошарять)
3. Підучуєш, Намагаєшся попасти на співбесіду і там себе показати

Якось так я це бачу, я думаю пункт 3 без проблем для тебе а ось з першим хз як.

Приблизно все з цього списку: dou.ua/...​rums/topic/52553/#2936686

Зараз C++ в основному використовують для перформанс-крітікал задач (трейдінг, геймінг, аі, нетворкінг), але від трейні не мали б очікувати доменних знань (ну і для трейні нема великої можливості обирати домен), тому я б краще зосередився на багатопоточності, управлінні пам’яттю, алгоритмах та дизайн паттернах (по-простому computer science). В мене як С++ програміста були періоди, де я займався чим завгодно, крім написання С++ коду.

Забудь поки про допоміжні інструменти, зосередся на IDE, git та опціонально cmake. Міні-проекти скоріш за все ніхто не буде дивитись (в людей просто нема часу і бажання переглядати гівно/ШІ-згенерований/роздутий код). Хрестики-нулики це щось на рівні лабораторної роботи другого курсу. Але це всеодно краще, ніж нічого. В таких міні-проектах я б десь окремо вказував і зосереджувався на бест практісах, які були використані (наприклад, застосував producer-consumer паттерн для обробки даних).

Взагалі, розробка на С++ доволі повільна через відсутність єдиного пекедж менеджера та свистоперділок, які є в інших мовах, які поступово наздоганяють С++ по продуктивності (або оверхед мови перестає бути важливим), а для багатьох С++ біблотек написані біндінги. Через це на попередніх проектах ми намагались (де можливо) переходити з С++ на C#/Python

Ладно, додам і я пару слів, крім обсиралова...
Є 2 параллельні напрямки -
1.
C++ з отими всіма новими стандартами, шаблонами та варіадік шаблонами, стл, ооп і іншими модними штуками.
2.
Є С, що для мікроконтролерів, ядра ОС, там ще архітектуру заліза та ассемблер треба знати.

Так от, рекомендую вибрати один з 2х напрямів і продовжувати в ньому.
Бо якщо почнєш «лямку тягнути» в обох, то ти або геній, або в тебе кукуха скоро зїдє.

Кукуха не поїде, але буде більший вибір, але не бачу змісту іти в низькорівневу розробку, за винятком, що топікстартера пре від цього

Поїде, поїде...
Бо це зовсім різні напрями і в голові і в соур коді, потім буде така каша, що ховайся.

в ембедед поїде швидше: паяти, читати/складити схеми, FPGA/DSP, не кажучи про CS, і це, «за миску рису»

Ну в С++, як за «2 миски рису».
Реально зп як якимось цсс-фронтенд формошлепо верстальщікам.

Єдине виключення — то HFT напрям, там реально офігенні зп та гроші, но і впихнутись туди важше.

тільки знати на порядки менше, Е це — ефективіність

Тю. Питоновскую строчку никогда с С-код не совал? Питон не комментировал двумя слэшами?

Доречі декілька разів помічав що ті хто прийшов у програмування зі сторони заліза — доволі комфортно вирішують значну частину своїх задач з пайтоном, а в сторону сі дивляться (чи звертаються до когось) тільки у крайньому випадку.

ті хто прийшов у програмування зі сторони заліза — доволі комфортно

«писати на будь-якій мові, як на Fortran» ©(тм)

нерелевантно, не зустрічав сучасних «від-заліза» які знайомі з фортраном, хоча і несучасних також таких не пам’ятаю

це мем, не слід сприймати буквально, радше в іронічно — саркастичному контексті

на фортрані софт писав (дуже давно), а мем то і не помітив.. отжеж, так і запишемо — в усьому сучасний пайтон винен

unixforum.org/viewtopic.php?t=8

В Московії москалі
Пишуть всі на паскалі.
На Вкраїні ж ми усі
Пишем як один на Сі!

продовжуйте спостереження, мемів недостатньо, релевантність в очікуванні

в ембедед поїде швидше: паяти, читати/складити схеми,

По MQTT через LoRaWAN сбрасывать на Prometheus в AWS-овском облаке.

Я колись писав, на одному проекті код на C++CLI.
Так от, коли в тебе 2,3 таски на день, де, в одній треба менєджєт .Net код в інший спп анменейжет рантайм, то під кінець дня все починаєш плутати що де і до чого.
А от мозок він так і працює, ьо в іншому варіку починаєтся біполярочка.

коли в тебе 2,3 таски на день

ССЗБ

C++ з отими всіма новими стандартами, шаблонами та варіадік шаблонами, стл, ооп і іншими модними штуками.

И податься в Intellias и еще пару контор, которые этим обмазываются.
Тут очень по делу был упомянут Qt, вполне жизнеспособная вселенная без выедания мозга.

Є С, що для мікроконтролерів, ядра ОС, там ще архітектуру заліза та ассемблер
треба знати.

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

Можу дати раду по розвитку:
1. Як вже казали раніше — вивчи хоча б базу git — на сьогодні це must have для всіх напрямків.

2. Якщо поглядаєш на embedded, треба попрактикуватися із реальним залізом:
2.1. Візьми мікроконтролер, підійде майже будь-який (e.g. я починав з STM32), і починай писати під нього програми поступово ускладнюючи собі задачі.
2.2. Ознайомся* з базовою периферією обраного МК, там UART, I2C, SPI, таймери, DMA, щось іще.
*Ознайомся означає напиши хоча б простенький проектик рівня університетської лаби на частину цієї периферії.
2.3. Ознайомся* з RTOS. Можеш обрати будь-яку.
2.4. Напиши пет-проект із цим МК. Це має бути щось більш-менш складне. Приклади бачив в інших коментарях.
2.5. Багато кому важливо, аби embedded-програмер хоч трохи розумівся на схемотехніці.
2.6. Програмування під МК має певну свою специфіку:
2.6.1. Часто (не завжди) є сильні обмеження на динамічне виділення пам’яті, аж до повної заборони, або використання для цього специфічних ліб замість звичного malloc+free з stdlib.
2.6.2. Переривання (interrupt) мають значення.
2.6.3. Особливості багатопотоковості: дарована RTOS ілюзія паралельного виконання дуже крихка, тим часом DMA є реальним другим мастером на шині даних, а процес у сусідній мікросхемі як ніщо прикрасить досвід покрокового виконання програми.

3. Якщо не до смаку мікроконтролери, але embedded все ж хочеться, є опція мікропроцесори.
3.1. Розберись, чим вони відрізняються від мікроконтролерів.
3.2. Попрактикуйся із реальним залізом.
3.3. Багато не підкажу, бо підходи тут і з МК багато в чому відрізняються, просто знайди в мережі туторіал як з ними працювати, але основа та сама — він має певні можливості по взаємодії із зовнішнім світом — з ними варто ознайомитися*. І написати більш-менш складний пет-проект.

4. Навіть якщо відходити від embedded, все зведеться до аналогічних порад. Обери одну-дві затребувані на ринку технології (фреймворк, ліба, etc.), ознайомся* з їхніми можливостями, потім напиши більш-менш складний пет-проект.

2. Якщо поглядаєш на embedded, треба попрактикуватися із реальним залізом:

залізо/мікроконтролери — тупиковий напрям, не оутсорситься, низыкі зарплати

3. Якщо не до смаку мікроконтролери, але embedded все ж хочеться, є опція мікропроцесори.

ті самі яйця, вид збоку

4. Навіть якщо відходити від embedded,

він в профілі має C#/.Net, я так розумію, що інший напрям теж «не їде»

Мікропроцесор це про лінукс і кернел девелопмент, на цьому рівні апі схоже з х86. Ну може ще ртос бути, зазвичай паралельно запущено на іншому ядрі. Підійде навіть raspberry pi. Бо в цілому зараз в реальних задачах використовують те саме арм ядро. Ну а нижче багато чого аплікабельно від мікроконтролерів.

Просто вивчи Qt чи C++ Builder і подавайся на усі підряд вакансії, а там самі розберуться. Тіпа що С, що С++, абсолютно аморфне явище, і хто як хоче так і дроче, в кожній конторі свій набір костилів і практик, як ото з тим одоробалом взаємодіяти.

то що потрібно зробити щоб зацікавити HR

не кажи, що ти діва по гороскопу, і я думаю все буде ок.

Просто вивчи Qt чи C++ Builder і подавайся на усі підряд вакансії, а там самі розберуться.

варіант квадратно-гніздового (Монте-Карло) метода брут-форс рекрутінга

не кажи, що ти діва по гороскопу, і я думаю все буде ок

карти Таро рулять

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

судячи по пхп вакансіям в основному це маленькі контори без грошей. Як для першої роботи може і норм, але потім буде важко свічнутись на інший домен. Взагалі, перші дві роботи сильно впливають на майбутні можливості: ніхто не буде наймати сініор С++ девелопера, який пропрацював на геймдеві, на трейдінг позицію (на ті самі гроші, мало хто захоче дауншифтитись на пару кілобаксів)

це забобони, як і не той розклад по картам Таро, несумісніть по гороскопу і т.п. і т.д.

Щойно натрапив на вакансію спеціально для вас:
💡 Чудова можливість для Junior C/C++ інженерів, яка може стати початком великого професійного шляху у світі big tech!
Ми розглядаємо кандидатів із мінімальним досвідом або студентів останніх курсів, які:
— володіють C/C++, знайомі з Linux і Git;
— цікавляться мережевими технологіями, тестуванням, embedded-системами;
— готові навчатися, досліджувати й зростати поруч із найкращими інженерами галузі.

Лінка на вакансію

Я чув в deftech/miltech напрямках активно шукають технічних спеціалістів і так як там досить багато чого пов’язано з hardware & embedded — то думаю є хороші шанси там знайти роботу. Особливо враховуючи, що досить багато технічних спеціалістів з досвідом у класичних аутсорс/аутстаф/продуктових компаніях — не дуже хочуть туди йти працювати (у deftech/miltech), тому конкуренція там нижча.

По-перше, не варто змішувати С та С++.
За ось таке написання «C/C++» треба всім бити по руках. Це масове невігластво.
Той факт, що якісь дві технології є умовно-сумісними, не повинно бути передумовою для їх комбінування.

По-друге, реально знайти роботу, але це наразі не просто.
Ти маєш добре володіти технологією( C++ ), знати патерни проектування, алгоритми та структури даних. Ідеально, якщо ще й в багатопоточності розбиратимешся.
Дуже добре, якщо в тебе будуть якісь знання в тому домені, де працює компанія. Тобто чи ембедед чи мережі чи геймдев чи фінанси і т.д.
Те, що ти створив пет-проджекти це добре, але те, що ти перелічив це дуже слабенько.
Запитай у чата жпт, які пет-проекти добре зробити джуніру аби прокачати навички.
Оформи це в привабливий гітхаб профіль. Знову ж таки, запитай у чата як це зробити.

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

Ідеальний шлях для студента це позадротити літкод leetcode.com
І потрапити на стажування в один із офісів Фаангів.

ага, інфа 146%

Запропонуй малому кращий сценарій.

ти сам зробив у 2025 р. як пишеш?

Ідеальний шлях для студента це позадротити літкод leetcode.com
І потрапити на стажування в один із офісів Фаангів.

Я свого часу, не зробив цього по тій простій причині, що коли я закінчував універ, ніхто мені не підказав як треба, а я пішов формошльопити на аутсорсера як всі.
Якби якийсь мудрий пан чи пані підказали тоді як краще і як треба, можливо, я б тут зараз не сидів.

Тому наставляю інших.

Якщо натякаєш на те, що неможливо виїхати в 2025, то топікстартер студент і, скоріше за все, молодше 23 і все ще може легально подаватись і виїжджати.

Особисто я це робив у 90-х, коли літкода не було. І по відчуттям, я займався задачами складнішими за leetcode, де розставити 8 ферзів на шахівниці щоб вони не били одне одного, чи порахувати скільки розшташувань буде це складний рівень.

тільки тоді це була нова професія, і людей що хоч трохи розбиралося в цьому було мало, наразі їх штампують мільонами, карго культ, рішення в одних умовах переносити механічно в інші

Особисто для мене це була не професія, це була розвага. Яка дозволила прокачати скіли, які виявилися дуже потрібними потім.

В 90і, думаю, за грошима в програмування, мало хто йшов, скоріше за все «за покликанням»

Сначала за интересом, потом за свободой. Потом пришли большие деньги и кончились, и свобода, и интерес.

з точки зору стилістики так краще звучить:

Потом пришли большие деньги, и сперва кончились свобода и интерес,

а потом і дєньгі.

Деда, а когда лучше жилось: сейчас или при Сталине? — Ну, дык, ента, при Сталине конечно! — А почему, деда? — Ну так, внучек, при Сталине у меня хер стоял!

Масла таки на всех не хватило.

Я тут подумал и вот что могу сказать:
1. Определись в какую сторону ты хочешь двигаться.
С для микроконтроллеров и С++ для графики соприкасаются наверное процентов на 20.
2. В рамках выбранного направления попробуй сделать средней сложности проект.
— Если речь о микроконтроллерах — возьми три штуки ESP32 и построй на них ZigBee сетку для передачи данных о темпераиуре и влажности.
Передай их на облачко, оттуда на комп.
— Если графике — сделай простенький 3Д движок или приблуду для распознавания каких-то специфических объектов, например чертежа от руки в векторное изображение.
— Финансовое — многие протоколы обмнена финансовыми данными открыты.
Сделай энкодер и парсер. Оптимизируй по скорости. Добавь каналов.
Пусти через реальную сеть, посмотри что получится.

Почему так? Это похоже на реальные инженерные задачи.
Ты познакомишься с понятиями, актуальными технологиями, научишься искать информацию, поймёшь применимость определенных техник итд.
Тебе будет о чем разговаривать с нанимателем.

я мав на увазі здати «кандидатський мінімум», але теж варіант

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

Друже, ти б спочатку поцікавився, кому, на іт ринку, C++ взагалі нахєр треба...
... В 2025 році.

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

проблема в тому, для чого тобі збиратися туди йти, за грошима (там багато не насипають, а вимоги вище даху) чи за покликанням (жити не можеш без С/С++)

Фінтех навряд, там Джава 99%.
Ємбедет то С, С++ там майже немає, або дуже порізаний.

Є високонавантажений високошвидкісний фінтех з мікрозатримками, де як раз C/C++/Rust — найчастіші інструменти.

Те що ви кажете, то HFT називаєтся — я його згадував, там великі гроші, шалена конкуренція та C++.
В усьому іншому фінтехі С++ , +/- нахрен не потрібен.

Но там надо очень хорошо понимать атомики и барьеры, а вся эта нечисть с вариадик шаблонами идёт лесом. По факту HFT-шный С++ это С с параноидальной типизацией и неймспейсами.

Згоден, я рік тому 2 чи 3 інтев,ю по HFT зафейлив.
На одному, правда, до останнього єтапу дійшов.

Кожна друга мілтех вакансія — c/c++ developer

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

та я повірив би тобі на слові, but

Мова для системного програмування (від антивірусів до драйверів), всяке мільтімедіа (звук, відео, 3D, стиснення, рендеринг, обробка в реальному часу), робототехніка (наприклад, Autopilot для керування дронами).

Вільно володіти розмовною англійською. Це найголовніше. Сама перша твоя мова програмування це англійська. Не можеш її освоїти — все, тобі кінець. Як айтішніку.

Як на мене мало, особливо зараз. Нічого такого складного, щоб б вимагало скіли відлагодження, я не побачив. Особливо з урахуванням LLM, які напевно всі ці тестові проєкти відразу намалюють без помилок.

Опиши свое видение.
Вот лично я озадачился. Это раньше можно было соорудить какой-нибудь сервер и это было вау.
А сейчас сервера прямо из библиотечки на Питоне, готовые к употреблению.
А для трейни финтех, 3Д, телеком какой-нибудь это темный лес, это полгода только в терминологии разбираться.

Ну... коли я вчився у школі/інституті, то я писав різні клони ігор, графічний редактор, програму для гри в шашки, свою інтерпретуємо мову, автопобудова блок-схем, думав як формалізувати Бурбакі, ...

Кастомна версія Vector та List виглядає як лабораторна робота, яку ти робив дівчаткам за... неважливо...

Ок, то було 25-30 років тому. Зараз... Ну... наприклад у мене є такий проєкт:
soccer який використовує сішну логіку 3-football-on-paper. Досить проста історія: памʼятаю, що у дитинстві грав з батьком у футбол на папері. А зараз не знайшов нічого пристойного, вчити інших таке, тому треба створити собі партнера та грати. Невже зараз важко придумати що робити? Тут не вистачає часу на всі проєкти...

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