суббота, 25 июля 2009 г.

Еще о молодых перспективных специалистах и обо мне

В свое время я писал о молодых перспективных специалистах. За прошедшее время у меня появилось пара наглядных примеров по поводу важности опыта. Изначальный посыл, приведенной по ссылке статьи, таков: да, иметь хороший багаж знаний важно. Но это наиболее важно на старте карьеры, ибо на старте, кроме как знаниями, гордиться больше нечем. С годами опыт набирает силу и больше ценится, чем знания. Оба примера из моей жизни, что называется, испытал на собственной "шкуре".
Первый пример. Без малого 10 лет назад под большой проект писал я ПО. В одиночку, быстрыми темпами. Потом еще несколько лет были мелкие доделки, версия программ доросла до 3.5. И, в общем, все- работало годами без переделок. Я уже уволился оттуда лет пять назад, но, общаясь со знакомыми, периодически интересовался судьбой своих программ. Новые программисты, молодые и горячие, приходили, "махали шашкой": "Кто писал ЭТО?! Да мы сейчас за три дня перепишем..." И далее звучал список самых последних крутых технологий программирования, с помощью которых собирались переписать. Я спрашивал, а что не устраивает? В основном, только то, что использовалась БД Interbase, а не MS SQL Server, что доступ к базе был через специализированные компоненты доступа, а не через ADO, что пользовательский интерфейс был построен на базе стандартных компонент, а не на DevExpress. Когда молодые программисты брезгливо морщили носики от всего этого "старья", то они не учитывали время, когда это все писалось. В конце девяностых MS SQL Server был совсем другим- его Microsoft только купила у Sybase и по функционалу и производительности тот же Interbase делал его как сосунка, DevExpress просто не существовало и т.д. Функциональность устраивала, код не был "лапшой" (все примитивно- обычное накидывание компонент на форму и простая логикой). Реально, желание переписать ПО было не более, чем амбицией молодых перспективных специалистов (см. п. 2 исходной статьи). Я тогда еще, пару лет назад сказал, что ничего из этого не выйдет- там не то, что 3 дня, там реально минимум на год было работы, а с учетом того, что надо было, помимо переписывания, еще и текущую работу выполнять, то и все 3 года занял бы процесс переписывания. Да и смысла не было в этом совсем.
Итак, взмахнув лихо шашками, начали процесс переписывания. Прошло более 3 лет. За это время удалось переписать только несколько вспомогательных утилиток и процесс умер, сошел "на нет" сам собой.
А мое ПО уже десятый год, без существенных модификаций, продолжает работает. С одной стороны приятно, и я испытываю гордость за созданное мною ПО, но с другой-сколько ж ему, горемычному, еще пахать? Давно пора б заменить другим, более современных ПО, уже все разумные сроки эксплуатации вышли. Представьте себе БД, с которой молодые специалисты не хотят связываться из-за брезгливости, работает в автономном режиме уже десяток лет! На время моего ухода там уже было 1,5 млн. записей, а теперь и все 5 млн. будет- ее же никто не чистит, не обслуживает... а только ухудшает.
Да, да, ухудшает. Новые программисты делаеют свои дописки, лоскутами пытаются что-то переписать на своему разумению, налепили сбоку своих компонент, которые им больше нравятся. В результате, проект превращается потихоньку в мешанину разных технологий программирования, разных подходов, постепенно переходя в неуправляемое состояние.
Занавес. Минута молчания.
Второй пример. Примерно год назад разрабатывал я один модуль. Перед до мною возникла проблема, как правильней его сделать. Была фабрика классов с метаданным, нужными этим классам. Возник вопрос, как лучше поступить с метаданными: создавать копию метаданных для каждого объекта заданного класса или ссылаться на метаданные класса, лежащие в фабрике? С одной стороны, если сохранять метаданные в объекте, то можно для каждого объекта в отдельности задавать свой набор метаданных, кастомизировать их, но с другой стороны- это же избыточно. С одной стороны избыточность невысокая- их совсем не много, но с другой стороны, если надо глобально всем сразу изменить метаданные, то удобней, когда используется единый набор метаданных. Хм, выбор явно не однозначный. Логика была за вариант общих метаданных для всех. А потом, если понадобится, то можно и "ленивое" копирование организовать. Но интуиция, сформированная на опыте, подсказывала, что надо копировать. Да это не логично, да, "ленивое" копирование- хороший вариант. Но, все равно, лучше копировать, и точка! Интуиция победила. Т.к. метаданные- это обычная структура, не класс, то копирование их в коде- это одна строчка. Спустя год я реально ощутил, как здорово, что я не повелся на аргументы логики, а прислушался к "дочке" своего опыта - интуиции. Оказалось востребованным динамическое изменение поведения классов, и тут замечательно пригодились метаданные, в которых я стал хранить флаги состояний. Где надо- использую паттерн "декоратор", а где-то обычными if'ами обхожусь, анализируя метаданные.
Вот и сейчас я пишу код, пока не понимая до конца зачем я именно такой вариант выбрал. Я просто чувствую, что так правильней, и знаю, что я не ошибаюсь в своей интуиции.
Гляжу на код более молодых коллег: он правильный, логичный, но... он ошибочный. Раньше я старался подобрать слова, чтобы объяснить, почему лучше сделать по-другому. Это очень трудно сделать потому, что надо суметь объяснить невидимые в рамках нынешнего задания вещи. То, что возникнет через месяц, через год и потребует полного переписывания ныне кажущегося логичным кода. Теперь я уже просто говорю: "Сделай так, приятель!" Без объяснений- придет время, и этот приятель поймет, что я был прав.
Очень хочется стать настоящим гуру в своем деле, чтобы уметь не только чувствовать правильные вещи, но и суметь их убедительно объяснить другим. Показать на примерах по текущему заданию, где ошибка в логике, почему текущая логика тупиковая. При этом имея ввиду вещи, которые реально выходят за рамки текущего задания. Это архисложная задача.
Тут есть другая крайность- увлечься избыточными абстракциями. Такое происходит, когда знаний уже много, а опыт еще их не перевесил. Не сформировалась инженерная культура, нет интуиции. Поэтому нет понимания того, где надо остановиться.
А еще хочется, как настоящему гуру, писать код с "защитой от дурака", код препятствующий его не правильному использованию, и чтобы это был очень простой и элегантный код.
Я стараюсь, я учусь, я набираюсь опыта. Я уже не молодой перспективный специалист, но еще и не гуру. Я в пути.

