Яке це — бути розробником в Росії, коли тобі сорок

Привіт всім, я — сорокарічний програміст-самоучка, а це моя історія.

Пару тижнів тому я наткнувся на графік розподілу людей, які цікавляться технологіями, ІТ і програмуванням. І він змусив мене задуматися про моїй кар'єрі.



Через якихось 20 років мені стукне 60. І ймовірність того, що я ще зможу займатися тим, для чого був створений, становить дуже маленьку величину. Ці роздуми привели мене туди, звідки все починалося.

Я дебютував в ролі розробника програмного забезпечення в 1990 році, через рік після того, як мені на 14-тиріччя батьки подарували ПЕОМ «Мікроша».

Світ в 1990 році
Тоді він був трохи іншим. Слова «Інтернет» в СРСР ми тоді ще не знали. У батьків на виробництві використовувалися ЄС ЕОМ, які виглядали так:



А жорсткі диски виглядали ось так:



Кишенькові комп'ютери (КПК) Palm тоді ще не існували в природі, і їх місце займали мікрокалькулятори «Електроніка» різних моделей. Про програмованому калькуляторі можна було тільки мріяти, ціни на них були захмарними:



В прокаті вітчизняного кінематографа крутили «Кін-Дза-Дза», Аліса Селезньова регулярно боролася з космічними піратами на каналах центрального телебачення, і в цей рік вийшов стильний трьох-серійний фантастичний фільм «Посередник»:



Холодна війна завершувалася, в космосі панував мир, а за посадкою в безпілотному режимі космічного човника " «Буран» я роком раніше спостерігав за новинами у прямому ефірі:



Так, безпілотна посадка багатотонного об'єкта з аеродинамікою праски — це було реально круто!

Мій перший досвід в якості розробника
Як стверджує А. В. Столяров в своїй книзі «Програмування: введення у професію», програмістом людина стає тоді, коли його програма стає потрібна іншим людям, і вони готові заплатити за неї гроші.

Завдяки прекрасній документації на комп'ютер «Мікроша», написаної в конструкторському бюро «Ліанозово» (яку я зберігаю досі як зразок складання керівництва користувача), я за півроку освоїв Бейсік, встиг у ньому розчаруватися з точки зору швидкості виконання програм, і почав писати свою першу гру на Асемблері. І поруч зі мною нікого не було, хто б розбирався в програмуванні і комп'ютерах.

В сусідньому дворі жив шкільний товариш, якій батьки подарували комп'ютер «Партнер 01.01». Комп'ютер у нього лежав в коробці, а товариш не знав як підключити його до магнітофона, щоб завантажувати програми. Я прийшов до нього, налагодив, і ми стали по черзі ходити один до одного в гості, щоб пограти. Ігор було небагато, і до того ж між нашими ЕОМ була невелика апаратно-програмна несумісність аж до формату запису на магнітну стрічку. Тому завантажити програми від одного комп'ютера до іншого ми не могли.

Товариша в комп'ютерах цікавили тільки ігри, і ось коли всі ігри були переграні, я йому показав, як я пишу гру для себе. Це була вертикальна скроллер-гонка на Асемблері. Він захопився цією грою, і попросив зробити йому таку ж. Я пояснив, що справа буде довгим: доведеться вручну перенабирати на його компі довгий лістинг Ассемблерной програми, або вбивати кілобайти HEX-коду, поправляючи в них адреси процедур і портів, які на наших комп'ютерах розрізнялися. Зрештою, я прийшов до нього ввечері, і написав за один присід аналог своєї гри, але тільки на Бейсіку. У грі була дорога, машинка з літери «Ж» та колоди із символів решітки #####. Чим довше йшла гра, тим вже ставала дорога, довше колоди і вище швидкість. В кутку клацав лічильник кілометрів. Зараз таку гру назвали б аркадою з випадково генеруються ландшафтом.

Написавши гру, я пішов додому, сказавши, що 100 км в ній проїхати неможливо. Через три-чотири дні зателефонував задоволений товариш, і сказав, що зміг проїхати більше. Виявляється, він цілодобово рубался в цю нехитру гру, і в якийсь момент колоди на дорозі розмістилися так, що можна було проїхати. Потім він покликав до себе ще пацанів, і вони рубались в неї не припиняючи. Батькам це не подобалося, і вони сказали, що треба брати гроші за гру на комп'ютері, як це робили кооперативщики в ігровому Спектрум-клубі. Потік бажаючих різко знизився, але якісь гроші він встиг заробити. Половину грошей він віддав мені, сказавши, що якби не моя гра, він би взагалі не заробив нічого. Так я став розробником, задовольняючи всім умовам критерію Столярова.

Вища школа
В інститут, з точки зору програмування, я йшов непогано підготовленим. Не у кожного за плечима було кілька років програмування на мові високого і низького рівня плюс згорів комп'ютер, який не витримав свого перетворення в голосовий автовідповідач у зв'язці з магнітофоном «Ореанда 204-C». «Програмістських» спеціальностей у нашому Вузі не було, але була кафедра мікроелектроніки і напівпровідникових приладів. Кафедра створювалася для радіозаводу, який був побудований на околиці міста. У рік, коли я почав вчитися, персоналу перестали виплачувати заробітну плату і завод закрили.

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

В інституті нам викладали мову Сі. З цим імперативним мовою в мене не було проблем, за винятком покажчиків. Знаючи Асемблер КР580ВМ80А, і встигнувши поколупатися з i8086, я дивувався, як можна було так потворно зробити таку просту річ, і чому цю уродскую реалізацію ще й прийняли стандарт. Але я змусив себе сприйняти це як належне.

В останній семестр курсу з програмування нам номінально прочитали якийсь сумбур з Сі++. Ця мова «викладав» людина, яка взагалі в ньому не розбирався. Лекції він читав з папірця. Таке положення справ було нормою тоді, і, наскільки розумію, залишається нормою і донині. «Концепція об'єктно-орієнтованої парадигми гранично проста. Кожен об'єкт в системі являє собою инкапсулированную абстракцію, наділену властивостями успадкування та поліморфізму» — ось що ми вивчали на лекціях. У підсумку, на практичному іспиті З с++ я був єдиною людиною, який писав рішення на цій мові. Інші писали на C. Я готувався вдома, днями мучачи плюсову частина компілятора TurboC, щоб змусити компілюватися одну-єдину програму в ООП-стилі на 300 рядків. Це була справа принципу: якщо я вчу Сі++, то я повинен зрозуміти, як написати і скомпілювати хоча б одну програму. Це було важко, незручно, і викликало подив: навіщо придуманий такий збочений мову? Навіщо захищати дані всередині програми від самої себе? В кінці кінців я механічно запам'ятав конструкції мови і їх сукупність, утворюють кістяк програми, які «хоча б працювали». А на іспиті просто це повторив. Викладач, як і я, був в трансі, коли побачив скомпилированную на іспиті Сі++ програму (це були години, у яких циферблат і стрілки були окремими об'єктами). Я тоді дав собі слово, що ніколи більше не притронусь до Сі++. І поруч зі мною нікого не було, хто б розбирався в ООП і в програмуванні на плюсах, і сказав би: товариш, нічого тут складного немає.

