Який мінімум треба для стажера 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 і подавайся на усі підряд вакансії, а там самі розберуться.

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

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

карти Таро рулять
www.youtube.com/watch?v=cSKCjfjN7qo

Я б взагалі вивчаючи С чи плюси подавався би на пхп разраба, і просто накопичував би комерційний досвід. Чого пхп, бо має репутацію мертвої лоховської мови, а отже немає черги з випускників курсів датасаєнсист за 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. Досить проста історія: памʼятаю, що у дитинстві грав з батьком у футбол на папері. А зараз не знайшов нічого пристойного, вчити інших таке, тому треба створити собі партнера та грати. Невже зараз важко придумати що робити? Тут не вистачає часу на всі проєкти...

res.cloudinary.com/...​/ftyto2htjzhshjjuwmir.png

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