Освіта та IT: інтерни в CQG
Продовжуємо розмову про програми навчання від українських девелоперських компаній. Цього разу у фокусі - компанія CQG, вже досить цікава тим, що на відміну від більшості софтверних гігантів, які практикують активну підготовку молодого поколінням (таких як GlobalLogic, Luxoft, EPAM і т. д.) є продуктової, при цьому займається розробкою дуже вузькоспеціалізованих рішень.
Та й модель навчання у CQG трохи незвичайна, «двоступенева». Крім відкритих курсів навчання, на яких студенти можуть отримати необхідні знання та вміння, у компанії є так звана програма інтернатури, internship - хлопцям, які відзначилися в процесі навчання, пропонується позиція розробника. З невеликими «обмеженнями» - у інтернів гнучкий графік і 50%-ная аллокація робочого часу.
Таким чином, інтернатура у компанії дозволяє студентам старших курсів без відчутних зусиль поєднувати навчання і роботу (при цьому справжню, профільну і добре оплачувану). Завдання у новачків простіше, ніж у бувалих розробників, але, тим не менш, це вже досвід розробки реальних комерційних проектів. Про результати трирічної діяльності internship-програми в київському офісі CQG люб'язно погодився розповісти Дмитро Гайворонський, Resource Director компанії.
- Розкажіть трохи про компанію та її діяльність?
- CQG була створена більше 30 років тому в США. Спочатку компанія надавала програмно-апаратні рішення по доставці біржових даних. В даний момент в CQG працюють близько 500 чоловік в 15 офісах по всьому світу, 6 з яких займаються виключно розробкою. Головний офіс розробників знаходиться в Денвері, і приблизно рівнозначні підрозділи розташовані в Москві, Києві, Самарі, Зеленограді та Єревані. Ми не є аутсорсингової компанією в широкому сенсі цього слова - ми продуктова компанія з єдиним продуктом, який ми створили за 30 років і який де-факто є стандартом на біржовому ринку. В принципі більшість рішень, створених нами, за 30 років ставали стандартами. Зокрема, подання біржової інформації, яке CQG придумала ще в 90-х, зараз використовується повсюдно, тому що воно виявилося дуже зручним.
Наші рішення в першу чергу орієнтовані на великі компанії, які зацікавлені у великій швидкості доставки даних, мінімальних тимчасових затримках при доставці і високої надійності. Наші клієнти - це хедж-фонди, деякі банки, у тому числі Citibank of America і JP Morgan, наші конкуренти на певних ринках - Bloomberg і Reuters, а колеги - Dow Jones, з якими у нас було кілька спільних проектів.
Зараз бізнес компанії виглядає наступним чином - у світі є кілька сотень бірж, які за фактом є серверами, інформаційними центрами. Ми підключені до переважної більшості з них, отримуємо потік даних, зберігаємо дані про угоди на наших серверах і в режимі реального часу відправляємо їх далі. Є певний набір систем, які ці дані аналізує, доповнює даними з інших джерел, наприклад, новинами, даними про безробіття і т. п. Клієнт може користуватися або нашим, або стороннім програмним забезпеченням. По суті, наша компанія займається агрегування і продажем інформації, а так само надає засоби для її аналізу.
Надійність в нашому випадку є одним із критичних параметрів - адже суми ордерів, з якими працюють наші клієнти, дуже високі, вони повинні передаватися вчасно і без втрат.
Це визначає специфіку людей, які у нас працюють. Ми не можемо собі дозволити створити продукт і забути про нього, ми не пропонуємо «коробкових» рішень. А створити подібну архітектуру і рішення, що задовольняють таким вимогам досить важко, якщо рівень ваших розробників - середній. Я жодним чином не хочу применшувати достоїнств і вимог інших компаній, що займаються розробкою, але часто виходить так, що люди, які працюють у нас на позиції middle-девелопера, можуть піти в інші компанії lead-або senior-розробниками. Або навпаки, ті люди, які приходять з гордим титулом лід-девелопера, у нас на перевірку виявляються Міддл - хорошими, впевненими програмістами, але не хапають зірок з неба.
Це в принципі проблема ринку, і, що характерно, не тільки в Україні - і в Росії, і в Єревані і в Штатах спостерігається інфляція тайтлов, уявлення про власні знаннях у тих людей, яких ми собеседуем.
- А ідея інтернатури, навчання кадрів виникла давно?
- Свою internship-програму ми почали в 2007 році, ще до першої кризи, в Зеленограді. Мета, яку ставить перед собою компанія, - дати можливість працювати у нас молодим починаючим розробникам. На жаль, на ринках праці України, Росії (не скажу про Єревані, ситуація там схожа, але докладних даних у мене немає) ми бачимо, що якість освіти, не теоретичного, а, скоріше, практичного та рівень знань, якими володіють випускники ВНЗ, нижче вимог компаній. Особливо компаній, вимогливих до девелоперів, як наша.
Тому виходить, що ми намагаємося набрати хлопців, які демонструють хороші здібності на 4-5 курсі, і дати їм ті знання, які вони ніколи б не отримали у ВНЗ, якби обмежувалися тільки інститутської програмою освіти. Тобто ми не сперечаємося, що досить часто у хлопців є хороша математична підготовка, у багатьох випускників бажання і прагнення працювати на висоті, навіть більше ніж у людини, яка вже десять років займається розробкою, але практичних знань і, зокрема, знань про особливості роботи в компанії, команді. В тій чи іншій формі компанія CQG співпрацює зі студентами, ВУЗами по крайней мере в трьох містах (Самара, Зеленоград і Київ), безкоштовно навчаючи студентів, після чого деяким з них робить пропозиції про інтернатуру в компанії CQG.
У Києві ми почали в 2009 році і працюємо за такою схемою - даємо оголошення про початок занять і відбираємо групу з абітурієнтів. Заняття тривають три місяці, ми вчимо студентів чотири дні на тиждень по дві години. Обмежень при відборі практично немає, це може бути студент, це може бути починаючий розробник, це може бути розробник, який працює в іншій компанії і хоче підняти свій рівень. Умови однакові для всіх - ми відбираємо студентів з достатніми знаннями С + + чи C #, комп'ютерних технологій, і викладаємо їм курси Advanced C + +, Advanced Databases, Software Development Processes, розповідаємо про фінансові ринки і біржових технологіях. Це не рахуючи дрібних одиничних лекцій. Через два місяці такого навчання ми пропонуємо їм зробити курсовий проект, який, швидше за все, буде відрізнятися від усього, з чим вони працювали у своєму житті до цього моменту. Тому що це робота - колективна.
За три роки ми вже переконалися в тому, що навіть самі обдаровані студенти, які вже пишуть код, захоплюються технологіями, не мають ніякого досвіду колективної роботи.
Максимум, що було у хлопців - лабораторні роботи або невеликі самостійні проекти. У більшості випадків люди можуть добре володіти IT-технологіями, розбиратися в С + +, знають, як виглядає стек функції при виклику, але при цьому абсолютно не уявляють чим є розробка в компанії. І це саме те, чого ми збираємося їх навчити на нашому модельному проекті.
Ми бачимо, що з року в рік інтерес до програми зростає. У перший рік ми відібрали групу в 10 студентів з, приблизно, 20 претендентів, в другому, 2010, була група з 12 осіб на 40 шукачів, цього року був справжній бум. Для того, щоб потрапити в число претендентів, необхідно було зайти до нас на сайт, вибрати одну з чотирьох запропонованих завдань, вирішити її на мові програмування та надіслати нам. Ми інспектуємо код рішення, приблизно так само, як кожна компанія інспектує код тестових завдань, просто пред'являючи не такі високі вимоги, і запрошуємо студентів на співбесіду в офіс. Тих, людей, які впоралися із завданням (що зазвичай складає досить малий відсоток з активних студентів) цього року було близько 100 чоловік! З них на співбесіді було близько 50 або 70, точно не пам'ятаю, і ми постаралися піти назустріч і збільшили групу до 15 осіб. Хоча це вже ліміт комфортного викладання, тому що це відбувається в робочий час, в робочій обстановці і ми не можемо забрати багато ресурсів у наших проектів.
- І яка ефективність подібної програми навчання, якщо оцінювати професійні навички випускників?
- Досвід показує, що інтерес для великої компанії після закінчення освітньої програми серед цих хлопців цілком можуть представляти 50-60%. Тобто це люди, які можуть прийти в компанію на позицію джуніор-розробника.
Це, зрозуміло, дуже сильно залежить від того, які вимоги у компанії до проектів. Якщо, приміром, це щось досить нескладна в технічному плані: веб-сервіси, клієнтські програми, то цей відсоток може доходити і до 80.
Ми не плануємо певного числа вакансій в інтернатурі, у нас немає конкурсу, але практика показує, що приблизно один з 4-5 студентів, які пройшли у нас навчання залишається у нас же і працювати. Спочатку інтерном, потім, коли закінчує навчання в інституті - на повний робочий день.
- Які цікаві моменти в підготовці майбутніх фахівців вам хотілося б відзначити?
- Наприклад, те, що для студентів ця програма - перші кроки в командній роботі. Одна справа написати продукт, коли ти контролюєш цілком вимоги, процес розробки, кінцевий результат і дизайн. Як в лабораторній роботі, або невеликому додатку під Android або iOS. Зовсім інша справа, коли ви працюєте в групі з кількох людей, і вам потрібно виробити загальні вимоги, дизайн системи, можливо, інтерфейс, по якому ваша система буде спілкуватися з іншими.
У минулих 2009-2010 роках фінальний проект виглядав наступним чином: на реалізацію давався місяць (16 занятій/48 годин). Група з 12 осіб розбивалася на команди по 3-4 людини, перед усіма була поставлена ??однакова завдання - написати пошуковик по локальній файловій системі (аналог Google search, Copernic і т. п.). При цьому наші співробітники і я в тому числі виступали з одного боку в ролі бізнес-експертів, які ставлять завдання, а з іншого - в ролі відповідають на питання «військових радників», за термінологією наших занять. Ми ставили завдання, брали у них вимоги, радили, як ці вимоги допрацювати до повноти, коректності і т. д. Але при цьому ми не брали участі у розробці дизайну, хоча могли допомогти порадою.
В кінці ми влаштовуємо демо, поєднане із змаганням. Усі команди демонструють продукт, який вони хотіли розробити, кожна команда їм дуже пишається. До того ж ми завжди намагалися створити атмосферу конкуренції між командами. Тобто якщо це пошуковик, то ми видаємо призи за найшвидшу індексацію, за самий коректний пошук.
Попередньо, всі завдання, які ми даємо на лабораторних роботах, на курсовому проекті, ми самі тут реалізовували. Тобто ми не довіряємо собі як програмістам, ми вирішуємо, що можемо недооцінити складність завдання, тому намагаємося всі завдання зробити тут, зрозуміти, наскільки вони здійсненні, які проблеми можуть виникнути, скільки часу може зайняти розробка.
Із цікавих цифр: зразкове співвідношення по продуктивності між програмістом з 8-10 роками стажу розробки і тямущим енергійним студентом, який тільки починає - приблизно 4:1.
Це повторюється не перший рік, і перевірялося не на одну задачу. Всі завдання, які ми пропонуємо студентам, ми писали самостійно з нуля. У середньому ту задачу, реалізація якої у нас займає 20-30 хвилин, студенти зможуть вирішити за півтора-дві години, і не факт, що рішення буде працювати. Тому якщо нам вдалося зробити працюючу систему за тиждень вечорами, то хлопцям гарантовано буде потрібно місяць.
Цього року ми трохи ускладнили підхід. Попередньо ми ввели в курс кілька лекцій по реалізації графіки у додатках і роботі з мережею. Завдання було сформульоване таким чином - хлопцям пропонувалося написати гру Galcon . Але при цьому група була розбита на чотири команди, три з яких займався окремо розробкою власного клієнтського застосування, а четверта працювала над серверною частиною. Це виявилося дуже серйозним випробуванням, тому що з'ясувалося, що від успіху «серверної» команди залежить успіх всіх інших. Процес був дуже цікавий: частина «клієнтських» команд реалізувала емулятор сервера, для того, щоб тестувати свої програми, хтось передбачив можливість локальної гри, без емулятора. Сказати чесно, ми були відверто здивовані, тому що всі чотири команди впоралися, практично без глюків і дефектів, на заліку відмінно порубати в skirmish.
Процес розробки повністю збігався з процесом розробки серйозного проекту. Хлопці самі задавали функціональні вимоги - до протоколу, продуктивності, допустимого часу затримок і т. д. Вони писали код на С + + з використанням мережевого шару, графічного шару, при цьому весь код лежав на GitHub, тому можна було подивитися, що і як реалізовано у конкурентів.
Один з найцікавіших моментів - соціальні відносини в колективі. За час навчання групи досить щільно «притираються», але раптово виявляється, що «всі звірі рівні, але деякі рівніші». Всі розумні, але якщо хтось не прийме на себе відповідальності за рішення про те, як виглядає протокол, узгодження якихось міжсистемних вимог, то команда, виявляється, нікуди не може рушити. Нам було дуже цікаво спостерігати, як це відбувається в колективі, напевно, студенти отримали не менше задоволення. Кілька людей взяли на себе відповідальність за вироблення протоколу, винесення його на загальний суд - вони не побоялися взяти на себе той шматок роботи, від якого залежали всі інші. Думаю, що ці люди далеко підуть, як у нас в компанії, так і в інших.
Після того, як освітня програма закінчується, ми збираємо фідбек. На їх підставі ми розробляємо програму на наступний рік. Ось, наприклад, зараз ми плануємо приділяти в майбутньому менше уваги баз даних і зробити більше практичних занять по мережах. Не буду відкривати всі карти, але можливо ми додамо більше мов програмування, найвірогідніше це буде C # (на додачу до С + +).
- А що, власне, компанія отримує в результаті проведення подібних заходів? Ви задоволені результатами, мають намір продовжувати програми навчання?
- Треба розуміти, що ми, перш за все, комерційна компанія, завдання якої - створення продукту, і програма internship для нас містить три мети. По-перше, це навчання і пошук нових співробітників. По-друге, (і це найцікавіше) - це фан всередині компанії. Бо дуже цікаво раптово переключитися з режиму «крутий розробник» в режим «викладач», і раптом виявити, що ти чогось не знаєш. Або про щось встиг забути. Команда наших викладачів трошки мінялася з року в рік, але в цілому близько 25% співробітників так чи інакше задіяні в нашій програмі: вони викладають програмування, дебаггінг, бази даних, процеси розробки. При цьому дуже багато уваги приділяється саме «бойового» досвіду використання технологій - те, що ви не знайдете ні в одній книзі.
Дуже радісно бачити, що ми не помилилися з кандидатами в студенти і з нашим підходом в принципі. Наші вчорашні випускники та сьогоднішні інтерни викладають майбутнім інтернам.Цього року ми зробили з цього невелике шоу - знімали фотографії і робили відеоролики про процес роботи над проектами , брали інтерв'ю у «військових радників», викладали «бойові листки» про те, як все рухається і т. п.
Чи будемо ми продовжувати - так, звичайно, будемо, не думаю, що підхід компанії зміниться в найближчі кілька років. Нам подобається розповідати про це, подобається знаходити людей, у яких горять очі і ми добре знаємо, що нестача знань компенсується бажанням створювати щось. Люди, які приходять до нас сповненими ентузіазму, буквально через півроку можуть показати те, чого від себе зовсім не очікували.
- В інших містах модель роботи така ж, як у Києві?
Не зовсім, багато чого залежить від місцевої специфіки. Наприклад, Зеленоград знаходиться недалеко від Москви, там розташований Московський інститут електронної техніки, МІЕТ.
Опубліковано: 26/10/11 @ 09:43
Розділ Різне
Рекомендуємо:
Кращі движки сайтів для створення соціальної мережі
Как найти партнера
3 листопада, Херсон - Осіння зустріч IT Talk Kherson
29-й випуск подкасту «Відверто про IT кар'єризм». Бесіда з Надією Плахова, PR-спеціалістом Promodo
GTUG's Day в Google Russia