Русский
Русский
English
Статистика
Реклама

Разрабы работают медленно и дорого и люди считают нас лентяями. Просто в разработке всё сложно

Люди не изиндустрии вечно не понимают программистов: что они там такое сложное делают, если видно только две кнопки? Что за непонятные слова говорят? Почему так много получают?


Вместе спарнями изподкаста Мы обречены решили сэтим разобраться и запустили совместную рубрику, где будем объяснять, почему вразработке всё так сложно. А для тех, кто любит читать, а не слушать, парни написали эту статью.



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


Я часто ловлю себя натаком. Но дальше происходит одно и то же. Начинаю разматывать это вголове, вспоминать, какая работа была проделана. Какие нюансы есть впроцессе, который мы тут автоматизируем. Какие, казалось бы, нерешаемые проблемы мы разрулили. И чем больше думаю, тем больше убеждаюсь да то, что мы вообще дошли доэтого этапа, это уже небольшое чудо.


С программным обеспечением всегда так. Наповерхности кажется, что мы делаем простые штуки. Но насамом деле оно невероятно сложное. Проблема втом, что сложность станет видна, только когда ты погрузишься вовсе технические нюансы.


Нам всем приходится работать сне-инженерами, дляних вся сложность существует только на наших словах другого способа осознать её уних просто нет. И, конечно же, нам вечно не верят. Как будто нам не хватает собственного синдрома самозванца?!


Я много раз пытался доносить, насколько сложна каждая мелочь внашей работе, но вбольшинстве случаев терпел неудачу. Поэтому стал просто отшучиваться.


Почему ты всегда всё делаешь вдва раза дольше, чем обещаешь?


Потому что создатели Agile не верят, что можно делать что-то больше недели. Вот и говорю, вочто поверят.


А если серьёзно: детали не видны изначально, всегда кажется, что сделать надо немного, и получится быстро. Уже впроцессе работы натыкаешься накучу нюансов, иногда, пока делаешь задачу, требования меняются. Пока работаешь ты надтем же проектом работают ещё пять человек, и часто их изменения означают дополнительную работу длятебя.


Бывает, что впроцессе работы вообще понимаешь задачу выполнить невозможно. Но самая жесть втом, что очень часто ты понимаешь работы надзадачей вагон, но если скажешь это менеджеру, он будет требовать, чтобы ты объяснил ему, почему. А это ещё одна гигантская задача объяснить так, чтобы было понятно и не выглядело, как отмазка.


Зачем ты мудришь?! Сделай, чтобы просто работало!


Я могу. Но ты же потом придёшь, и скажешь, что открыл её скалькулятора, и там верстка поехала работа не выполнена.


А если серьёзно: человек, который просит сделать просто, чтобы работало, подразумевает подэтим буквально сотни подзадач и условий, которые поего мнению сами собой разумеются, и заложены вкомпьютер. Реальность, конечно, устроена абсолютно иначе.


Мы никогда не можем просто взять и сделать то, что просят. Всегда нужно строить штуку, которую будет легко менять. А чтобы её было легко менять, код должен быть более универсальный. Это требует серьёзного усложнения. Причём, чем больше возможностей кизменениям ты хочешь заложить, тем больше не линейно, скорее геометрически труда тебе придётся вкладывать.


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


И тогда я привожу свой опыт, опыт всех кого я знаю, опыт всей индустрии. И эти опыты говорят одно. Требования всегда меняются. Вот вообще всегда. И меняются намного сильнее, чем предвосхищают самые опытные строители фабрик. Если предложить не-разрабу изобрести концепцию приложения, то после того, когда он её тебе отдаст и ты начнешь её делать он уже наследующий день пришлёт тебе список изменений вконцепте.


Это так работает, даже когда вас всего двое. Когда у тебя нарынке продукт, которым пользуется миллион человек и каждый изних опосредованно участвует ввыработке требований можешь вообще забыть обидее, что утебя вкодовой базе будет хоть что-то устойчивое. Миллион пользователей, аналитики и продакты генерируют идеи соскоростью света. Всё это надо воплощать так, чтобы не повалилась обратная совместимость. Чтобы все новые идеи заработали, а встарых всё осталось как было, хотя код старых и новых идей связан между собой. И чтобы поправить водном месте, придётся затронуть другое.


Разработчики думают наперёд, и это удорожает разработку вразы. Но если бы не думали, подорожало бы вдесятки десятков раз.


Почему вы просто не возьмёте и не придумаете уже один нормальный язык, на котором все будет работать?


А почему люди не начнут говорить на одном языке?


А если серьёзно: унас тысячи классов задач. Разные языки по-разному подходят подразные задачи. Унас миллионы очень разных разработчиков. Часть изних отлично подойдёт, чтобы делать простенькие приложения, а часть чтобы пилить рокет саенс. Вторым нужен очень сложный язык, иначе получится непроизводительно. А первые такой просто не смогут освоить. А нужны-то и те и другие!


Есть причины и поглубже. Наши языки программирования отлично подходят, чтобы описывать формальные системы вроде математических уравнений. Процессы людей и их делишек они описывают очень плохо. Потому что языки программирования сами посебе формальная система, причём она куда беднее, чем те же человеческие языки. Ненавижу эту отвратительную метафору, но программирование условного Doom наC++ это натягивание совы наглобус.