Навчаючись в інституті, я став підробляти, щоб допомагати батькам. Йшли дев'яності роки, і кожна копійка була на рахунку. Перший серйозний замовлення від однокурсника, батько якого був директором власного підприємства. Їм потрібна програма для обліку паливно-мастильних матеріалів. Ідея заробити на своїх уміннях програмувати була приваблива, і я погодився. Хоча, поклавши руку на серце, яке мені діло до пально-мастильних матеріалів? Мені хотілося розібратися як кодити 3D на голому процесорі і гратися з вокселями. Але я розумів, що за це платять десь далеко, але не у нас. Тому я краєм ока дивився на бази даних, і до того моменту вже півроку експериментував з FoxPro. Я прийшов у контору підприємства, і став з'ясовувати, що ж їм таки потрібно. Говорячи мовою розробника, я збирав історію користувача. Мені показали якусь бухгалтерську систему, і розповіли про свої проблеми. Проблема була в тому, що вони вели сумовий (грошовий) облік, а їм потрібен був кількісний, з деталізацією по споживачах і місцями зберігання. Це зараз я точно кажу, в чому була проблема. А тоді на мене вилили повну купу взаємовиключних параграфів і висловили надію, що я зможу в цій каші розібратися. Я записав собі все, що встиг зрозуміти, взяв місяць на розробку, і зробив цю невелику облікову систему.

За день до передачі замовнику, у мене клацнула думка: а що, якщо мені за цей винос мозку не заплатять? Скажуть, наприклад, що програма не підійшла, і відмовляться платити. А потім будуть використовувати. Чи не будуть. Але я-то ночі не спав, измотался вкінець. Я сидів, думав-думав, і нарешті вирішив: вставлю захист по часу. Якщо мені не заплатять протягом місяця, програма перестане працювати. Якщо її ніхто не буде використовувати, то про це ніхто не дізнається. А якщо заплатять і стануть використовувати, то після отримання грошей я скажу, що в каталозі з програмою треба просто видалити файлик з певним ім'ям. І я зробив захист. На FoxPro зробити захист — це ще та проблема. На той момент вже існувало два декомпилятора, які практично один-в-один відновлювали вихідний код. Але я, розсудивши, що навряд чи замовник стане шукати людину, яка зламає захист, трохи обфусцировал код, сховавши від сторонніх очей виклик системної помилки. На наступний день я віддав програму, показав як в ній працювати, але обіцяних грошей не отримав.

Сума була невелика — домовленість була про гроші в розмірі місячної стипендії. Але мені сказали, що виплатять через тиждень, коли на підприємстві будуть видавати зарплату. Що сталося через тиждень? Правильно, грошей мені не виплатили, пославшись на те, що в цьому місяці фірма мало заробила, і ось саме на мене не вистачило. Я внутрішньо похвалив себе за передбачливість. Навіть якщо я залишуся без грошей, то хоча б буду задоволений тим, що в один прекрасний момент програма (без мого втручання!) відмовиться працювати з нехорошими людьми. І я більше не став про себе нагадувати. Ні — значить ні. А далі все сталося як по нотах. Занурившись в навчання, я вже і забув про свою програму. Я був вдома, і раптом задзвонив телефон. Дзвонив мій однокурсник, батько якого замовив програму. Він сказав, що моя програма перестала працювати, а в ній вже накопичилися дані і тижневі звіти за цілий місяць. Я скромно нагадав, що мені за програму нічого не заплатили. І спокійно повідомив, що робити категорично нічого не буду, поки не побачу грошей. Однокурсник дуже образився, сказавши, що не очікував від мене такої підстави. Але через дві години привіз гроші, а я йому повідомив, який файл треба видалити. Більше я з ним справ не мав.

Цей епізод глибоко переконав мене в тому, що найкращі друзі дівчат — це діаманти кращі друзі програміста — це його власні програми. Вони не підведуть, і завжди будуть працювати так, як задумано. І єдине, на що я можу спертися в житті (крім батьків, звичайно) — це мої власні програми. Вони мене — як люди — не підведуть. А для того, щоб вони не підводили, програми треба писати добре.

Завершення навчання
В кінці навчання, на п'ятому курсі, я одночасно працював на трьох роботах. Взагалі, з роботою тоді було туго: навіть дорослі люди сиділи на мілині. Батьки мої були з тих, про кого згадувалося в смішному анекдоті: мама — лікар, тато — інженер. Влаштувати вони мене могли тільки в своїй сфері діяльності. У батька на заводі з ЗП було повністю глухо: завод стояв і розкрадаються. Тому у працевлаштуванні мені допомагала мати.

Робота разів
Три рази в тиждень я з міста їздив в село, в центральну районну лікарню, де працював на посаді «тыжпрограммиста». Так, вже тоді існував мем «тыжпрограммист». Підтримка бухгалтерії, розрахунок зарплати, подача звітності в податкову і пенсионнный фонд, медична статистика і соціальне страхування. Щось дісталося по-спадок від попереднього працівника. Розрахунок зарплати доводилося дописувати у відповідності з мінливим законодавством. Медстатистика була написана з нуля. FoxPro, Clarion, Сі для дрібних утиліт. Локальних комп'ютерних мереж ми тоді ще в очі не бачили, і я робив розпаювання навісного LPT-порту, щоб з'єднати комп'ютери на двох поверхах через LPT-лінк в Norton Commander. Хоча, яке мені діло було до бухгалтерії, статистики та звітності в податкову? Я ночами розбирався з CORDIC-алгоритмами, адаптуючи дивом знайдений лістинг мотороловского асемблера на i8086. Я дістався до BUMP-мапінгу в реальному часі на мікропроцесорі i386. Я відкрив для себе FIDO, а через нього і демосцену. Асемблер, суцільний Асемблер, і мікроскопічні розміри програм. Перші свої intro я робив для своїх федишин нсд. А поруч зі мною не було нікого, хто б розбирався в цьому низкоуровневом програмування графіки та звуку.

Робота два
Ще два рази на тиждень я працював у майстерні «Медтехніка». Вироблення там вважалася за починенным приладів. Мені віддавали всяку мізерію, з якої ніхто не хотів возитися. Є такі типи поломок, коли прилад працює, то ні. Діагностувати проблему в таких умовах дуже складно. Краще б він просто згорів, і не працював, тоді було б ясно що лагодити. Досвіду у мене не було, і взагалі я себе вважаю рукожопом в електроніці, тому мучився я неабияк.

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

