Хто створює комп'ютерні програми?
Багатьох вчорашніх школярів як потенційне місце докладання своїх талантів і зусиль привертає комп'ютерна область. Хтось отримує профільну освіту, хтось освоює мови програмування по книгах самостійно і пише свої перші програми без чуйного керівництва, деякі комбінують обидва шляхи. Всім, хто серйозно цікавиться розробкою комп'ютерних програм, варто ознайомитися з тим, як же це відбувається на практиці, і які дійові особи беруть участь у цьому процесі.
Починається все з ... - ні, не з програміста! І навіть не з його начальника. Починається все з замовника. Але оскільки для нас ця сторона зараз не важлива, перейдемо відразу до посередника між замовником і програмістом - він називається аналітик.
Аналітики бувають декількох різновидів - бізнес-аналітики (Їх називають ще предметними аналітиками), системні аналітики, аналітики вимог і просто аналітики. За своїми функціями всі аналітики чітко діляться на дві категорії: перша займаються аналізом предметної області замовника, його робочих процесів, цілей, потреб і труднощів. Їх називають частіше бізнес-аналітиками. Другі аналізують можливості реалізації потреб замовника з точки зору архітектури системи, використовуваних мов програмування, баз даних, апаратного забезпечення. Таких називають системними аналітиками.
І ті, й інші можуть розробляти технічні завдання, за якими потім програміст пише код. І тим, і іншим необхідні аналітичні здібності, досить розвинені комунікативні навички, грамотна письмова та усна мова, впевнене знання математики. Але якщо бізнес-аналітик крім цього повинен добре знати предметну область замовника, то системному аналітику важливі глибокі знання технологій, що використовуються при розробці самих програм. Без аналітика не обходиться жоден проект зі створення програмного продукту, навіть якщо його функції виконує, наприклад, програміст.
У великих компаніях існують системні архітектори або проектувальники, які знаходяться за своїми обов'язками між системним аналітиком і програмістом. Іноді вони повністю здійснюють проектування майбутньої системи, включаючи бази даних і програмні класи. У цьому випадку програміст тільки пише код, що зв'язує компоненти, розроблені системним архітектором.
Людину, яка пише код, але не проектує, іноді називають кодером. Якщо ж системного архітектора у вигляді окремого фахівця немає, то частину його функцій виконує аналітик, а решта - програміст, званий в цьому випадку розробником. Розробник створює алгоритми, що приводять у рух статичні компоненти програми, і змушує ці алгоритми працювати правильно, швидко, зручно і без помилок. У першу чергу від нього вимагається відмінне знання використовуваних технологій, що безпосередньо залежить від досвіду роботи і спектра розв'язувалися ним раніше завдань. Чим більше досвід і ширше область завдань, тим вища ймовірність того, що, зіткнувшись з новим завданням, розробник вже буде мати приклади її рішення або готові компоненти. Хороший розробник пише код, придатний для повторного застосування, а значить, що виконує якомога більш загальні, прості і часто використовувані функції.
Тестування готового продукту виконують окремі фахівці. Ні в якому разі не слід поєднувати їх обов'язки з написанням коду - світовий досвід підтверджує, що шукати помилки повинні не ті, хто їх допустив. Фахівці з тестування займаються тим же, чим займатимуться користувачі - вони просто працюють з програмою. Але при цьому тестуючі повинні аналізувати, наскільки програма ефективно виконує свої функції, наскільки вона зручна, вимоглива до апаратних ресурсів, надійна, стійка до збоїв, чи не викликає помилок, паралізують роботу або викликають втрату важливих даних. Всі помилки фіксуються, після чого розробники займаються їх виправленням. Основні якості фахівця з тестування - увага і терпіння. Останнє потрібно при монотонної роботи, багаторазовому виконанні однакових операцій, а перше дозволяє не пропустити змін у цій монотонності, які можуть бути наслідком серйозних помилок у програмі.
Крім перерахованих ролей, в будь-якій компанії, що виробляє програмне забезпечення, існують фахівці з впровадження та супроводу, керівники проектів і технічні письменники, не обов'язково у вигляді окремо виділених людей. Проте їх функції по відношенню до розробки швидше службові, тому тут про них докладно не розповідалося.