понедельник, 20 июля 2009 г.

Закулисные игры

Эта тема связана с предыдущей. Как я уже говорил, подбираю теще ноутбук. Вернее нетбук- ей все же в фотошопе не работать, да и "ворд" не нужен. Интернет, почта, видеосвязь, обмен фото- вот и все потребности. Я рассчитывал на что-то вроде EEE PC 900. Т.е. экран дюймов 9-10 (7 дюймов мелко слишком для пожилого человека), кнопочки покрупнее, wifi. В интернете предложений много, но когда реально обзваниваешь, то говорят, что их нет в продаже и не будет- сняты с производства. Обошел кучу магазинов- аналогично. А что же есть?
Есть за 6000 рублей EEE PC 700. Так, для ребенка игрушка- не более. А далее цены уже идут от 10000 рублей и далее с шагом в 1000 рублей легко можно подобрать 2-3 модели. Вопрос. Почему ценовой диапазон 6-10 тысяч рублей, фактически, пуст? Модель EEE PC 900 была очень популярна, и, как раз, полностью закрывала эту нишу кучей своих разновидностей с небольшими отличиями. Явно же ниша "зачищается" от "старья" не просто так.
Моя догадка такова. В предверии выхода Windows 7 подготавливаются новые модели нетбуков, которые как раз заполнят эту нишу.
  1. На основе этой догадки можно предположить, что нетбуки на Windows 7 будут стоить от 7-8 тысяч рублей.
  2. Учитывая, что у всех производителей из продажи исчезли нетбуки ценой 6-10 тысяч рублей, предполагаю тут наличие соглашения с Microsoft. Освобождение ниши от нетбуков на Windows XP призвано расчистить путь новой ОС, с самого старта продаж обеспечив ей хорошие позиции. Под таким ракурсом оптимизм Прянишникова по поводу продаж новой ОС выглядит оправданным.