Вязыке нет терминов и понятий воюющих между собой живых существ. Машина будет знать только то, что внесли внеё программисты. Если пуля врезается встену, она останавливается. А если стена резиновая, то отскакивает. А если пластиковая, прошибает насквозь. Сколько возможных материалов, толщин и вообще конфигураций стен вообще может существовать? Сколько изних должны описать мы? Мы пишем облегчённое подобие мировой физики, чтобы не описывать все кейсы вручную, но даже это подобие бесконечно сложное. Если вы хотите, чтобы увас была стрелялка, похожая нареальность увольняйте программистов, и нанимайте Богов. Эти ребята потянут физику такого качества.


Опять баги! Почему вы не можете писать без них, неучи?


Баги это чтобы бизнес не подумал, что сможет обойтись безнас.


А если серьёзно: баги это почти всегда ошибка не только разработчика, это ошибка системы. Баг это когда у нас что-то работает не так, как нам кажется, оно должно работать вэтот момент. Вследующий момент будет казаться по-другому. И сколько людей, столько и видений, как оно должно работать.


Витоге это безвыигрышная ситуация, где влюбом ПО утебя всегда бесконечное количество неправильных, счьей-то точки зрения, поведений.


У большинства изнас понесколько десятков разных проектов закарьеру, мы, конечно, стараемся вникать впредметную область, но никогда не сможем гарантировать, что действительно её понимаем. А те, кто её понимают, никогда не смогут прочитать наш код. Это создаёт разрыв, и чем сложнее процесс, тем он больше. Мы бы может и учли большую часть возможных ошибок, если бы доконца понимали, что именно делаем. Но мы ведь не понимаем дляэтого нам надо быть большими экспертами вдвух несвязанных областях сразу. А жизнь слишком коротка, чтобы даже одно дело изучить как следует.


Какой ещё новый язык? Какой ещё современный фреймворк? Нам не доигрушек! Почему не можете просто писать начём есть?


Работа должна приносить удовольствие. Мы хотим поиграть вигрушки.


А если серьёзно: все новые инструменты появляются только длятого, чтобы решить проблему, которая не решена встарых. Мы боремся задесятые доли процента оптимизации, и вцелом, это вообще единственный способ борьбы схаосом роста требований и индустрии. Мы отвечаем этому хаосу мощью и универсальностью своих новых инструментов. И надистанции видим подход работает. Чтобы сделать простое десктопное окно настаром WinApi, надо было написать сто строк кода. А сейчас одну.


Индустрия растёт и развивается бешеными темпами, унас появляется куча инструментов, которые, поидее, должны облегчить наш труд. Так вот, даже чтобы просто неплохо знать все инструменты, которые тебе нужны вработе, ты уже должен где-то отыскать 40часов всутки. Унас их конечно нет, поэтому можете быть уверены ни один изваших программистов не знает доконца даже те штуки, которые использует, пока делает те штуки, которые вы ему сказали. Пропускная способность человеческих мозгов сейчас недостаточно хороша, чтобы поддерживать возможность быть хорошим программистом. Наши мозги не подходят дляэтой работы, но другого варианта унас тоже нет.


Почему программисты так много получают? Ходите, кофе пьёте! За что вам платят!?


Потому что можем.


Но если серьёзно: потому что простые вещи, которые мы так долго и так плохо делаем, автоматизируют человечеству процессы, которые стоят намного дороже, чем отделы программистов. Это просто экономика. Даже 1С бухгалтерия автоматизировала человеческий труд намногие миллионы долларов.


А кроме автоматизации мы ещё делаем вещи, которыми люди буквально живут.


А если ещё серьезнее: потому что унас, блин, сложная работа. Очень сложная. Когда ты только вкатываешься виндустрию, ты должен учиться вообще всё свободное время. Большая часть этих знаний наиностранном языке выучить который некоторые уже считают зарыночный навык.


Ты как слепой котенок тыкаешься виндустрию, не понимаешь, что изучать, как, накаком уровне. Башка идёт кругом отколичества вещей, которые туда закачиваешь. Причём впрограммировании теория не работает, пока сам не сделаешь всё руками, а это долго и сложно.


Мы любим жаловаться, что джуны ничего не знают, но заэтим ничего уже есть гигантское количество знаний и нейронных связей. Досвоей первой работы я год корпел надконсольными шахматами, которые писал, чтобы изучить С++. Там было несколько тысяч строк кода, они работали каким-то чудом, потому что страшно толстого талмуда Программирование наязыке С++ не хватило, чтобы ответить даже намалую часть моих вопросов, как делать. Форумы, стековерфлоу, разные версии компилятора, стандарты, разные IDE те дни были большим мучением длямоих мозгов.


Я вообще справился сэтим только потому, что было очень интересно. Потом произошло чудо, и я получил первую работу программистом. Когда начинаешь работать, учиться становится легче. Но приэтом, когда я приходил домой, я не сидел и не смотрел сериалы сженой, я продолжал работать и учиться.


Мы все проходим большой и сложный путь и, если отбросить всю иронию, делаем реально сложные дорогие вещи. Если форма делается две недели, а не день, значит были причины. И обывательской интуиции не всегда хватает, чтобы их понять.

Источник: habr.com
К списку статей
Опубликовано: 28.10.2020 18:06:09
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании авито

Управление разработкой

Карьера в it-индустрии

Мнение

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru