понедельник, 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? То-то же.

среда, 17 апреля 2013 г.

Дистанционное обучение

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

Ключевой проблемой в этом тренде является то, что online-обучение с помощью ИТ- технологий слепо копирует offline’новые технологии обучения. Потенциал ИТ при таком подходе, фактически, не задействован. Проблема усугубляется тем, что учителя не знают о возможностях ИТ, а ИТшники не знают как разрабатывать новые методики преподавания. Типичный сценарий “разговора слепого с глухим”. Что в результате получается?

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

И нигде: ни у нас, ни за границей чего-то нового, прорывного в области обучения не видно. Лучше книги с тетрадью не придумано еще ничего. Поэтому, пусть “умные дядьки” умничают и дальше, а тому, кто хочет заняться самообучением настоятельно рекомендую учиться традиционными способами: книга, тетрадь. Если надо, то: репетитор, заочное обучение, курсы.