PS: Пока остановился на Lenovo Ideapad S10- поработал немного на нем, всего осмотрел. Замечательная машинка! Всем рекомендую- и кнопочки хорошие (тексты на них легко набираются), и экран хороший, и корпус добротный. Выглядит очень строго, стильно. По характеристикам для офисной работы, как говорится "выше крыши". Но он стоит 13-15 тысяч рублей. Хотелось бы попроще и подешевле- не переплачивать за ненужные "понты". Ну зачем для общения 60 Гб винчестер? Вот как у EEE PC 900 винчестера на 16-20 гигабайт хватило бы "за глаза". Если кто знает, где в Москве реально можно купить новый нетбук за 7-8 тысяч рублей - подскажите мне, пожалуйста!

Мы живем в прекрасное время!

На днях разговаривал с приятелем. Сказал, что собираюсь теще купить ноутбук, чтобы мы могли с ней постоянно связь держать по skype. И не просто связь, а видео. Чтобы она видела внучку, чтобы внучка общалась с ней. Мы посчитали с женой, что такой вид связи окупится чуть меньше, чем за год, при этом, общение будет более интерактивное, качественное. На что он мне сказал, что уже год так общается. Оглянувшись вокруг, я увидел, что многие из моих друзей, знакомых уже общаются с родственниками по скайпу!
Что же удивительного спросите вы?
  1. У многих родственники живут не то, что в небольших районных центрах, а прямо таки в глухих деревнях. Да, там интернет дорог, но все равно такой вид связи дешевле обычного телефона.
  2. Компьютерами пользуются люди, никогда не сталкивавшиеся с ними! Бабушки, тетушки и т.п. Я лично сам своей родственнице-пенсионерке объяснил по телефону, что в скайпе зеленая кнопочка- вызов абонента, красная- отбой. И она поняла сразу как пользоваться!

Вы понимаете, что происходит?! Буквально у нас на глазах компьютер, с которым ранее копались лишь гики, теперь становится обычной бытовой техникой. В этом ракурсе правильный девиз избрала HP: "Компьютер вновь стал персональным!" И это здорово.

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

Вторая моя благодарность ОС Microsoft Windows. Кто б что ни говорил, а именно она уже стала де-факто ОС для домохозяек. Она им понятна- остальное роли не играет. Можно сколько угодно говорить про ее недостатки. Плевать! Компьютер с Windows годами работает без сбоев, без зависаний. Как телевизор, как холодильник 70-летняя бабушка его просто включает, запускает скайп под Windows и звонит внучкам. Все, потребность в общении удовлетворена! И удовлетворена не MacOS, не Linux.

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

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

Фумигатор. Не представляю, как без него жили! Комары размером со стрекоз летают- жуть. Мы тут про нанотехнологии, стартапы. А вот он, маленький приборчик, славно и незаметно выполняющий свою работу, без которого я бы и статью эту вряд ли написал: руки заняты были бы расчесываниями укусов. А ведь какая простая штучка! А какая полезная с хозяйстве! А теперь вы поделитесь, какие "штучки" вас восхищают?

вторник, 14 июля 2009 г.

Отличный ход Microsoft

Вот сама новость, на которую я хочу обратить внимание читателей моего блога:
Realtime Communications Blog: WPC09 - day 1

Подчеркну что:

  1. С Windows7 как торопятся- уже 1 сентября начнет продаваться. Не думаю, что единственная причина этого то, что компания стремиться загладить шероховатости Vista побыстрей. Видимо, есть мысль, бизнес-идея, которая еще на уровне подсознания бродит в умах, но пока не явная. Что-то более масштабное, ради чего формируются такие сроки и, я бы сказал, "аура" вокруг Windows7.
  2. Office Web. Компании смогут устанавливать его на свои внутренние корпоративные сервера. В отличие от Google Docs. Это очень сильный удар под дых гуглу: "Ах, вы на десктопы полезли! Получите!" :) Нет, конечно, я так не думаю- на самом деле это все в духе времени: SaaS, аренда ПО и т.п. Те же хостеры, например, смогут сдавать в аренду Office Web на привлекательных условиях. Учитывая необычайную убогость Google Docs, занять тут лидирующие позиции будет несложно. С удовольствием бы Office Web потестировал. Может дадут доступ в первых рядах, я уже давно зарегистрирован и как разработчик, и как пользователь ПО Microsoft.
  3. По поводу Microsoft Dynamics CRM как-то активизировались. Мой нагоняй, что ли имел свое действие? Не, не может быть... хотя фиг его знает.