Робота три
Третє робоче місце. Добу-через три сторожем в дитячій поліклініці. Прекрасна робота, щоб почитати книжки. Якщо б у мене була можливість притягти комп'ютер на цю роботу, я хоча б там писав свої програми. «Так узяв би ноутбук!» — скаже сучасний читач. Але про ноутбуці я не міг і мріяти. У мене була ще свіжа в пам'яті поїздка з батьком у відрядження в Москву на ВДНГ, де я побачив в торговому павільйоні ціни на ноутбуки, які були вище ціни автомобіля. Я тоді ходив вражений, і все ніяк не міг зрозуміти: невже знаходяться люди, які готові купити ноутбук за ТАКУ ціну? І поруч зі мною не було людини, яка б сказав: чувак, в нормальних конторах такі ноутбуки видають для роботи безкоштовно!

Вільний політ
У 1998 році я закінчив інститут. Диплом з відзнакою на руках. У мене дві смішні роботи зі смішними зарплатами. На Кавказі друга чеченська війна, і я призовник. У аспірантуру не взяли туди тільки по великому блату, тому що бронь від армійки. Дуже хороша перспектива — 15 років вчитися, отримати диплом з відзнакою, і з усім багажем знань вирушати на реальну війну. Але завдяки дірявому законодавства, я став єдиним офіційним опікуном, і отримав відстрочку. Одна проблема була вирішена.

Однак була друга проблема: відсутність пристойної роботи. І була третя проблема: в країні стався дефолт. Тобто, до дефолту я думав, що гірше бути не може. А при дефолті дізнався, що може. На роботу ходити не мало ніякого сенсу: зароблених грошей вистачало тільки на проїзд до роботи. Залишався тільки один варіант: понаехать в Нерезиновую, а там — як крива виведе. Деякі родичі новоспечених інженерів вже перебралися до Москви: працювали на будівництвах, на ринках, в електричках. В той момент влаштуватися за фахом в Москві не було ніякої можливості: без прописки Москва-Підмосков'ї на роботу не брали. По суті, чоловік був нелегалом в столиці своєї батьківщини.

Шматочок літа, з осені до весни я бігав за московським електричок, торгуючи копеешным товаром: отрута для тарганів, устілки, некондиційні фломастери, книги, чай з пилу з чайних фабрик, прострочене кави, ножі для м'ясорубок, інша неймовірна дурниця. По вихідним торгував на ринку радіотелефонами. Паралельно намагався знайти справжню роботу, але скрізь був відмову через відсутність прописки. Один раз, здавалося, знайшов компанію, яка могла б мене взяти на роботу. У всякому разі, у вимогах не було згадок про прописку, а при дзвінку менеджер нічого не знав про те, потрібна прописка чи ні. Контора займалася організацією бухгалтерського/складського обліку, впроваджувала 1С, і їм потрібні були спритні люди. Прийом на конкурсній основі. Я прийшов на співбесіду, написав тест, і з натовпу в скільки-то десятків людей залишилося тільки двоє. Далі було особисту співбесіду, на якому відбувся епічність діалог:

— Ви нам підходите. І останнє запитання: ви де живете?
— У Пушкіно. (я знімав там кут).
— Прописка Підмосков'ї?
— Ні. Південь Росії.
— Ну що ж ви так… Конкурс ви не пройшли!

Конкурс, мати, не пройшов. Кров здав, здав сечу, кал здав, математики завалився.

Один швидкоплинний позитивний момент перебування в Першопрестольній все ж був: я зміг потрапити на фестиваль комп'ютерного мистецтва ByteFall-99. Він теж з причини кризи переносився, але врешті-решт був проведений. Я виставив там свою інтро, яке написав ще в інституті. Доступу до комп'ютерних мереж Інтернет/Fido у мене не було, тому заповітну дискетки довелося вести організаторам ногами. Організатор працював адміном в Християнській місії — якісь католики чи протестанти, я в них не розбираюся. Він фанатів по Лінукс, і тоді я на півгодини залипнув — я вперше побачив лінукс в реальній роботі.

Навесні я і мій напарник зрозуміли, що в Москві ловити нічого. Вічна біганина від міліції, хабарі, обезьянники, терки з конкуруючими «фірмами» у вагонах електричок. Життя в гуртожитку з тарганами і загальним душем. Ми планували повернутися додому і зайнятися натуральним господарством — тема пасіки була актуальною. Але по поверненню напарника забрали в армію, і з пасікою не склалося.

Легальна робота
1999 р. Початок літа. Я сидів, і з подивом дивився на свої руки. Поки я був у Москві вони стали дерев'яними. Пальці забули, де знаходяться літери на клавіатурі. Куди поділися мої неквапливі 250 симв./мін.? Дивна гра мозку: іноді згадую розкладку JCUKEN свого першого комп'ютера, хоча за роки навчання і роботи з PC вже міг би звикнути до QWERTY.

Чим може зайнятися інженер кафедри мікроелектроніки в місті, де він нікому не потрібен? По суті, лише супроводом комп'ютерних облікових систем. І я пішов працювати в державні податкові органи. Мені відразу дали посаду провідного спеціаліста. Але зарплата… Вона розраховувалася за якимось древнім нормам, і була чисто символічною. І чесно кажучи, яке мені діло було до тонкощів розрахунку прибуткового податку на фізичних осіб з поправками від ДД.ММ.РРРР? Я марив штучним інтелектом та експертними системами. Щоб зовсім не закиснути на роботі, я ночами писав віртуального гравця на основі дихотомайзера для гри, теорії якої я ніде не міг знайти. Експертна система на то і експертна, що їй можна формалізувати ті закономірності, які розробник сам не знає, і для цього достатньо навчити її на зразках «правильної» гри. І коли мій електронний гравець обіграв мене, я був просто щасливий. Гра називалася «Акціонер». Я і мій товариш, який писав GUI, планували продавати гру. Але з цього нічого не вийшло. Зрештою ми виклали гру в вільний доступ. Через 15 років, зі мною зв'язався автор, який публікував правила цієї гри в журналі «Наука і життя». Він написав, що він знайшов нашу гру, і кілька разів грав «у нічию». Це було круто.

Пройшов рік. Країна стала відходити від дефолту. Став відновлюватися наш містоутворюючий машинобудівний завод. Ну як відновлюватися… Гості з туманного Альбіону, які купили дешево радянський завод атомного машинобудування, вирішили почати отримувати з нього прибуток не тільки шляхом продажу обладнання на металобрухт. Через знайомих я випадково дізнався, що на заводі формується інжиніринговий центр, куди набираються фахівці. Плювати, що не за моїм профілем, але хоча б зарплата буде доросла. Зрештою, в додатку до диплома, в графі інженерного конструювання стояло «відмінно». Я схопив документи, пройшов співбесіду, влаштувався в штат, і через тиждень вже їхав у відрядження в Пітер. Зарплата, витрати на відрядження — можна збирати на житло. Хоча, яке мені діло було до теплообмінного обладнання, трубних решіток, фланців і компенсаторів? Нейронні мережі, навчальні вибірки, розпізнавання образів — ось цікава тема! А що, якщо нейросетку застосувати до кодування відео? Чорт, MPEG-4 саме це і робить…

