Про творчість у програмуванні

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

Мені здається він і має і не має рацію. Професійне програмування сильно змінилося за останні кілька десятків років. Якщо відкрити та погортати книги з програмування минулого століття, можна помітити, що вони насичені інформацією алгоритмічного і математичного характеру. Думаю, це пов’язано з тим, що більшість тогочасних програмістів були колишніми або математиками або інженерами з електроніки. Апаратне забезпечення було порівняно примітивним, тому більшість програмістів займалося системним програмуванням намагаючись витиснути максимум із заліза. Було багато завдань, які ніколи раніше не стояли перед інженерами. Наприклад, створення перших браузерів, текстових процесорів, графічних редакторів та інтерфейсів. Усе це вимагало неабиякої майстерності у створенні ефективних алгоритмів і, безперечно, творчості. Робота програміста була дуже творчою, програмістами тоді були переважно фанати своєї справи, яких захоплювала можливість створювати щось, чого не існувало раніше переборюючи обмеження фізичного світу представленого примітивною електронікою.

Сьогодні усе змінилося. Так, є невеличка купка програмістів, які досі розширюють межі можливого. Вони сидять у Google, Microsoft, Nasa, Facebook та інших місцях створюючи й визначаючи наше технологічне майбутнє. Але світ заповнений величезними ордами програмістів. Більшість із них і близько не ставляться до своєї професії пристрасно. Вони потрапляють до неї лише тому що вона комфортна, безпечна і гарно оплачувана. Перед цими ордами ставлять бізнес завдання і ці завдання мають мало спільного з творчістю. Потрібно порахувати купон по облігації? Ось, будь ласка, формула. Необхідно відсортувати великий масив даних? Ось бібліотечна функція. Необхідно зробити запит до мільйонної бази даних? Ось приклад запиту на StackOverflow. Треба зручний веб інтерфейс? Хапай Angular та Bootstrap! Треба виконати автоматичну транскрипцію аудіо? Смикай IBM Watson web API. Потужне апаратне забезпечення робить економічно невигідним возіння з вишуканими алгоритмами напівосвічених програмістів з астрономічними зарплатами. Дешевше мати немотивованого програміста який пише аби як. Апаратне забезпечення і повільна мережа у 80% випадків перекриє неефективність його програм.

І все ж я вважаю себе творчою людиною, яка отримує задоволення від своєї роботи навіть після 13 років практики. Мені не потрібно застосовувати творчість для складання крутих алгоритмів. Творчість я застосовую до оформлення, до створення по справжньому простих і читабельних програм. По своїй суті це ніщо інше як педагогічна діяльність, спроба передати процедурні знання не лише комп’ютерові, а й людині, яка читатиме програму завтра. Чого вартий лише вибір назв для різних програмних артефактів! Це цікаво, це захоплює, це мотивує. До того ж простий та читабельний код має велику цінність для компаній, адже дорогі програмісти менше часу витрачають намагаючись зрозуміти код. Натомість вони мають більше часу створювати нову функціональність та виправляти дефекти.

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Мій перший мобільний Веб застосунок

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

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

Як я уже згадував, я був на той час веб програмістом і мені стало цікаво не просто розв’язати задачу, а написати програму, яка б розв’язувала задачу та автоматично формувала звіт про хід розв’язку. Посидівши деякий час я таки написав цю програму використовуючи PHP і, звісно, HTML для формування звіту про розв’язок. Програма містила форму, в яку можна було вводити умови задачі та кнопку, яка запускала обчислення.

Але як було мою програму використати на екзамені? Комп’ютерами користуватися не можна було, та й не було ні в кого ноутбуків у ті часи. А навіть якби й були, про WiFi в 2005 в університеті ніхто і не думав.

Тогочасне рішення мені винесло мозок. Це було магічно. Я почувався магом і ще більше переконався у тому що я хочу продовжувати бути програмістом. У мого приятеля був один з перших смартфонів Nokia

.

Він не шкодував грошей на мобільний інтернет, хотів бути онлайн 24 години на добу. Тож я домовився з ним, що він дасть мені смартфон на кілька хвилин, поки моя програма розв’язуватиме задачу. Натомість я йому дозволив скористатися своєю програмою для розв’язання його варіанту задачі. Викладач не протестував. Чолов’яга не підозрював що смартфон + інтернет міг розв’язувати його задачі.

Звісно, ми впоралися з екзаменом на відмінно і дуже швидко. Був навіть час ще декому з групи, хто погано справлявся із задачею, передати телефон. Я тріумфував, моя програма допомогла стільком людям! А я для себе відкрив новий світ мобільного інтернету.

Але до чого я це розповідаю? По-перше, мені здається ця історія цікавою, а по-друге, це чудовий приклад ефективності learning by doing. Я не пам’ятаю жодної теми з того курсу, жодного факту, жодної ідеї. Але чудово пам’ятаю цю програму і як вона працювала.

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail