На просторах інтернету існує висловлювання, що хороший програміст це: 40% математик, 35% програміст, 15% архітектор та 10% аналітик. Чи правильне це твердження? Розбираймось, наскільки математика потрібна програмісту. 

 

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

      Для простоти нашого подальшого аналізу нестрого поділимо всі сфери IT на три сектори та визначимо їх таким чином:

  • Сектор 1: все, що пов'язане з дизайном (у тому числі й веб), менеджментом, IT-бізнесом та подібними напрямками.
  • Сектор 2: сюди потрапляють галузі IT, які безпосередньо займаються розробкою, тестуванням та аналізом ходового ПЗ.
  • Сектор 3: тут залишаються специфічні напрямки IT, які вимагають багато знань математики від розробника. Наприклад, сюди належать гейм-дизайн, ML, BigData та інші.

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

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

 

 

Базові знання з математики

      На наш погляд, базових знань у математиці буде достатньо лише для напрямків із першого сектора. Тому що ці напрями не працюють безпосередньо у розроблюванні ПЗ, і якщо працюють, то найчастіше лише з front-складовими (UI/UX,  тобто з тією частиною ПЗ,  з якою взаємодіє користувач). Багато читачів можуть сказати, що даному сектору взагалі не потрібно знання математики. Однак, це не так. Як показує практика, таким людям дуже важливо вміти аналізувати процеси ринку та етапи розробки ПЗ, робити певні прогнози, що без базових знань у математиці є досить складним завданням.

 

Математика для нетривіальних завдань

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

 

 

 

Математика для специфічних та складних проблем

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

 

Хороший програміст — це насамперед математик

      Це твердження, безумовно, спірне. На наш погляд, кожен має право думати так, як він вважає за потрібне. Проте, якщо провести невеликий «рисерч», запитувати у знайомих програмістів, як часто їм необхідна математика в роботі, з величезною часткою ймовірності вам дадуть відповідь, що часто. І це дуже природно, якщо згадати те, що весь світ обчислювальної техніки стоїть на постулатах математики. Тоді дуже закономірним буде і наступний висновок: справді, будь-який хороший програміст за своєю натурою певною мірою є математик (40%), проте в той же час не варто забувати про решту 60% складових для успішного розробника ПЗ.

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

 

Успіхів!

Олег Топорков

Популярні статті

Читати далі