З інженера-конструктора я перекваліфікувався у інженера-расчетчика з ухилом на розрахунки потоків рідин і газів. Основні інструменти — MathCad для аналітичних рішень, UniGraphics для геометрії, AnSys та StarCd — для кінцево-елементного аналізу. У MathCad можна програмувати — ура! В AnSys можна писати скрипти — чудово, буде параметрична геометрія! Для StarCd потрібен STEP-конвертор, специфікація є — напишемо! Ах так, адже в світі ще є Інтернет, і хтось пише сайти. І все це крутиться на Linux! Треба його повивчати. А що таке PHP 4-ї версії? О боже, це скриптова мультипарадигменный мову з класами! Невже ООП може бути таким простим?

У цей час повернувся з армії мій товариш, з яким я працював на електричках в Москві. Він хороший схемотехник, і ми вирішили замість пасіки, паралельно з основною роботою, помацати бізнес з виготовлення світлодіодних табло типу «рухомий рядок». Краще б ми зайнялися пасікою. Ми наївно вважали, що якщо зможемо зробити недороге і просте (в нашому розумінні) виріб, то зможемо забезпечити своє існування. Для початку вирішили зробити тестову модель. Біжучий рядок складалася з саморобною світлодіодної матриці і саморобної плати з мікросхемою КР580ВВ55А, яка за LPT-порту вставлялася в материнку i386. Розрахунок був на те, що материнки з i386 до того часу настільки застаріли, що їх можна було закуповувати кілограмами за копійки. А нашим, ЗА більшого і не вимагалося. Я зробив нескладний мова розмітки для виведення повідомлень, в якому були завантажувані шрифти, анімовані спрайт, ефекти, мета-символи дати-часу, значення датчиків. І написав драйвер для виведення динамічної картинки на наш пристрій. Коли прототип був повністю зібраний і заробив, ми почали підраховувати, скільки коштуватиме кінцевий виріб. Виявилося, що найдорожче — це виготовлення матриці з діодами і корпус. Ті ціни, які озвучили місцеві підприємства за свердління рівних отворів в пластиці і вигин металу, були якимись неадекватними. Вони в рази перевищували ціну готової біжучого рядка, яку можна було дістати в Китаї. Ми продали дослідний зразок по ціні комплектуючих, і на цьому наше високотехнологічне підприємництво закінчилося.

Три роки я займався розрахунками. Не сказати, що це справа не з легких: велика відповідальність, і кожен день як іспит з фізики. Завдання весь час нові: розрахунок напружень, тепло-масо перенесення, то профілювання аеродинаміки, то трубні пучки. Скрізь своя методика, скрізь свої особливості. В якийсь момент я зрозумів, що мене не вистачає на все. Добив мене замовлення на масляний теплообмінник для корабельного обладнання. Морська тематика — це взагалі окрема пісня. У неї свої норми і вимоги, які сильно відрізняються від класичного, наземного машинобудування. Я «куснув» задачку, але існуюча методика розрахунку давала похибка більше, ніж ступінь оптимізації характеристик. Гуру розрахункової групи знизали плечима: викручуйся, як хочеш, ми не знаємо як рахувати. Замість аналітичного рішення вирішив застосувати скінченно-елементне. Але була проблема: масло сильно охолоджується, і зміною в'язкості можна було нехтувати. Потрібні розрахунки із змінними параметрами середовища. У піратському StarCd був необхідний функціонал (так, тоді все на виробництві було піратським), але в ньому була помилка: губилися коефіцієнти розрахункової формули. І обійти це було ніяк не можна. Я навіть намагався вивести коефіцієнти для еквівалентної формули, де були б скомпенсовані втрачені коефіцієнти, але немає. За дуже далеким зв'язків, в якомусь московському інституті я знайшов людину, який займався розрахунками в цій програмі. І він сказав, що проблема існує, і ніяк не вирішується в тій версії, яка у мене. Зате в більш нових версіях проблема вирішена, питання тільки в покупці. Я повідомив про це головному інженерові, але він тільки покрутив пальцем біля скроні: де це бачено, щоб програми купували для виробничих потреб? А що стосується розрахунку — треба писати фіктивний, і закривати суму за виконану роботу. Я відмовився, і після дивної розмови «або пишеш лівий наукоподібний розрахунок і ставиш підпис, або валишь», звільнився за власним бажанням.

Куди йти тепер? Колишній інститутський товариш працював у самого великого в місті власника продовольчих магазинів. Тоді тільки з'явилася тема магазинів самообслуговування, забута з радянських часів: всю перебудову людей боялися пускати до товару, і вся торгівля в місті була прилавкової, і, відповідно, повільної. Власник дуже боявся, що в місто прийде мережа «Магніт» і «Пятерочка». І було прийнято рішення переводити магазини на формат торгових залів. Потрібен чоловік для реалізації цієї ідеї. Через брак кращого пропозиції від роботодавців, цим я став займатися. Хоча, яке мені діло було до електронних ваг, сканерів штрих-кодів, проводок в 1С Рарус» і касових модулів? Комп'ютерна графіка і анімація! Що є з самого доступного? Flash! VirtualDub і потоковий скриптінг на AVISynth! Що зробити, щоб розібратися в технології? Звичайно, власний кліп! Удень — робота, щоб поїсти. Вночі — творчість.

За рік, — страшно згадати, — я запустив чотири магазину самообслуговування. Вони були перші в місті. На інших відставали будівельні роботи. Настав відносний спокій: прихід «Пятерочки» з Магнітом відкладався. Що б ще навішати на ІТ-фахівця, який супроводжує три маркету і четвертий з приставкою «супер»? Звичайно, ревізію! Тыжпрограммист, рахувати вмієш, і поки роботи трохи (магазини адже чарівні, і працюють самі по собі), треба ночами вважати товар. А якщо недостача? Ну давай подивимося: магазини довірені тобі, облік ведеться на комп'ютерах, значить хто відповідає за нестачі? Зрозуміло?

Провівши кілька ревізій, і бачачи, які справи творяться в торговельній мережі, я твердо вирішив з'їжджати з цієї теми. Але треба розуміти, що лихі дев'яності в глибинці тривали і в двотисячних. Власники великих міських бізнесів — люди не прості, а багато речей вирішуються за поняттями. Тому просто так з теми не з'їдеш. І саме в цей момент сталося неймовірне: одному моєму товаришеві мама подарувала квартиру в Москві, а сама одружилася і поїхала в Італію. Він перебрався в Москву, і якимось чином влаштувався на роботу бета-тестером в контору, яка писала гри під Linux. Він розповів про мене, і мене запросили на співбесіду. Я зібрав всі свої вільні гроші, і поїхав у Москву. Влаштувався на роботу, знайшов квартиру, і відразу заплатив потрійну суму місячного проживання: агентству, заставу власнику, оплату першого місяця. До першої зарплати жив на бутербродах.

