Чому програмісти заробляють багато, а виконують завдання повільно?

29/10/20 ⏰5,5 хв

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

Чому завдання виконується вдвічі довше, ніж обіцяно?

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

Насправді все дуже ускладнено. І бачити ці нюанси починаєш тільки тоді, коли погрузишся у всі технічні деталі.

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

Як робляться естімейти?

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

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

Навіщо ускладнювати? Просто зроби!

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

Реальність не така!

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

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

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

Чому ніхто досі не придумав одну універсальну мову?!

По тій же причині — чому всі люди говорять різними мовами.

Завдання бувають найрізноманітніші, і кожна мова підходить під окремі види потреб. Розробники також всі різняться. Хтось чудесно порається з простими завданнями й програмами, а хтось може начинити супутник, що значно важче. Другим потрібна складна мова, інакше вони не матимуть релевантного інструменту. А перші таку мову просто не зможуть вивчити. Проте ІТ-ринку цінні обидва види!

Ну чому не можна просто взяти і написати код без багів?!

Баги потрібні для того, щоб тестувальники ПЗ мали роботу! :)

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

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

Чому програмісти так багато заробляють?

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

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

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

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

Насправді програмуванням треба щиро цікавитись і мати бажання досліджувати нові області. Інакше впоратись буде надто складно.

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