понедельник, 26 августа 2013 г.

Планирование разработки

Типичный сценарий из жизни программиста: свои пожелания пользователь излагает последовательно, по мере осваивания нового функционала. В стиле “…А еще бы хотелось…” и далее новый список “хотелок”. Это широко распространенная практика, когда требовать с пользователя техническое задание бесполезно.

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

  • “Латать” текущую архитектуру “заплатками”, да “подпирать костылями”, чтобы как можно быстрее выполнить задание. Это понравится пользователю, но код превратиться в “лапшу” и с ним станет невозможно работать.
  • Переделать архитектуру, чтобы она соответствовала возросшим требованиям пользователя. Это хорошо для развития программы, но пользователь будет недоволен медленными темпами работ.

Другой вариант: заранее продумывать возможные направления развития программы и  закладывать в архитектуру максимальные возможности. И тут тоже программист сталкивается с неприятностями:

  • Если изначально делать “по уму”, то это долго и пользователь будет недоволен.
  • Более того, окажется, что 90% возможностей, заложенных в новую архитектуру, останутся невостребованными.

Спасение есть! И оно под боком. Наверняка читатель слышал такое высказывание: “Думай глобально, действуй локально”. Соблюдение этого принципа помогает избежать описанных сложностей. Как это выглядит на практике?

  1. Надо описать задачу “максимум” и сделать набросок соответствующей идеальной архитектуры программы. Это то, к чему надо будет стремиться постоянно.
  2. При написании каждого класса, функции представлять себе какое место она займет в той “воображаемой” архитектуре программы.

Т.е., программируя для пользователя текущую небольшую задачу, надо структуру кода выстраивать так, чтобы он бесшовно лег на скелет вашей идеальной архитектуры. Одна функция за другой и вот у вас уже на скелет “наросло мясо кода”. Если все функции выполнены были “с прицелом” на будущую архитектуру, то заставить работать их вместе не составит труда.

В результате:

  1. Пользователь получает новый функционал быстро и остается доволен.
  2. Архитектура программы не рассыпается.
  3. Возникает синергетический эффект при стыковке различного функционала, изначально разрозненно разработанного. Т.е. открываются новые возможности использования программы.
  4. В любой момент времени программа остается работающей, т.к. в ней не требуется проводить глобальных переделок. Вы всегда можете быстро выдать пользователю новый функционал, а не оправдываться в том, что вы затеяли большие переделки.

Вот и получается: “Думай глобально, а действуй локально.”

суббота, 3 августа 2013 г.

Об аналитиках

Android

Давным-давно, на заре 2000-х годов я прочитал статью какого-то зарубежного аналитика. Как раз MS запустила Live search, и вступила на поле деятельности Google. Аналитик говорил, что конкуренция между ними неизбежна и Google должна будет проникнуть на десктопы. В те времена было тотальное засилье ОС семейства Windows, и о таком даже глупо было думать. По крайней мере, мне так казалось.

Аналитик, понимая эту ситуацию, предложил Google выпустить ОС для КПК. Закрепиться, и уже с КПК проникать на десктопы. Не знаю, почему я запомнил именно этот прогноз. Прошло примерно 10 лет с тех пор, и что же мы видим?

В статье “В России Android стал популярнее Windows XP” по графику четко видно, что Android не просто догнал Windows XP, а еще у него динамика роста существенно выше, чем у Windows 7. В конце еще приписочка: “…осенний релиз Android 5.0… будет ориентирован именно на завоевание сегмента ноутбуков.” Т.е. ситуация развивается так, как предсказал тот аналитик.

Действительно, ведь уже и десктопами на Android не удивишь- много выпущено моделей. Похоже, для ОС Windows это уже реальная проблема. А кто бы мог подумать об этом 10 лет назад?

Skype

В те же далекие времена вышла первая версия Skype. Я помню, какой фурор был вокруг этой программы. И я, сидя на постоянно рвущейся модемной линии, удивлялся всем этим восторгам. Skype даже на распрекрасном модеме в 56Кб еле работал- какие там у него могут быть перспективы? Мучение же одно! Прошло 10 лет и Skype, действительно, стал очень популярным.

Заключение

С тех пор прогнозы и то, что вышло в результате у меня вызывает пристальный интерес. В этом блоге публиковались неоднократно прогнозы. Например: Будь в тренде!- это прогноз от IBM. И, кстати, он уже начинает сбываться. Читали Hadoop as a Service? То-то же.