90% разработки

20 мая 2010

Есть такое интересное разбивание проекта на этапы, как я называю «по правилу 90%». Я не знаю откуда я его взял, может где-то прочитал, может сам это вывел, может еще что-то, но тем не менее:

  1. Команда рано или поздно приходит к моменту когда проект «уже сделан на 90%» – что-то уже запускается (в идеалистичном use case) , есть какая-то система, казалось бы осталось лишь допилить чуть чуть.
  2. Но на самом деле это лишь начало. Дальше еще столько же до того момента когда продуктом можно будет реально пользоваться, когда он станет работать у другого человека, перестанет падать в ситуации отличающейся от идеальной и т.д. Вот тут да, снова дошли до стадии «готово на 90%».
  3. И это оказывается не все… :( Теперь нужно допилить чтобы все было «красиво», удобно, чтобы это поддерживалось, запускалось из коробки, были написаны инструкции. И после уже снова «готов на 90%», тут уже и правда почти готово.

Читать далее »»

Тут Джоана Рутковска засветила прототип ОС, Qubes OS, в которой приложения запускаются в отдельной вирутальной машине, что должно решить многие проблемы безопасности. Идея, конечно, интересная, но в ситуации когда главная угроза безопасности это пользовать, мне кажется мало полезной. С другой стороны, для такие параноиков как я очень пригодится, я бы себе взял :)

Так вот, мне это напомнило мою старую мысль о том что многий софт можно вообще выпускать только в виде образов виртуальных машин. Не тот который для обычных пользователей, а более серьезный. Ну вот, например, не проще ли было бы сделать «веб-мастеру» виртуальный образ среды в которой будет разрабатываться сайт, вместо Дэнвера (или что там сейчас популятно)? Вместо всех прочих хитрых SDK? Софта, который для своей работы требует поставить еще сотни мегабайт дополнительных библиотек? А корпоративный софт, особенно серверный, который поставит только сертифицированный админ, на сертифицированно настроенный сервер, со строго определенной версией ОС, на котором после этого ничего другого и не поставить? Итак ведь многие все это ставят сразу в отдельную виртуалку, так может уже и выдавать сразу готовый образ, в котором все настроено, стоит весь нужный комплект дополняющего софта и библиотек, и можно рассчитывать на то что ничего лишнего рядом не поставят? А уж сколько проблем решает виртуализация, тут тебе и многоплатформенность, и бэкапы, и миграция, и cloud computing, и пр. Ну хотя тут не мне говорить, ну хотя бы потому что не эксперт.

Или может я совсем не в теме, и вендоры ПО уже давно работают в этом направлении, и даже уже сейчас продают готовые образы?

Поисковая ниша

18 января 2010

Пообщался на днях, в очередной раз, с человеком пишушим свой поисковик, убийцу яндекса и гугла вместе взятых :) Я попытался донести что рынок поиска, в текущем виде, занят, по крайней мере от посягательства со стороны небольших команд. Есть Гугл как основной гигант, есть куча игроков рядом с ним поменьше, и есть несколько тысяч совсем незаметных поисковиков, вертикальных, узкоспециализированных, экспериментальных и пр. Даже мелочь, конечно, имеет своих посетителей, но все равно тут делать нечего, лишь гиганты могут методично вычищать свои алгоритмы, нанося небольшие, малозаметные штрихи в общей картины. Время больших мазков давно прошли. И занять тут значительную долю не получится, даже вкладывая миллиарды в маркетинг, в Bing я слабо верю. Это никому не нужно, даже пользователям, как ни странно это звучит.

Единственный заметный результат дает «структуризация веба», а точнее структурированный и полноценный ответ на его основе. В идеале как у Вольфрама. Вольфраму более менее удалось лишь потому что они выбрали очень специфичную, узкую, и изначально структурируюмую область, в которой, к тому же, они давно сидели. Конечно же продвижения есть и остальных, и у Гугла, и у Яндекса, и особенно мне нравится как это получается у Нигмы. При этом охватить сразу всё, дать ответ на любой вопрос, им слишком трудоемко, на приборах почти не заметно, а ROI совсем плохой.
Читать далее »»

iphone
Представим себе что вы решили купить себе телефон, для наглядности представим что это iPhone 3Gs.

