Здравствуйте, Dufrenite, Вы писали:
D>Народ, тут мне сказали, что я не алгоритмист и вообще... D>Объясните плиз, что это за разновидность такая?
Алгоритмист — это тот, кто может (должен), например, сказать "мы можем сейчас это временно реализовать со списком, но надо будет через год переделать на дерево, потому что при нагрузке в миллион записей это окажется основным узким местом". Или, например, такое: "Эта задача в наших условиях разрешима только методом A, но у него при хорошем среднем времени — худшее время недопустимо, поэтому его работу надо вынести в отдельный тред."
Знания и умения, требуемые от алгоритмиста — хорошее знание типичных алгоритмов решения задач как общего плана, так и в своей области; умение их описать на языке, понятном кодеру; умение говорить с архитектором о своём уровне реализации; умение переводить общеархитектурные решения на свой уровень, определяя, что надо сделать и как это можно делать... Обычно ему требуется высшее образование по специальности; что такое O(N^2) он должен понимать во всех деталях даже разбуженным посреди ночи, а умение отличать NP-полные задачи от не-таковых — весь рабочий день;)) Ну и, разумеется, ему недопустимо путать массив со списком, а AVL-деревья с R-деревьями;))
Окей, спасибо. Буду знать.
Хотя вообще-то всегда считал, что связка такая:
Бизнес драйвер -> Архитектор -> Кодер
И названные вами обязанности распределяются между архитектором и кодером.
Что-же: век живи — век учись...
Здравствуйте, Dufrenite, Вы писали:
D>Здравствуйте, netch80.
D>Окей, спасибо. Буду знать. D>Хотя вообще-то всегда считал, что связка такая: D>Бизнес драйвер -> Архитектор -> Кодер D>И названные вами обязанности распределяются между архитектором и кодером. D>Что-же: век живи — век учись...
Формально, кодер может не понимать ничего из того, что нужно алгоритмисту. Ему сказали вызвать tree_open() — он и зовёт. Аналогично для архитектора — его дело решить "вот тут надо поставить промежуточного агента" или "не разделив X и Y мы не получим масштабируемую архитектуру".
В варианте где обязанности алгоритмиста распределяются между архитектором и кодером — просто не выделена одна существенная промежуточная роль. Кстати, её "распределяемость" показывает, что она таки есть:)
Но в этом всём есть один существенный момент — полный комплект ролей, выделяемых и формально, и административно (вплоть до отдельных людей или отделов) — допустим, применим и оправдан далеко не всегда. На практике значительно чаще роли совмещаются, чем детально разделяются. И выделение отдельного алгоритмиста — вариант, насколько я вижу, весьма редкий. Чаще это считается "свойством" того или иного программиста: например, Вася алгоритмист, ему можно задачу поставить чуть менее детально, а Петя — нет, он умеет только кодить и какую реализацию он выберет — зависит от угла наклона левой пятки в момент просыпания, поэтому за него должны это решить или Вася, или архитектор.
Здравствуйте, netch80, Вы писали:
N>Здравствуйте, Dufrenite, Вы писали:
D>>Здравствуйте, netch80.
D>>Окей, спасибо. Буду знать. D>>Хотя вообще-то всегда считал, что связка такая: D>>Бизнес драйвер -> Архитектор -> Кодер D>>И названные вами обязанности распределяются между архитектором и кодером. D>>Что-же: век живи — век учись...
N>Формально, кодер может не понимать ничего из того, что нужно алгоритмисту. Ему сказали вызвать tree_open() — он и зовёт. Аналогично для архитектора — его дело решить "вот тут надо поставить промежуточного агента" или "не разделив X и Y мы не получим масштабируемую архитектуру".
N>В варианте где обязанности алгоритмиста распределяются между архитектором и кодером — просто не выделена одна существенная промежуточная роль. Кстати, её "распределяемость" показывает, что она таки есть
N>Но в этом всём есть один существенный момент — полный комплект ролей, выделяемых и формально, и административно (вплоть до отдельных людей или отделов) — допустим, применим и оправдан далеко не всегда. На практике значительно чаще роли совмещаются, чем детально разделяются. И выделение отдельного алгоритмиста — вариант, насколько я вижу, весьма редкий. Чаще это считается "свойством" того или иного программиста: например, Вася алгоритмист, ему можно задачу поставить чуть менее детально, а Петя — нет, он умеет только кодить и какую реализацию он выберет — зависит от угла наклона левой пятки в момент просыпания, поэтому за него должны это решить или Вася, или архитектор.