Вчора мене в соцмережі запитали, чому я у своїх статтях називаю програмістами стількома різними іменами: кодер, програміст-інженер, хакер, комп’ютерщик, і т.д.

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

Отже,

В неті гуляє багато різних слів, та й і я часто їх вживаю, якими називають програмістів. Програмісти бувають різноманітних типів, відповідно і називають їх по-різному.

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

Програміст – класичне означення – це людина, яка вміє передавати комп’ютеру команди, щоб виконувати необхідні речі. Все. Так просто.

Кодер. Від слова код. Тобто, людина, яка пише код, є, відповідно, кодером. Зауважте, немає значення, який код і якої якості. Відповідно можемо називати кодером, як веб-верстальщика, так і серверного програміста, так і програміста, який розробляє мобільні додатки, так і складні алгоритми.

В рунеті навіть ходить термін “бидло-кодери” для тих, хто пише прості програмки без великої кількості логіки, без застосування математичних теорій і хто не отримав повної вищої математичної, а ще краще інженерної освіти 🙂 Абсолютно не погоджуюсь із подібним підходом. Такими словами в людині говорить його гординя, і, очевидно, не бажання допомогти тим, хто знає менше за неї. Просто згадав вам на замітку, якщо не в курсі.

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

А ще у вікіпедії сказано, що:

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

***

Сертифікатів, які б відрізняли програміста від програміста-інженера, в Україні не існує. Вони є в інших країнах (Німеччина, Франція), але у нас немає. Тому, офіційно, усі ми – прості програмісти 🙂

Я себе ніколи не асоціював із інженером. Освіта не по спеціальності програміста. Складних наукових математичних технічних задач не вирішував з допомогою програмування. За весь кар’єрний вік (який зараз 9 років) тричі брав книжку по статистиці, щоб реалізувати статистичний аналіз даних. Такий собі кодер.

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

Тим не менше, я все одно не роблю особливого наголосу на розмежування між термінами програміст та інженер. Якщо програміст – це людина, яка інструктує комп’ютер на певні дії, то програміст-інженер програмує досліджуючи основні принципи і добре розуміючи необхідні компроміси під час вибору.

***

Я, наприклад, пробував себе у різних напрямках. І в серверній стороні, і на десктопі, і сторона користувацького інтерфейсу. Програмував на кількох різних мовах. Все вдавалось, від усього отримував задоволення, але найбільше подобається працювати над веб-проектами. Серверна сторона подобається, коли є складні оптимізаційні потреби і коли треба розгрібати нетривіальні помилки. А фронт-енд сторона притягує через тісну роботу із кінцевим користувачем.  І я не парюсь тим, що мене можуть називати лише веб-дизайнером. Головне, що отримую від цього задоволення і тому можу робити роботу на високому рівні.

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

***

Ще є таке слово, як комп’ютерщик. Дехто із моїх знайомих так себе маркує. Здебільшого ці хлопці спеціалізуються більше по залізу, збирають комп’ютери, роблять лайтове адміністрування Віндовса (встановлення, антивіруси, зансталити програми). Я, особисто, не люблю даного терміну і ніколи ним не називаю людей, які пишуть код. Комп’ютерщик мені швидше асоціюється із старою статтею “Ти ж програміст” 🙂

***

Незалежно від того, який код ви пишете і якої він складності, якщо ви робите це так добре, як тільки можете у даних умовах і з даними на цей момент досвідом та навичками, і при цьому постійно прагнете поглиблювати свої навички, покращуватись, тоді маєте повне право обирати для себе будь-який із вищезгаданих термінів. Якщо ви пишете лише HTML i CSS код (веб-верстка), то це не означає, що ви лише кодер. Якщо ви це робити на високому рівні, то сміливо можете називати себе програміст. І, навпаки, незалежно від складності технології, людина, яка халявить і залишає після себе недоробки та неякісний код, аж ніяк не претендує на звання інженера.

***

Тепер ви можете зрозуміти, чому я просто схиляюсь до варіанту Програміст і не роблю ніяких змістових наголосів, коли в статтях називаю програміста кодером, інженером чи хакером.

А які ще слова ви знаєте, якими “обзивають” програмістів? 🙂