В сети находите 3 варианта покупки:

  • 10 тыс. руб – и как получится, может завтра, а может через месяц, может вообще не доставят, но денег в любом случае не вернут. К тому же на корпусе могут быть какие-то подозрительные царапины и непонятные люди в списке контактов. Или вообще другой телефон привезут, ну и может денег сверху попросят, лишь потому что у них там какие-то непонятные вам «проблемы возникли с товаром«.
  • 15 тыс. руб – может быть завтра уже доставят, но черт его знает на самом деле, есть некоторая путаница со складами, курьерами, наличием, в общем они обещают на днях позвонить и сказать точнее что как будет, может сразу доставят, может в течении недели, ну или как получится.
  • 20 тыс. руб – послезавтра ровно в 14:25 курьер с товаром будет у вас в офисе. точка.

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

На самом деле почти риторические вопросы, просто повод поразмышлять о том как думает заказчик разработки софта. Цена, предсказуемость результата и пр.

PS: а еще можно было бы это разбить на 5 вариантов, чтобы сопоставить с уровнями CMMI

jar с винтом

25 ноября 2008

Java, как язык – ничего особо выдающегося. Да даже тот же C# внешне выглядит приятней, что уж говорить о многих динамических языках. Хотя, если насчет самого синтаксиса Java, то тут тоже наметилась тенденция, уже есть вполне неплохие JRuby, Groovy, Scala и Clojure, выбирай по вкусу.

Так вот, хоть как язык Java и проигрывает, но она имеет за плечами огромный набор библиотек, для решения почти всех востребованных задач. Я бы даже выразился так:

На каждую хитрую задачу найдется свой jar с винтом.

ну может не всегда именно jar, а скорее технология, протокол, спецификация, но суть в общем такая.

У всех остальных все хуже. Там или узкая заточенность под одни нужды (RoR), или единая линия партии (.Net), или просто полный хаос.

Главное – это все таки сколько у тебя за спиной готовых, зарекомендовавших себя и переиспользуемых решений. А что до производительности и требования к ресурсам, так с этим уже давно все хорошо, все работает достаточно быстро, если написать конечно как положено, а не как обычно. Да и в последнее время это уже неактуальная проблема, сейчас в цене не производительность, а масштабируемость.

Поэтому нравится java или нет, но… но чаще всего выбирать и не из чего.

P.S.: Хотя, если честно, есть тут один минус: это то что привыкнув к этому все стараются делать «через жаву», что не всегда верно, но это уже издержки производства.

Я не знаю EJB и JSF

6 августа 2008

Как то так сложилось что при моем примерно 7-летнем опыте коммерческой разработки на Java я почти не имею опыта в EJB. Хотя это первое что спрашивают на собеседовании, я ведь проверял не так давно. Самое интересное, кстати, в том что многие собеседователи после кучи вопросов по опыту в EJB/WebSphere/JMS/пр., о том как это все им важно и пр., рассказывая о своих проектах, говорят что на практике все их проекты разрабатываются без какого либо EJB и прекрасно работают по Tomcat, а WebSphere получается лишь для веса. Возможно и потому что не серьезно сейчас предлагать решение без WebSphere/WebLogic + Oracle.

А мне всегда как то хватало связки Spring + Hibernate + Tomcat/JBoss, что в сущности дает тоже самое, но удобнее. Список можно продолжить добавив еще как минимум Acegi, AspectJ, и прочие решения умеющие хорошо и удобно решать свою отдельную задачу, многие легко взаимозаменяемы и дают очень неплохой синергетический эффект.
Читать далее »»

Кто там говорит что perl-код не читабелен? Вот вам реализация soundex на языке K:

sdx:"bfpvcgjkqsxzdtlmnr"!(4#1),(8#2),(3 3 4 5 5 6)
nn:{d2:x where x > 0;r:d2 where d1:0w<>':d2}
soundex:{(x[0],(nn (sdx@1 _ x)),l:4#0)[til 4]}

угу, именно так… Похоже что клавиатуру протирали.
Теперь запускаем: Читать далее »»

JYaml в качестве DSL

13 апреля 2007

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

- Что мне нужно выучить, чтобы создать игру/офисный пакет/1с?
- Экономику. Менеджмент, маркетинг и т.д. А потом все-все просчитать, взять огромную кучу денег, нанять помощников, много разных программистов, тестеров, дизайнеров, разных узких специалистов и тогда сделать это! А если в одного… да бесполезно просто.

Web 2.0

5 июня 2006

После книги «Решение проблемы инновации» посмотрел через эту призму на текущие тенденции в Web. В Web-разработка многие сейчас носятся с идеями инноваций, хотя большинство из всего этого авторы назвали бы поддерживающей инновацией, которые по его мнению не так доходны.
Многие высказанные в книге идеи можно развить в области ИТ, да и сами они (авторы) неоднократно рассуждали про инновации в различных сферах ИТ, но я сейчас хочу остановится лишь на одной из них.
Читать далее »»