Отправляет email-рассылки с помощью сервиса Sendsay

Килограмм килобайтов

  Все выпуски  

Килограмм килобайтов


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

Выбор технологии для нового проекта.

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

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

Сторона вторая - функциональное назначение технологий. Все-таки полностью универсальных средств не существует. Конечно, на ассемблере можно сделать все, и программу типа "Hello, World" и вычислительные кластерные системы, но подобный подход, скорее всего, не будет оптимальным. Т.е. вторым аспектом выбора технологии можно считать изначальную функциональную предназначенность.

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

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

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

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

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

P.S. Я специально не стал упоминать конкретные примеры, чтобы в обобщенном виде описать различные аспекты поставленной задачи.


В избранное