Робота за фахом
2005 рік. Москва була зовсім іншою! Лужковські закони скасували, і можна було ходити в метро і на вулицях спокійно, не боячись що товариш міліціонер раптом зацікавиться твоєю особистістю. У роботодавців спостерігається кадровий голод, і фірми з задоволенням влаштовують фахівців, не дивлячись на прописку. І працевлаштування, що дивно, за КЗПП! Оренда житла в Москві як і раніше дороге задоволення, але шестиразовий зростання зарплати робить це задоволення дозволеним.

Фірма, в яку я влаштувався, робила гри під Linux. Звучить неймовірно? Кому потрібні ігри під Linux? Виявляється, потрібні. Наприклад, якщо це ігрові автомати з азартними іграми. Сфера такого бізнесу називається буржуйським словом «геймблинг». Пам'ятаєте «стовпчики» і зали ігрових автоматів на гроші? Ось це воно.

Для зниження витрат, і щоб не морочитися з ліцензуванням, фірма вела розробку на Linux. SDL, OpenGl, png для графіки, ogg для звуку. Фірма займалася повним циклом виробництва. Відділ розробки (куди я і влаштувався), відділ проектування електроніки (до PC-материнкам підключалися свої плати захисту і контролери обладнання), відділ контролю якості, виробництво корпусів, складання готової продукції, та інші невиробничі відділи. Коли я влаштувався в цю фірму, пік надприбутків вже пройшов. У повітрі літали чутки про заборону ігрових автоматів. Тому фірма потихеньку переорієнтувалася на замовлення з-за кордону.

Я пропрацював в цій фірмі рік «на постоянку». Вивів у продакшен два проекти, які робив практично «з нуля», але використовуючи і допрацьовує фірмові бібліотеки. Зі мною, крім C, C++ і Java програмістів працювали художники, аніматори, музиканти, шрифтовики, тестери. Мені це дуже подобалося. Там дійсно був колектив, і я вряди-годи не був фахівцем-одинаком.

Історично, ігри збиралися з сі та Сі++ коду, потихеньку перебираючись повністю на плюси. Доводилося писати і низькорівневі речі, і фронтэнд на OpenGL, і фінансово-грошову частину, та тести з математики. Зовні все повинно було виглядати яскраво і красиво, цілилися на «верхній» сегмент. Тривимірні об'єкти вылизывались до ідеалу: якісні текстури, півтіні, рухомі відблиски, розмиття для емуляції швидкого руху, сплайни для м'якої анімації, etc. Я в роботі використовував принципи написання коду «від НАСА»: одноразове розміщення об'єкта/ресурсу в пам'яті при старті, ніякої динамічної роботи з купою в процесі виконання програми. Це давало свої плоди: нічого не гальмувало, все працювало плавно, так як всі дані при старті були підготовлені і доступні. Звичайно, без оптимізації самих даних це було б неможливо. За рахунок такого підходу, ігри працювали місяцями не вимикаючись. Були й інші методики: зі мною працював студент, який писав для своїх проектів свій власний аллокатор з потрійним рівнем покажчиків. На його код я дивився з побожним страхом. Його проекти працювали, то сегфолтились, але він швидко все виправляв. Коли він звільнився, то код цього фахівця довелося переписувати з нуля, так як ніхто не міг потягнути його супровід.

За весь час роботи я локализировал свої проекти під дванадцять країн: Країни колишнього СРСР, Європа і латино-американські країни. Для деяких країн доводилося проходити сертифікацію, щоб пустили на ринок. Вимоги були нетривіальні, найбільше извозился з Чехією і Перу — однієї умовної компіляцією було не відбутися. Але працювати було цікаво!

Хоча, поклавши руку на серце, мене гризла совість: все-таки робив я азартні ігри. За азартом завжди стояв напівкримінальний бізнес, а я робив для нього послугу. І мені це дуже не подобалося. Тому, щоб хоч трохи виправити карму, я став подумувати про те, щоб запустити свій власний OpenSource проект. На благо суспільства, так сказати. Я ходив, і обдумував можливі корисні проекти. І вже були деякі намітки як раптом прийняли закон про регулювання ігрової діяльності. І фірма, в якій я працював, стала робити різке піку, оскільки більша частина доходів все-таки була з російського ринку. Виробництво сталі оптимізувати, намітився переїзд у більш дешевий офіс. Я домовився на пристойну ЗП за мірками мого міста, що для роботодавця виявилося вигідно, і поїхав назад. І кілька років продовжував працювати віддалено. Особистий досвід показував, що Москва — це місто для роботи, але ніяк не для життя.

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

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

Я вирішив, що тільки робота, досвід, і проекти із застосуванням нових технологій втримають мене від випадання з індустрії. І OpenSource здавався тоді хорошим виходом. У мене було кілька проектів, які я міг виставити на загальний огляд, після приведення коду в більш-менш пристойний вигляд. Я вибрав один з них, написаний на C++ з Qt, паралельно з удаленкой став пиляти проект для людей. Я дуже розраховував, що з'являться люди, яким проект цікавий, і сформується хоча б невеликий кістяк команди розробників. Однак, дива не сталося: періодично з'являлися люди (і я їм дуже вдячний), які точково допомагали, якщо я не міг з чим-небудь розібратися, але «на постоянку» не знайшлося нікого. Я тягнув один проект, і продовжую це робити зараз. Відповідно, ніякого обміну досвіду в рамках команди я не отримав, через відсутність такої. (Ремарка: після публікації на Хабре кілька людей стали коммитить в репозитарій проекту. Але тепер у мене немає часу щоб розгребти ці коміти і продовжити групову розробку).

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

Просто робота
2011 рік. Ну що ж, ось я і приплив. Тепер варіантів небагато: або фріланс, або веб-студія, або місцеве виробниче підприємство.

1. Фріланс в області розробки — це дуже специфічна річ. Я періодично робив кілька замовлень в режимі фріланса, і знаю, що це страшний винос мозку. Звичайно, все відбувається за одним і тим же сценарієм: намагаючись заощадити замовник знаходить якихось мутних виконавців, які пиляють приблизно до моменту «починає працювати». Виконавці отримують якісь гроші, і зникають за самим фантасмагоричним причин. Замовник до останнього намагається домогтися від виконавців завершення проекту, але немає. В результаті всі терміни вийшли, бюджету немає, і замовник починає судорожно шукати кого-небудь на фріланс-біржах або по знайомим, хто розбереться в тому, що було зроблено, і «трохи допише», адже, на його думку, величезна частина роботи вже виконана, вже «майже все працює». Або інший вічний сюжет: зробіть мені аналог VK за місяць, плачу 8 тисяч рублів. Загалом, про це можна довго говорити, але з мого досвіду, знайти адекватного замовника в Росії дуже складно. Найкраще, на що можна розраховувати — це виконання купи дрібних замовлень за невеликі гроші. Адекватності в них більше, але їх кількість зазвичай обмежена. Як тимчасовий заробіток така робота може бути і має право на життя, але постійно такими речами займатися несерйозно.

