Програмна інженерія: погляд зсередини
Важко зараз знайти людину, яка не використовує програмне забезпечення у повсякденному житті: додатки на смартфонах, сайти, операційні системи на мобільних пристроях та ноутбуках тощо. І кожен має своє уявлення відносно того, що ж там усередині. Тут зразу згадується жарт про те, що пересічна людина сприймає програму як поєднання інтерфейсу користувача та магії.
Так от, володінню такою магією можна навчитися! Де? Тут, у нас, на кафедрі КІТ.Від ідеї до мети та завданняНе важливо творцем чого ви хочете стати – онлайн-калькулятору чи програми керування роботом, який пестить жирного котиська – все починається з ідеї. І дехто думає, що маючи ідею, вже можна починати програмувати…
Та насправді реалізацію ідеї слід почати з огляду аналогів та спілкування з зацікавленими сторонами. А ще – з детального вивчення документації та бізнес-процесів, що допоможуть зрозуміти як і ким буде використовуватися програма у реальному житті. Зібрану інформацію треба проаналізувати. І з результатів цього зазвичай «народжується» технічне завдання. Часом ставлення до нього досить скептичне, але перейдемо на іншу сторону: чи інвестуватимете ви кошти в проект, якщо чітко не знаєте, що саме він «робить» і для чого? А яка мета розробки? Слушні питання, чи не так.
Тому, мабуть, все ж треба знати ефективні методи, що дозволять подолати відстань від «я хочу» – ідей до «я буду» – завдань.
Крок за крокомЧас реалізовувати завдання. Тут – розробка архітектури: визначення частин програми, зв’язків між ними, поведінки. І розробка алгоритмів з пошуком ідей у власній голові та на форумах, старих проектах, науковій літературі і десь на стелі :) Тут же написання коду та його тестування. Десь поруч питання надійності програми, а також розробка інтерфейсу з написанням керівництва користувача. І все це циклічно та з багатьма виправленнями.
Тут же може виявитися, що існують речі, які написані українською, російською чи англійською, але все одно не зрозумілі. Так, наявність відсилки до математики, визнаних вдалими рішень у побудові програми, алгоритмів та інших речей даються взнаки. (Натякаємо на те, що все це теж треба вчити).
Та от сьогодні погода погана – в офісі всі похмурі та сонні, інтернет відімкнули, а колега знов не розуміє вашу точку зору. І прекрасна фраза: «а чого я?». А далі – проект на стадії зриву, ризик втрати інвестора – на горизонті. Що ж застосувати: живу воду, бузинну паличку? Чи якийсь інший магічний артефакт? Так – знання та досвід викладача університету або хоча б google :)
Слід визнати, що робота в команді потребує організації та контролю, а знання з керування проектами аж ніяк не зайві. З’являється усвідомлення, що час дізнатися, що таке Agile, в чому різниця між модними словами scrum та Kanban. І де можна застосувати XP ( і тут вже мова не про стару операційну систему).
Ризики – куди не поглянь, а значить час ними керувати! Треба вміти передбачити негаразди в роботі і мати «план Б». Хм, може це треба було робити раніше, десь на перших кроках?
Разом чи окремоРозробка може бути колективною з багатьма індивідуальними та груповими учасниками. Погодьтесь, тут досвід колективної роботи (хоча б первинний) був би корисним, а навички писати код, який зрозумілий не лише вам – річ незамінна. Виявляється, системи контролю версій та сховища текстів програм – цінні.
Та можливо вам не подобається open space у центральному офісі, та й працювати ви звикли вночі, бо ви – совунья. Віддалена праця – чудовий варіант, що дає не лише більше свободи у плануванні свого дня, але й потребує самодисципліни і тайм-менеджменту.
Теж саме з явищем, яке на сьогодні так швидко поширюється, free lance. Це коли ви працюєте на себе, у зручному для вас місці та часі. І ви одразу можете стати головним програмістом, тестувальником, архітектором – та ким завгодно, в тому числі головним ризиком зриву проекту. А значить відповідальність та професійні знання – те, що має стати вашим другим я.
Все вперед, а де я?Все, що згадали вище, – це не лише магія очима звичайних людей, а й складові сучасної програмної інженерії (ПІ). Звісно, є ще. Особливістю ПІ є її різносторонність: вам не обов’язково писати код, бо ваша задача – керування проектами, вам не обов’язково керувати, бо ваше завдання – протестувати код… І таких «вам необов’язково» дуже багато, головне чітко розуміти і виконувати свою задачу. Варіантів відповіді на питання «а де я?» – чимало.
А що ж обов’язково? Пам’ятати, що процеси в ІТ – мінливі, як погода ранньою весною. Все йде вперед! І вам постійно потрібні практика, а ще час та бажання на вивчення нового: стандартів, шаблонів, мов, технологій.
Нагорода – самореалізація, динамічність та відсутність застоїв, а ще – гідна платня за вашу працю та можливість співпрацювати не лише з вітчизняними, а й закордонними партнерами.
Ви готові? Тоді вперед! І нехай першим малим кроком для абітурієнта та великим стрибком для програміста стане професійна вища освіта.
Магія поза Хогвартсом – заборонена! Але це не стосується магії програмної інженерії, особливо якщо ви на кафедрі КІТ у ДНУЗТ. Приєднуйтесь!