Владимир Мельник 11 сентября 2019

Почему программировать сложно

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

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

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

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

Возьмем, например...

Да возьмите кого-угодно, кроме математика, философа или программиста (наиболее прикладное сочетание первых двух), и вы будете иметь дело с чем-то законченным, чем-то, что имеет предопределенные границы. В случае же с программистами, таких границ нет. Роберт Мартин, например, часто упоминает что то, что программа делает сейчас, – это только вторая по важности вещь. Первая же вещь – то, что будет уметь программа завтра.

Мы говорим о жизни, об эволюции и адаптации – задачах, которые природа решает статистическими методами вроде "вброшу побольше разнообразия, и, может быть, что-то выживет". Мы же не играем в кости и пытаемся противопоставить этой естественной мудрости (тому, как оно есть) странные инженерные и научные подходы. В итоге люди разочаровались в таких подходах, совокупно именуемых Waterfall, и решили перейти к чему-то подобному Agile.

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

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

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

В чем я вижу выход, так это в том, чтобы пытаться вообще ничего не строить, а если что-то строить, то очень маленькое, необратимое, должное, необходимое для нашего выживания и покоя. Это уже не Agile, это аскеза. На практике стоит уходить от абстракций и сложных композиций, просторных рассуждений. Нужно сдвинуться с точки построения миров в сторону выпечки булочек. Решения, что мы создаем должны быть просты, как булочки. Тогда они будут закончеными, и ими можно будет насладиться.

P.S. Эту и другие мои публикации об IT можно найти в Telegram.

МЕРОПРИЯТИЯ

Комментарии

 
03 октября 2019

Так и не понятно почему так сложно программировать! Узнал об интересах автора к мифологии. Много философии и рассуждений о незаконченности... Где о программировании? )) Человеческая лень всему проблема, хочется сделать одно и шоб в нем было и сан узел и даже встроенный МРТ а потом, а потом еще косметичка, а еще столярный стол, мало ли... вдруг я захочу стул и тот шоб оно сооружалось само! ))) Программирование является обслуживающей системой человеческого бытия. которое безгранично в своих стремлениях объять необъятное, булочник всего-то печет булочки, в составе теста нет философии, хотя пытливый ум и там её найдет! )))

23 сентября 2019

Главное чтобы было интересно, тогда все сложности их преодоление будут приносить только радость и удовольствие!))

16 сентября 2019

Можешь вообще не строить Вавилонской башни, кто Тебя заставляет? Более того, можешь даже не трогать бедных булочников, которым так же как и всем остальным, в условиях современности, приходится автоматизировать процессы, а так же заниматься своими вавилонскими башнями, которые так же стоят в основании более древней башни из крови и пота.

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

12 сентября 2019

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

12 сентября 2019

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

 
12 сентября 2019

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

"В этом чудовище мы должны разглядеть самих себя, ведь наш труд есть отражение нас самих, и ужаснуться" - через это предложение проглядывает истина!

отлично, чувствуется жизненый опыт и наличие мысли, приятно читать

11 сентября 2019

Спасибо за интересную статью

ВАКАНСИИ

Добавить вакансию
Senior DevOps Developer
Лимасол, по итогам собеседования
Senior MLE (SE)
от 5000 USD до 9000 USD

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

LIVE >

Подпишись

на push-уведомления