2. Веб-студія, на мою думку, — це шлях в нікуди. Можна прокачати свої скіли в декількох CMS, розібратися з парою веб-фреймверков. Заточиться на PHP, придивляючись до Пітона і Ноді. Ну і далі що? Нескінченне клепання сайтів, постійний пошук замовників, бо разова робота. У нашому місті є рівно одна веб-студія з відвідувачам веб-програмістом. Є пара підприємців-фрілансерів, які працюють за їжу. Хтось скаже, що Інтернет великий. Так, так і є, але дивись пункт перший про фріланс. Крім того, комерційними сайтами займатися досить нудно.

Загалом, ніяких перспектив у світі розробки для мене не залишилося. Так, я дуже, дуже хотів розвиватися як розробник, але розробники в моєму оточенні нікому не потрібні. За фактом, вони потрібні в декількох великих містах: Москва, Пітер, Новосибірськ. А якщо подивимося на інші поселення, то там вже все набагато сумніше. Ось, наприклад, Перм, 2016 р. (страшно подумати, які зарплати були в 2011 р.):



Ці зарплати — не насмішка, це все на повному серйозі. Але у вищенаведеному оголошенні хоча б є робота. У пошуках пропозицій я прошерстил hh.ru з фільтром по регіону. Найближча робота розробником — через 250 км. При всіх прикидках вимальовувалася наступна картина, яку мозок постійно відштовхував як неприйнятну: хочеш бути розробником — їдь у велике місто або міняй країну. Не хочеш їхати — ламай себе і міняй сферу інтересів. Неприваблива альтернатива.

Я сидів, думав, і вирішив мислити ширше. Добре, з розробкою не склалося. Але ми повинні поважати себе, і не викидати свої знання, а спробувати їх трансформувати для інших речей. Бажано, щоб ці речі рухали людство вперед, тоді в моїй діяльності з'явиться хоч якийсь сенс. Чи є у нас в країні такі напрямки? Те, що ми вміємо робити на світовому рівні в промислових масштабах, і складаємо хоч якусь конкуренцію на світовій арені? Схоже, що є. Авіація, космос, атомна енергетика. Зараз жодна з таких сфер діяльності не може обійтися без ІТ-технологій. Якщо я піду в таку сферу, то зроблю свій внесок, яким би він не був. Що для мене більш реально? Атомна енергетика. В місті є підприємства атомної галузі. А космодромів і авіазаводів не спостерігається. Значить, вибору не залишається.

Розробка та ІТ з приставкою «держ»
По знайомству я влаштувався в організацію атомної галузі. Чисельність ~120 осіб, з поступовим зростанням кількості персоналу. Всі ІТ зводилося до сервера 1С і файловим сервером, керованими єдиним адміном, періодично жостко зловживає алкоголем. 80 комп'ютерів, однорангова мережа без домену з черепашачою швидкістю і постійні відключення комп'ютерів мережі. Я влаштувався інженером пуско-наладки: у другому людину, який би займався ІТ, компанія, на думку керівництва, не потребувала.

Півроку я займався справами відділу пуско-наладки, і раптом зверху спустили рознарядку на зміну структури підприємства. У новій структурі був передбачений відділ інформаційних технологій. Правда, чомусь, крім ІТ, у функціях відділу були закріплені роботи по метрологічному забезпеченню виробництва. Консультації з авторами структури показали, що помилки немає. Адмін бухав, і, за браком інших кандидатур, я підготував документи нового відділу, внутрішньо називаючи його химерою. Надалі мені довелося прикладати зусилля, щоб за відділом інформаційних технологій не закріпили ще й функції екологічного нагляду. Так з'явився ІТ-відділ на моєму підприємстві, в такому вигляді він існує й донині.

Яка зв'язок між метрологією, екологічним наглядом, і інформаційними технологіями? Сама пряма — мало хто розуміє, чим займаються фахівці цих напрямків. Тому всяку «невідому хрень» звалюють в одну купу, не дивлячись на здоровий глузд. І божевілля триває: тепер ефективні менеджери переводять відділ інформаційних технологій у кошторисно-договірного підрозділ.
Історично, в галузі склалася парадоксальна ситуація: начебто високотехнологічна галузь, навіть є група компаній, що займається супервычислениями. У галузі є купа інститутів, які займаються програмними системами, промисловими контролерами, АСУТП, автоматизацією виробничих та невиробничих процесів і іншими високотехнологічними речами. Разом із цим існує когорта управлінців, які сприймають комп'ютерну техніку та мережі як прикре непорозуміння, від якого хотілося б відмахнутися. У цих керівників відсутнє розуміння того, що на дворі вже інший технологічний уклад, і найважливіша річ в сучасному корпоративному світі — це інформаційні потоки, для яких потрібна інфраструктура, кваліфіковані користувачі, розробники і обслуговуючий персонал.

Якщо ж у керівника раптом виникає розуміння необхідності побудови ІТ-інфраструктури, то у нього з'являються мрії про те, що все це виникне сама собою з нізвідки. Інша крайність — що можна зробити будь-яку інформаційну систему, просто випустивши розпорядження і виділивши велику суму з бюджету. В купе з тим, що такі управлінці дуже смутно уявляють собі всю багатогранність ІТ-світу, а пізнання про ІТ-професії у них обмежені назвами «сисадмін» і «тыжпрограммист», то з такими людьми дуже важко працювати. Неможливо пояснити, що вчорашнього техніка документації можна зробити спеціалістом по базах даних, а дуже гарного хлопчика, за якого ручається сам начальник управління, не навчиш роботі з мережами. І тим більше неможливо пояснити, що хороший Linux/Win адміністратор не повинен займатися закупівлями, договорами і складанням нескінченних звітів, а програміст не зможе нічого виразного написати, паралельно супроводжуючи бухгалтерію/кадри/кошторису/договору, в проміжках крутячи АТС, заправляючи принтери і ведучи складську базу обладнання.

Споживацьке ставлення до ІТ, помножене на нерозуміння самого предмету, формує в галузі дивні перекоси: досить прості і добре масштабовані речі, типу документообігу, коштують для підприємств дуже дорого. У той же самий час цільові інформаційні системи не рідко фінансуються за залишковим принципом.

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

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

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

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

Якщо необхідність наявності регламенту за старими традиціями ще розуміли, то необхідності в ТЗ на інформаційну систему (тим більше, технічного рішення) під новий проект ніхто не бачив. Для мене це було дивно, але я знав, що палець об палець не вдарю, поки у мене не буде підписаного ТЗ. Розробники знають, що ТЗ — це надійний щит від наступних вимог «все переробити». Тому я написав і погодив ТЗ, яке, по суті, ніхто не читав, крім мене, але яке кілька разів виручала в подальшому.

