beldmit: (Манул)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2012-06-10 10:01 pm

Метапрограммистское

Тут коллега [livejournal.com profile] lodin разродился формулировкой "Я программист. Я не хочу ничего решать. Я хочу решать задачку!". Да, ответ на фразу про девочку, которая не хочет ничего решать, а хочет платье. Я про эту формулировку немного подумал.

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

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

В общем, решать (в смысле второй части фразы) лучше те задачки, которые ты поставил себе сам, хотя бы частично. И без социальности при этом никуда. А тут уже решать (в смысле первой части) придется.

[identity profile] naja-naja.livejournal.com 2012-06-10 06:23 pm (UTC)(link)
Угу. Он тебе: "Скажите как - я сделаю." А как я ему скажу как, если все формулы внутри зашиты? Так что только откручивать гаечку и смотреть, не отвалится ли ж..

[identity profile] city-rat.livejournal.com 2012-06-10 08:09 pm (UTC)(link)
Ну дык для этого есть специальные, никем не обученные и очень дорогостоящие люди - аналитики.

[identity profile] beldmit.livejournal.com 2012-06-10 08:58 pm (UTC)(link)
Они, конечно, для этого. Но аналитики, как правило, не знают, что там в коде внутри - а иногда это существенно.

[identity profile] city-rat.livejournal.com 2012-06-10 09:03 pm (UTC)(link)
На код должна быть спека. А чтобы внутри хни не было - QA.

[identity profile] alexejv.livejournal.com 2012-06-10 09:51 pm (UTC)(link)
Хехе, одна из самых часто встречающихся проблем на практике: "должно быть". Меня еще в школе научили, что если взять в качестве аксиомы неверное утверждение, то можно доказать любую чепуху :-). В последних моих проектах постоянно на этом прокалываются, но с кактусов не слезают.

[identity profile] city-rat.livejournal.com 2012-06-10 09:54 pm (UTC)(link)
"В теории нужно чистить зубы каждый день, но количество людей с гнилыми зубами доказывает абсурдность этого утверждения".

[identity profile] alexejv.livejournal.com 2012-06-10 10:16 pm (UTC)(link)
Я скорее про такое: "в теории все люди чистят зубы, поэтому стоматологи нам в этом проекте не нужны, а людей которые будут жаловаться на зубную боль будем посылать к окулистам"

[identity profile] icamel.livejournal.com 2012-06-11 07:17 pm (UTC)(link)
вот это и есть любая ерунда. доказать можно только то, что не противоречит аксиоме. Это из лжи следует что угодно, а аксиома не является ложью определению. Другое дело, что система аксиом может быть от другой реальности, но это не делает аксиому неверным утверждением.

[identity profile] alexejv.livejournal.com 2012-06-10 09:04 pm (UTC)(link)
чаще всего получается примерно вот так:

Image

[identity profile] city-rat.livejournal.com 2012-06-10 09:18 pm (UTC)(link)
(невозмутимо)

Поэтому аналитики и стоят дорого, что их не может заментить мама.

[identity profile] alexejv.livejournal.com 2012-06-10 09:44 pm (UTC)(link)
:)

[identity profile] alexejv.livejournal.com 2012-06-10 09:53 pm (UTC)(link)
Имхо этот очень полезное качество для менеджера или тим-лида, понимать, что программист не хочет (и часто не будет) решать.

[identity profile] u-uka.livejournal.com 2012-06-11 06:35 am (UTC)(link)
(*печально*)
А потом аналитики мутируют в таких занудных существ, которые в магазин посылают с напутствием "возьми 1 литр молока, 3% жирности. Нет, цвет пакета на ТТХ молока не влияет. Оно стоит на третьей полки справа у входа, между сметаной и сливками. И посмотри, чтоб пакет не был дырявым. Обрати внимание на дату годности, она должна быть больше, чем сегодняшнее число."
Нормальные люди где-то на третьем предложении начинают вопить - "не считай меня идиотом!!!!"
А прогерам ничего, нормально...

[identity profile] astarsan.livejournal.com 2012-06-11 08:55 am (UTC)(link)
Потому что в реальной жизни "common sense" работает.
А после 10 лет в разработке ПО начинаешь понимать что в большей части задач "common sense" и рядом не валялся.

[identity profile] beldmit.livejournal.com 2012-06-11 08:57 am (UTC)(link)
Как "мутируют"? Разве вы такими не рождаетесь?

[identity profile] u-uka.livejournal.com 2012-06-11 12:34 pm (UTC)(link)
(*еще более печально*)
Угу. нас клонируют в секретной лаборатории. Вот и прогеры в этом уверены...

[identity profile] raydac.livejournal.com 2012-06-10 08:35 pm (UTC)(link)
вообще то он прав имхо, задача программиста решать задачки, а ставить задачки это задачи бизнеса.. но часто встречается дурацкая ситуация когда ты устраиваясь программистом почему то должен придумать и задачу, это ни в коем случае ненормально имхо

[identity profile] beldmit.livejournal.com 2012-06-10 08:57 pm (UTC)(link)
Да не придумать ты ее должен. Понять ее надо.
lodin: A bearded hacker in a hat (Default)

[personal profile] lodin 2012-06-11 01:17 pm (UTC)(link)
Оу. Ну вообще-то это было жизненное наблюдение, а вовсе не демонстрация принципиальной позиции, т.е. я с данным постом в целом согласен. Хотя задачку решать, конечно, приятнее.

[identity profile] simonov-dv.livejournal.com 2012-06-16 08:01 pm (UTC)(link)
В общем по результатам работы в нескольких крупных компаниях, после которых удалось самому с нуля собрать команду для активного и успешного стартапа могу сказать следующее:

1. Программист - это тот, кто прежде всего понимает полностью контекст (обёртку) задачи, предпосылки, последствия. Все остальные - кодеры.
3. Программерский коллектив очень удачно можно сравнить с чайником кипящей воды: все взаимодействуют со всеми, знают или по крайней мере слышали подоплёки всех аспектов всей разработки. Такой коллектив без управления может справится с любой проблемой, исключая планирования тектонических уровней. С грамотным управлением - свернёт горы нахрен и перестроит тектонические плиты.
4. Что происходит, когда кто-то хочет обособиться от всех и не знать ничего? Это как влить в кипящий чайник стакан холодной воды, - аффектится на весь коллектив. Такой коллектив не готов решать серьёзные задачи до тех пор, пока чайник снова не закипит.

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