Илья Ермаков писал(а):
Касательно идеи "инструмента под задачу" - есть ещё очень веское контр-соображение.
Чем меньше разных инструментов коллектив использует, тем больше аккумуляция базовых средств. Все библиотеки, компоненты, решения начинают "играть" вместе, а не распыляются.
Это же касается, видимо, не только коллектива, а отрасли в целом - слишком уж много разных инструментов распыляют человеческие усилия и опыт.
Зависит от того, чем собственно коллектив занимается. Если коллектив, как часто бывает, пилит/поддерживает/развивает допустим некий распределенный сервис. Годами. Т.е. это не сиюминутная задача, а задача с характерным временем порядка 5-10 лет. То да, набор инструментов будет узок. Например тот же erlang + C для написания портов да драйверов (в терминах ерланга, а не оси, это другие порты и драйверы).
Задача по сути одна, и инструмент по сути один. Логично, правда ведь?
Если сегодня я пишу софтфон под симбиан (это С++ без вариантов), потом пишу гейт xmpp<->smpp, потом пишу компилятор/анализатор кода, потом тот же софтфон под андроид, а потом уже его же под винду, вопрос -- как тут обойтись одними и теми же инструментами?
И нужно ли? Что тут общего?
Да даже взять три софтфона: под симбиан, андроид и винду -- между ними (несмотря на общие используемые протоколы) общего нет практически НИЧЕГО. Разные API, разный GUI, разное даже поведение и интеграция в систему. Нет, конечно можно выпендриться и протащить там везде свой собственный SIP-стэк. В симбиане проблем с этим будет поменьше, в андроиде побольше. Но можно. Однако качество решения в этом случае будет неизменно хреновым. Вне зависимости от затраченных усилий.
Задачи разные, и инструменты разные.
Важно найти баланс между первым и вторым случаем. Быть может я не точно вначале выразился. Задача -- это не сиюминутная задача. Это задача стратегическая. А инструмент это не один инструмент, это набор инструментов. При этом не следует бояться экспериментировать с новыми инструментами. Обычно в приличных конторах есть спец. отдел который как раз экспериментирует, оценивает перспективность того, или иного документа.
Догматизм вроде "всегда и навеки используем только Borland C++ Builder!" ни к чему хорошему не приводит. Я это проходил. Вместо "Borland C++ Builder" можно подставить что угодно. BlackBox, erlang, C#, brainfuck.