Українські програмісти високо цінуються у світі, вони отримують великі зарплати і мають вдосталь роботи. Тож інтерес до програмування високий. Tech Today поговорив з представниками Sigma Software – однієї з провідних українських ІТ-компаній, яка займається розробкою програмного забезпечення. Технічний директор Дмитро Лапшин та директор з рекрутменту Михайло Антонович, який також є керівником софтверного університету Sigma Software University, розповіли, що необхідно для успішного початку кар’єри програміста.
ОСНОВНІ ВИДИ ПРОГРАМУВАННЯ
Однієї універсальної професії «програміст» не існує, тож передусім варто визначити, що саме буде цікаво створювати. Нижче перераховано основні напрямки в цій професії. Зрозуміло, що перелік не є вичерпним, але дає уявлення про ситуацію на ринку в цілому.
Програмування для web. Чули про Gmail або Dropbox? Створення подібних веб-додатків і є програмуванням для web. Цей напрямок має відгалуження: front-end та back-end. Коли ви відкриваєте той самий Gmail, то бачите тільки одну частину програми – клієнтську. На жаргоні програмістів – front-end. Але основні обчислення здійснюються на сервері. Створення коду для серверної частини це – back-end.
Для back-end програмування використовуються мови:
– C#;
– F#;
– Java;
– JavaScript; – Ruby;
– PHP;
– Python.
Для front-end: JavaScript з надбудовами TypeScript и CoffeeScript.
Програмування автономних enterprise-систем. Це можуть бути системи, які взагалі не мають користувацького інтерфейсу. Наприклад, механізми обробки статистики показу онлайн-реклами.
Тут використовуються мови програмування:
– Java; – C#;
– F#;
– Python.
Big Data та машинне навчання. «Гаряча» тема, яка охоплює створення програмних продуктів для обробки та аналізу петабайтів накопичених даних. Використовують мови:
– Java;
– Scala.
Для систем машинного навчання переважно застосовують Python.
Докладніше про Big Data читайте в матеріалі: «Як Vodafone та інші великі компанії використовують наші дані»
Сегмент, який охоплює рішення для social media, блогів, e-commerce, майже повністю базується на використанні PHP.
Створення програм для персональних комп’ютерів. Потроху втрачає популярність під натиском web. Тут програмісти працюють на
– С++ з бібліотекою QT;
– C# та платформою Microsoft .NET.
Що цікаво, останнім часом десктопні програми почали створювати за допомогою web-технологій, застосовуючи інструменти, подібні до Node-WebKit. Наприклад, саме так створено клієнта для дуже популярного месенджера Slack.
Розробка комп’ютерних ігор. У цій сфері використовуються переважно С++, для створення казуальних або не дуже вибагливих 3D-ігор також популярна платформа Unity, яка дозволяє писати на C#.
Програмування для вбудовуваних систем. Наприклад, написання драйверів, написання програм для малопотужних пристроїв, інтернету речей тощо. Окрема і важка для вивчення галузь, де переважно використовується «чистий» С або навіть Assembler.
ЧОТИРИ ЕТАПИ СТАНОВЛЕННЯ ПРОГРАМІСТА
Перший крок – вивчення computer science: усього, що стосується парадигм програмування (принаймні того, що стосується об’єктно-орієнтованого та функціонального програмування), алгоритмів, структури даних, що формує склад мислення. У ВНЗ чи самостійно – не має значення. Вибір конкретної мови на даному етапі не має дуже великого значення, але, з іншого боку, немає сенсу у вивченні таких мов, як Basic або Pascal, які вже багато років майже не використовуються в індустрії. На нашу думку, Python може бути дуже непоганим вибором для початківця.
Дмитро Лапшин: «Може скластись хибне враження, що людині досить вивчити інструментарій і якісь базові речі в програмуванні – і вона готовий Junior-програміст. Це не так. У Junior у першу чергу цінуються фундаментальні знання».
Другий крок – закінчити курси з програмування.
Михайло Антонович: «Тільки курси потрібні не ті, які організовують компанії, що займаються організацією курсів. Має сенс шукати навчальні центри при IT-компаніях. Наприклад, навчання на курсах Sigma Software триває 2 місяці, стажування інтерном – ще 2-4 місяці. Щоб потрапити на курси, кандидат повинен бути як мінімум студентом 3-4 курсу профільного ВНЗ».
Третій крок – інтернатура в IT-компанії та спеціалізація, за результатами навчання та стажування необхідно остаточно обрати напрямок, у якому далі майбутній програміст має розвиватися і вдосконалюватися. Дуже важливо побувати в «шкурі» інтерна, отримати досвід роботи над реальними проектами.
Останній, четвертий крок – отримання позиції Junior-розробника та робота над справжніми комерційними проектами. Перше, до чого потрібно бути готовим або доведеться швидко навчитися, – це вміння працювати в команді. Прийняти стиль і принципи роботи команди, вчитися працювати саме на результат, а не кодити з 9 до 18 п’ять днів на тиждень. І найголовніше – необхідно продовжувати вчитися чомусь новому. Тому що реальність комерційної розробки відрізняється від того, чого навчають на курсах або під час стажування.
КОРИСНІ ДОДАТКОВІ НАВИЧКИ ТА ВМІННЯ
З усіх необхідних додаткових знань найважливіше – це володіння англійською, на рівні intermediate або краще. Це дозволить вивчати безліч корисних матеріалів, наприклад, відеолекції MIT (Массачусетського технологічного інституту).
Дмитро Лапшин: «Для майбутнього програміста важливо стежити за тенденціями, розуміти, звідки «вітер дме». Для цього варто читати аналітичні матеріали, дослідження на профільних ресурсах на кшталт www.infoq.com, дискусій Reddit або Хабрахабр, хоч останній лають усі, кому не ліньки. Також варто звернути увагу на дайджести DOU».
Суттєвою конкурентною перевагою буде отримання знань у галузях, де будуть застосовуватися навички програмування. Тобто при програмуванні для фінансового сектора, скажімо, варто орієнтуватися у звітності, розуміти, що програма робитиме з точки зору бізнесу.
Важливо виробити звичку враховувати «користувацький досвід», передбачувати, як програма буде виглядати з точки зору користувача, наскільки вона буде зрозумілою і зручною. Дизайнером інтерфейсів бути зовсім не обов’язково, але ази ергономіки ПЗ майбутній програміст знати просто зобов’язаний. Також корисно опанувати основи тестування – це допоможе уникнути маси дурних помилок у роботі.
НАОСТАНОК
Дмитро Лапшин: «Концептуально все починається з того, що людина щось робить для себе. Першими кроками має бути рішення якихось простих алгоритмів: відсортувати список улюблених пісень за алфавітом, наприклад. Також важливими якостями є посидючість та вміння думати нестандартно, або, як говорять англійською, «think outside the box».
Михайло Антонович: «Узагальнений портрет майбутнього програміста виглядає так. Це хлопець або дівчина, які захоплюються точними науками. Такі люди часто беруть участь у різних олімпіадах, конкурсах. Вони завжди шукають щось пов’язане з формулами, цифрами та логікою. Це дуже часто інтроверти».
Дмитро Лапшин: «Перша мова програмування – це далеко не та мова, на якій майбутній програміст буде працювати. Тим, хто вирішив почати вивчати програмування, можна почати з Java, тільки бажано не заглиблюватися в «хащі». Усім, хто відчуває в собі сили і впевненість, варто прагнути до вивчення функціональних мов програмування – за ними майбутнє. У цьому випадку можна спробувати відразу Scala або Java Script. Як першу мову для вивчення можна розглянути і Python. З його допомогою добре виконувати прості завдання, його можна назвати сучасним Basic, але з можливістю практичного застосування».
Михайло Антонович: «Час вільних одинаків закінчився. Зараз усі складні рішення розробляються командами, кожна з яких має свою спеціалізацію. Потрібно бути готовим працювати в колективі».
@SerfCompany @AmazingCart