Ніякий інший осудною програмної платформи, крім 1С, я знайти не зміг. Копнув в бік СПО-шнного OOBase, безкоштовного Дебет Плюс, подумував про Qt, потикався в Лазарус, помедитировал над документацій ExtJs. Але нічого з цього набору не підходило. Та й де б я знайшов фахівців крім себе, здатних супроводжувати таку екзотику? Далі довелося відновлювати скіли за 1С, розбиратися з тонкощами написання конфігурації в режимі тонкого клієнта. В результаті за кілька місяців була написана конфігурація 1С, многопроектная і багатокористувацька. Сервер був піднятий на CentOs Linux + PostgreSQL. Було організовано підключення відповідних відділів з усіх філій підприємства до орендованого фізичного сервера на магістральному кільці. Так, все це довелося робити самому на чистому ентузіазмі, як мовиться, «в одне рило».

А далі почалося найцікавіше. Коли система запрацювала, дані стали вноситися, звіти стали формуватися, відразу з'явилися люди, які вирішили керувати процесом, і докласти свою, так сказати, руку, до розвитку і до експлуатації системи. Так само з'ясувалося, що система, яка об'єднує всі проекти за напрямом, який вона автоматизувала, потрібно, ні багато ні мало, а на самому верхньому корпоративному рівні для ведення аналітики. Загалом, в результаті всіх блукань і погоджень, облікова система раптом стала називатися галузевої. Потім з назви зникло поняття «облік» і з'явилося поняття «управління», що явно преувеличивало реальність. У мене склалося враження, що такі загадкові трансформації виникають із-за якихось флуктуацій Всесвітом, за ними не стоїть якийсь цілком конкретна людина, а просто так працює система. У ході цієї діяльності мені довелося замість розробки роз'їжджати по відрядженнях, узгоджувати свої папірці і писати папірці за моїх «керівників». Різко активувалася служба безпеки, і якщо раніше нікому діла не було до того, де і як розміщено сервер, а на мої запити на правила розміщення була відмовка «згідно технічним вимогам», то тепер послідовно висувалися все нові і нові вимоги безпеки, так що мені і моєму новому спеціалісту по мережам довелося чотири рази переносити сервера на абсолютно різні майданчики.

До моменту дослідно-промислової експлуатації системи я зміг переконати керівництво в доцільності прийняття ще одного фахівця-розробника крім мене. Це було просто смішно: якщо б мені сказали, що одна людина розробив галузеву інформаційну систему, я б просто не повірив. Так не буває. Проблема була в тому, що цією людиною виявився я. Коли з'явився другий фахівець, мені довелося займатися узгодженням введення системи в дослідно-промислову, а потім і в промислову експлуатацію. Оцінюючи зараз кількість папірців і листів, я можу сказати, що їх текст був порівнянний з обсягом коду самої ІС. Основна розробка була зроблена за кілька місяців. Узгодження ж, до промислової експлуатації, тривало майже три роки. Сума, яка була зароблена для підприємства, була дуже смішною: приблизно одна річна зарплата тимлида в Москві.

Ми дуже розраховували на те, що основні суми зможемо заробити на щорічних договорах з підтримки і розвитку системи. Але немає. Традиційно, система була передана на супровід кишенькової ІТ-організації. Хлопці не одразу усвідомили, що їм доведеться зіткнутися з Linux-виртуалками і супроводжувати БД PostgreSQL, а не весело мышевозить зв'язку 1С+Windows+Microsoft SQL Server. Керівник став надзвонювати мені і вимагати, щоб все було перероблено на продукти компанії Microsoft, причому саме в той момент, коли вже почалися санкції і в країні був узятий курс на імпортозаміщення. Я прикрився ТЗ і повідомив йому пункти в галузевих регламентах, в яких дозволялося використання дистрибутивів Linux для інформаційних систем. Після чого попросив його подумати про вартість, терміни узгодження і терміни реалізації такої переробки. Мабуть, це взымело дію, і через пару тижнів мовчання нам запропонували укласти договір на техпідтримку. На техпідтримку третьої черги. Фактично це означало, що на нас будуть звалювати всі проблеми, що б ми, як розробники системи, їх вирішували за досить символічну плату. Ми розуміли, що такі інформаційні системи не працюють просто так, їх потрібно і супроводжувати, і розвивати. Тим більше, що первинні дані в неї вводять наші співробітники з усіх майданчиків. Тому навіть на таких умовах погодилися. Але далі справа не пішла: договір на третю чергу повинна була ініціювати сторона замовника, але ніхто цим не став займатися і справу спустили на гальмах.

І це був один з небагатьох моментів, коли мій принцип «програми треба писати добре» мене підвів. Наша інформаційна система пропрацювала в продакшені без підтримки три роки на повному автопілоті, і продовжує працювати зараз. Тремтіть, 1С-хайтеры! Сервера додатків цієї платформи здатні місяцями працювати без перезавантаження, якщо їх, звичайно, правильно налаштувати. Єдиний серйозний технічний збій — це коли через рік закінчилося вільне місце на розділі сховища через занадто великого числа сканів документів. Ніхто у власників системи за цим не слідкував, і коли все встало, ми самі почали надзвонювати щоб знайшли хоч когось, хто зміг би збільшити квоту і підняти сервер.

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

Професійна деградація
Не кожен розробник здатний працювати в таких умовах, у яких довелося працювати мені: замість розробки — узгодження, феєрична паперова безпека, складання договорів на поставку та обслуговування, закупівля та ліцензій… Як я ще не сказав? Ефективні менеджери методично випускають документи, згідно з якими кожен фахівець повинен займатися всім спектром всіх можливих виробничих справ. Це називається залученістю в техпроцес. Забутий загальноросійський класифікатор професій, забутий російський реєстр професійних стандартів. На думку менеджерів, кожен працівник виробничого підприємства повинен (пишу по пам'яті):

  • Бути ініціатором і виконавцем робіт по підготовці, оформленню і реєстрації проектів документів в галузевих системах документообігу, погоджувати документи письмово та електронно, визначати узгоджувальних та обов'язкових узгоджувальних проекту документа, визначати терміни погодження проектів документів, вести облік карток проектів документів як виконавець. Хто знає що таке SAP, той уявляє собі цей ад';

  • Виступати ініціатором щодо складання відповідного розділу плану заходів щодо укладення протягом планованого календарного року витратних договорів на поставку необхідної продукції річної програми закупівель, володіти компетенціями щодо формування закупівельній документації, вираженими в оформленні комплектів документів:

    • обґрунтування максимальної/мінімальної ціни;
    • локальні кошториси, викопіювання або інші кошторису або розрахунки;

    • технічне завдання, додатки до ТЗ;
    • проект договору з додатком графіка поставки продукції;
    • графіки оплати і постачання;
    • висновок ПДТК і РІО;
    • інші документи і додатки, передбачені галузевими стандартами.
  • При формуванні ТЗ необхідно:

    • виставляти вимоги до якості, технічними, функціональними характеристиками;
    • виставляти вимоги до споживчих властивостей продукції;

    • виставляти вимоги до безпеки продукції;
    • виставляти вимоги до порядку приймання продукції та дотриманням інших показників, пов'язаних з визначенням відповідності продукції потребам, вимогам стандартів, технічних умов або інших нормативних документів;
    • виставляти вимоги до підтверджуючих документів які повинні бути надані у складі заявки;
    • контролювати вимоги до кількості, комплектації, місця, терміну, графіком поставки.
  • Як ініціатор закупівельної процедури, кожен фахівець повинен запитувати і обробляти техніко-комерційні пропозиції потенційних постачальників на основі яких складається розрахунок початкових цін договорів. Ініціатор несе відповідальність за обґрунтованість визначення планової вартості закупівлі, за обґрунтованість визначення та правильність розрахунку НМЦ, за дотримання положень методики розрахунку НМЦ при визначенні вартості укладених договорів;

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

  • Оформляти надходження товарів та інших активів підрозділ (акти), брати участь в комісіях з приймання та списання товарів (акти), забезпечувати документальне оформлення вводу/виводу в експлуатацію обладнання та програмного забезпечення (накази і розпорядження);

  • І т. д. про дотримання безпеки, галузевих політик і багато іншого.
(Важко читати це канцелярит? Думаю, що в кращому разі лише кожен десятий зміг дочитати ці пункти до середини).

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

ІТ-відділам у цьому сенсі не пощастило більше за всіх: як би не хотіли закрити очі на таке незрозуміле і таке непотрібне ІТ, а сучасне життя диктує, що все зав'язано на ІТ-технології. Тому на кожному підприємстві щороку укладається близько двох десятків договорів з ІТ напрямку: різні види телефонного зв'язку (внутрішня, місцевий, міжміський, міжнародний, мобільний), оренда інтернету, інші захищені/службові лінії, служба доставки (адже обладнання треба возити), інформаційні системи типи правових, ІТС, бази галузевої технічної документації, обслуговування друкарської техніки, заправка та ремонт картриджів, атестації з різних видів безпеки, подача звітності, криптографія, банківські системи, закупівельні договору з категорійним і дрібним закупівель. Ні в яких інших підрозділах немає такої кількості укладених витратних договорів. Нам же ще «пощастило» займатися метрологією… І якщо прочитати всі вимоги, що виставляються на співробітників, і подумати скільки паперу і підписів потрібно зібрати за кожним договором, з дотриманням всіх процедур, і врахувати, що звітні документи за договорами з'являються кожен місяць, то стане ясно, що ІТ-відділ змушений цілий рік займатися зовсім не ІТ, а плануванням, договорами, закупівлею, бухзвітністю, навчанням, атестацією та іншим оформленням Дуже Важливих Документів.

Здається, мова раніше йшла про ІТ та розробці? Перечитавши цю главу, неможливо знайти вимог, які дійсно ставилися б до інформаційних технологій та/або розробки. Можливо, справа в тому, що ІТ та розробка — це різні речі, і якщо б дійсно існував відділ розробки або відділ інформаційних систем, то в них усе було б краще? Ні, звичайно ні. З'явився рік тому відділ розробки програмних систем має рівно півтора людини з «програмістських» минулим. Вечорами цей півтора людини пише для замовника ІС, а вдень працює в «полі», роблячи заміри на обладнанні. Його теж напружують всій вищеописаною бюрократією, плюс його дуже сильно стосується бурхлива діяльність з безпеки праці. Нас — рідше, ми «в полі» тільки в піки робіт і при всяких змінах мережевої інфраструктури. Але теж виконуємо всі норми охорони праці: робота на висоті, робота всередині електроустановок, дотримуємося норми енергетичної галузі з повним оформленням супутніх допусків та інших документів… Безпека — це дуже добре, але коли на її паперове оформлення йде прорва робочого часу працівника ІТ-відділу, я вважаю, що це перебір.

Загалом, у мене склалося враження, що уся виробнича діяльність регулюється людьми, які орієнтуються в будь-якій своїй вузькій області, і нав'язують свої вузькі орієнтири на підконтрольні підприємства і працівників. На нас звалюють вимоги з усього чого завгодно: від закупівель до енергетичних політик іспитів з електробезпеки до вимог законодавства у сфері якості та екології, від норм енергетики до інформаційного взаємодії з представниками правоохоронних органів. Я чесно намагаюся все це барахло розуміти і вчити. Але я кожен раз з жахом чекаю чергових іспитів. Раптом я не відповім на питання про технологічних системах нормальної експлуатації і системах безпеки РВ, або щось не те скажу про технологічні системи підтримки ВХР? А якщо я неправильно перерахую основні повноваження органів державної влади РФ, суб'єктів РФ і органів місцевого самоврядування у сфері відносин, пов'язаних з охороною навколишнього середовища? Або, що гірше того, забуду вимоги до обов'язкового страхування відповідальності за заподіяння шкоди при експлуатації небезпечного виробничого об'єкта? Я дивлюся на весь обсяг документів, які вписуються в посадові та виробничі інструкції, і не розумію: невже ніхто не бачить всього цього маразму в кількості вимог? Я не знаю жодної людини, який здатний запам'ятати такий обсяг інформації.

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

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

І тепер, коли мені сорок, я задаюся питанням: а скільки я ще зможу протягнути в такому режимі? В кого я перетворюся через п'ять, десять років? Мені нудно спілкуватися зі своїми колегами, як з молодими, так і у віці: мені з ними нема про що говорити, у мене інша сфера інтересів. А те, що оточуючі мене співробітники називають інформаційними технологіями, до теперішнього ІТ має дуже віддалене відношення. І, чесно кажучи, яке мені діло до строків узгодження основних видів звітних документів, що оформляються за результатами готовності на об'єктах електро-енергетичного виробництва?

Післямова
Я довго думав, чи публікувати цю статтю. Якась вона вийшла сумна і безнадійна, прям криза середнього віку. Але я сподіваюся, що такий настрій більше вийшло внаслідок когнітивного дисонансу: у всіх засобах масової інформації розповідають про те, що розвиваються інформаційні технології, що як ніколи затребувані IT-фахівці, як все це важливо і складно. Фактично ж 95% робочого часу від мене потрібно тільки вміння читати і писати канцелярит.

Але зараз я зрозумів, що публікацію робити обов'язково буду.

Сьогодні я сиджу, і усуваю порушення, виявлені в моєму відділі. Вийшли нові правила ведення виробничих журналів. Журнали мого відділу, через недогляд, прошиті синтетичною ниткою, а потрібна груба нитка. І тепер журнал прошивається через три отвори, а не через два. Це дуже важливо. А головне — зрозуміло перевіряючим органам.



Я відчуваю себе середньовічним писарем: у мене ті ж амбарні книги, шило, сувора нитка, залізні ножиці, ручка для письма та указ Боярської думи. Це те, з чим повинен вміти працювати фахівець відділу інформаційних технологій. А не з цими вашими комп'ютерами. Ось і все, що я хотів розповісти.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.