2007-07-04
2007-06-28
2007-06-22
О противном
Другое дело писать книги! Область твоего влияния распространяется на всю отрасль сразу. И что же можно такое новое написать про программирование? Все коммерческие книжки должны содержать в своем названии некий новый бренд. Например Vista, или AJAX или С#. Но новый язык - это сложно. Надо лет десять раскручивать, чтобы люди начали покупать. Да и то, только гики. Да и сложно это. То ли дело бизнесс-процесс! Это можно написать, это легко продавать, Только название придумать. Например "Scrum". Ну и что, что похоже на смесь crap-а и срама. Зато звучит. Содержание процесса тоже неважно, это как новый метод лечения всех болезней. Главное - чтобы больной сразу не помер. А там, может сам выздоровеет. Лучше всего взять побольше обычного здравого смысла и добавить чуть-чуть (главное - не переборщить!) чего-нибудь модного и экстравагантного. Для вкуса. Чтобы запомнилось.
Я далёк от мысли, что бизнес процесс не нужен. Взять к примеру Макдональдзы. Всё их know-how - это процесс. Очень заметно, как правильный процесс облегчает работу, скажем, официантов в ресторане. Похоже пример Макдональдза не даёт спокойно спать менеджерам от программирования. "Вот нам бы так" - мечтают они. Выгнать всех этих шибко умных, бородатых, встречающих в штыки любую идею, и нанять улыбчивых молодых людей. Не работа будет - картинка с рекламки.
Но всё-таки, серьёзно, нужен программисту "процесс"? Смотря что назвать этим словом. Если ритуальные танцы с бубном, то нет. Если весёлые ежедневные митинги, коллективные тренинги на тему build team, то нет. Если свод законов, суровый и непреклонный, установленный десять лет назад, то тоже нет. Если набор разумных практик и приёмов, помогающий писать хороший код - то ДА! И практики эти надо применять с умом, когда они имеют смысл, и набраться храбрости и не применять, когда смысла не имеет. И практик этих на самом деле кот наплакал.
Итак, если Вы - маленькая фирма ещё не погрязшая в бюрократии, и сотрудники ваши ещё не растеряли желания сделать продукт, а не просто ходить на работу и "делать карьеру", то вот мои советы. Те же самые годятся и для волка-одиночки.
1. Иметь source control. Обязательно.
2. Тестировать код. Все написанные строчки. Именно все.
3. Сабмитить в source control оттестированный код разумными кусками. Не каждое открытие файла в редакторе, но фичи. Каждый баг-фикс отдельно, если они независимы. И писать description, что именно засабмичено.
4. Иметь место, где записываются все баги. Не обязательно база данных, об этом ниже. Но хранить баги, как исходный код.
5. Очень хорошо, если source control хранит всё, чтобы построить проект. Т.е. добавьте туда компилятор, заголовки и библиотеки. Это позволит восстановить в точности любую версию продукта, воспроизвести и исследовать баг.
6. Сделайте 2 branches: первый будет содержать текущую рабочую версию, а второй - релизы и хотфиксы к ним.
7. Если есть спеки - положите их рядом с исходным текстом в source control. Пригодится.
8. Не надо писать неиспользуемый код. Не надо делать супер-пупер систему классов на все случаи жизни с кучей методов. Половина будет не нужна, только зря потратите время и потом будет непонятно, что работает, а что нет. Сделайте то, что надо, остальное напишете, когда понадобится. Если написали ненужное, засабмитьте куда-нибудь, но не в рабочий код.
9. Можно написать unit-тесты, но главное - напишите скрипты, которые проверяют основную функциональность всей системы. Потом достаточно будет запустить, чтобы увидеть, что не поломалось.
10. Я не сторонник стайл-гайдов с подробным перечислением количества пробелов, но некий разумный стиль необходим. Код должен быть читабельным. И не только компилятором.
11. Не увлекайтесь самыми последними технологиями. Быстро сделать продукт можно на системе, которая хорошо известна, которая имеет документацию, блоги по недокументированному и куча всяких инструментов. Новые технологии имеют кучу багов и подводных камней. То, что красиво на картинке с 5 квадратиками - не работает, когда квадратиков 1000.
12. Пишите на том, что ваши программисты знают и понимают. Не понимает народ как писать с exceptons - не используйте их.
13. Неплохо, если ваш код посмотрит ещё один человек. Не первый встречный, а тот, кто понимает и может дать дельный совет.
14. Зависимости - вот что должно определять и менеджмент и архитектуру.
15. Не надо делать всё первым пришедшим в голову способом. Подумайте, как ещё можно сделать и выберите лучший вариант из возможных.
16. Программирование - процесс итерационный. Сделайте хотя бы пару итераций перед выпуском первой версии.
17. Задача первой версии - сделать хороший стабильный прототип, обкатать принцип и сформировать API. Вторая версия - никаких новых фич, но то, что есть работает быстро и надежно. Фичи можно добавлять в третьей. И т.д.
18. Во время написания первой версии вы поняли как это надо было писать. Не бросайте и не начинайте переделывать сразу как поняли. Выпустите первую версию. Потом сделаете, то, что поняли во второй. Если перепахивать каждый день - ничего не вырастет.
19. Заведите FAQ и форум для пользователей. Возник у пользователя вопрос - впишите ответ в FAQ. Потом можно просто сслылаться на готовый ответ.
20. Вместо сложных систем баг-трекинга можно просто завести внутренний форум с несколькими правилами. Возник баг - завели тред. Первый пост - описание проблемы (способ воспроизведения или цитата из внешнего форума). Тред активный. Дальше разработчики могут добавлять свои комментарии, потом, когда проблема понята, кто-то принимает решение исправить или отложить. После этого решение записывается в треде. Когда проблема исправлена - это тоже записывается в треде и тред переводится в архив. Всегда видно, что происходит и каков статус. Старые треды тоже можно поднять и посмотреть. Ничего не стирайте!
Хватит на сегодня. Продолжение последует. Как-нибудь.
2007-06-19
Ответ на вопрос смысла жизни и всего вообще.
Так вот, недавно ссылочку прислали. Исходник типа. Наш. В смысле, нас. Хотя скорее екзешник, чем исходник. Ну, генетический код человеческий. Open Source, хакерствуй, если понимаешь.
Ну, никто, конечно почти ничего не понимает, но перспективы поражают воображение. Стругацкие бы сказали, что модификации кода должны быть запрещены, как неэтичные. Утопия. Будут модификации. Никуда не денемся. На это наводят три соображения:
Во первых, есть всякие наследственные болезни. К примеру, молодой паре не повезло, совпали дефекты. Неужели не этично пофиксить, и позволить родить здорового ребенка?
На самом деле у всех есть дефекты! Посмотрите на окружающих, на себя. У одного очки с детства, у другого волосы седеют рано или лысина в тридцать, у третьего зубы ни к черту. Пофиксим? Так и поехало. А заодно и кудри златые и глаза изумрудные, и, как ни странно, похож и на маму и на папу. Такой мощный рынок открывается!
Во вторых, есть болезни не наследственные, заразные и опасные. Вирусы-микробы мутируют, ищут дыры в защите, усложняются. А мы - нет! Нам вымирать надо массово, чтобы полезные изменения закреплялись. А у нас вредные закрепляются! Тот, кто раньше умер бы в детстве, сейчас до старости доживает и потомство дает. Медицина остановила нашу эволюцию и ускорила эволюцию вирусов-микробов. Угадайте, кто победит в перспективе? Так, что выход один - самим заняться затыканием дыр в своей защите.
Ну и в третьих - жить подольше хочется. Эволюция не сможет продлить жизнь дольше среднего детородного возраста. Эти изменения не смогут закрепиться в потомстве. Только intelligent design может помочь жить дольше. И рынок здесь совсем уж немеряный.
Я уж и не говорю про выход в космос и прочие фантастические проекты, для которых наш организм вовсе не предназначен.
Короче, никуда мы не денемся, секс сексом, но зачатие станет пробирочным, с установкой последнего сервис пака, всех hot-фиксов, и, по желанию, за плату, всяких интерфейсных настроек, типа цвета кожи, глаз и волос.
Понеслись мечты! Природа, конечно, возмутится таким вопиющим нарушением своих авторских прав и издаст спешно очередной закон об их защите. Об этот закон и разобьются наши мечты.
И какой же это может быть закон? Полагаю, что сложностный. Запросто может оказаться, что нельзя вот так просто взять и написать новую программу для DNA. Может оказаться, что нельзя предсказать какую форму примет молекула при добавлении новой цепочки и какими она будет обладать свойствами, кроме как сделать эту молекулу и посмотреть, что получится. Это как в криптографии. Обратная задача невычислима за разумное время. Т.е. может оказаться, что нельзя вычислить какой генетический код приведет к определенным заранее заданным изменениям организма. Вероятно можно комбинировать независимые части кода, но сильно-зависимые части - неразрешимы.
И что тогда делать? Это же конец! Прогресс остановился, микробы победили, все умерли. Но природа же как-то всё это делает! Идет эволюция! Если миллионы лет делать миллиарды попыток генетическим алгоритмом, можно хакнуть невычислимое.
Сделать кучу зондов. Засеять жизнью вселенную. Дать ей развиваться независимо на разных планетах, потом собирать образцы, выбирать удачные находки, встраивать в себя. Как идея?
Вот мы и подошли к смыслу жизни. Земля, как супер-компьютер, где обитатели находят генетические решения по борьбе с новыми вирусами для некоей суперцивилизации. Поняли, о чем писал Адамс? (Для тех, кто читал: вопрос не должен быть раскрыт - суперцивилизации проще уничтожить планету, чем признать, что они затеяли на окраине галактики!) Можно сделать несколько планет-черновиков. Со сходным генетическим кодом. Заразить их новым вирусом и позволить жителям умирать от него. Выжившие будут нести решение, которое можно внедрить в себя. Интересная возникает этика и практика суперцивилизаций. Поняли, чем занимаются странники? И почему тагоряне не стали инициировать саркофаг? Они, вероятно, просто знали о подобной практике. Мысли разбегаются объясняя факты реальные и вымышленные.
Как минимум, новая фантастическая идея. Дарю, пользуйтесь, я не писатель, я читатель.
Бог создал человека по образу и подобию своему. А затем создал себя по образу и подобию человека. Годится для новой религии? Нет? А если я скажу, что всё это прочитал на позавчерашнем камне, посланном мне с неба?
2007-06-17
2007-06-12
Fire foxes
2007-06-06
Почта и форумы.
2007-06-03
2007-05-31
О солнце
2007-05-30
Пацталом
Так вот, стало быть, стол. Красиво, но непрактично. Я вот пытался представить, что с ним делать и как-то не проникся. Домой - не купил бы. Непонятно - зачем. Работать нельзя. Долго смотреть вниз - шея заболит. Фотки двигать? А зачем? Рисовать - надо бы наклонить. Но тогда рука устанет. В ресторан поставить? Есть на нем, а потом крошки размазывать? Вот в казино, наверное можно поставить, игровые автоматы всякие. Хотя реальные фишки прятнее. И в шахматы я бы играл на доске.
Последнее время, стали появляться некоторые интересные штуки в компьютерном мире. Я писал уже про соневскую книжку, и нокиевский планшет, которыми доволен безмерно. Лежу на диване, читаю. Хотя мелковато немного. Но вот ещё одна штука. Подозреваю, что аппаратная база очень похожа. На сайте этого нет, но ожидаю всё тот же малопотребляющий интеловский ARM в качестве процессора, SD карточки вместо диска и комплект WiFi+Bluetooth. И вот эту штуку сразу захотелось в качестве замены ноутбуку. И без всяких вист и долгих загрузок. Просто включил - и сразу почта, браузер и редактор.
2007-05-29
Предсказание
О политике
И я вот тоже думаю, не податься ли мне в blogger?
2007-05-28
2007-05-22
Мысли о Главном
- Во первых реальная власть может и не быть персонифицированной, а представлять некий узкий круг.
- Во вторых, его представители могут не желать публичности, и уж наверняка должны не желать возможных раскопок в области своей персональной истории.
- В третьих, они скорее всего не являются гражданами одного государства, и имеют собственность в разных странах.
- В четветых, мир не крутится сам по себе, и им некогда торчать в белом/красном доме, выступать в дебатах по телевизору и принимать всякие дурацкие делегации.
- В пятых мир состоит из нескольких государств. Нельзя же быть везде президентом.
Можно еще придумать доводов, почему реальная власть должна быть неизвестной для широкой публики в этом своем качестве. Такая вот совершенно Лемовская идея. Конспираси, говорят и крутят у виска. Да, конспираси. Ассоциация конспираси с сумашествием поддерживаеися периодически и явно. И фильмы снимают и статьи пишут.
Я ведь не предлагаю никаких жареных фактов про зеленых человечков. Просто логика. Предположим есть власть, тогда должна быть конспираси. Её нет только если нет власти, а есть тот самый бардак, политическое перетягивание каната, а мир катится сам по себе, по геодезической, подпинываемый в разные стороны разными группами влияния. Может оно так и есть. Антипод конспираси - бардак, вполне всё объясняет. Остальное сочтём совпадениями.
Но вдруг таки есть власть? Носителей можно вычислить. Они вряд ли совсем безвестны. Они должны встречаться иногда со своими ставленниками, помогать им с выборами. Можно поискать кого-нибудь, кто помогал нескольким политикам разных стран. Если найдутся несколько таких персон, они должны быть связаны друг с другом.
Интересные следствия из гипотезы. Высший переворот возможен даже без смены "публичной части". Просто старые представители продолжают работать с новой властью. Такой переворот, например был бы виден по странным необъяснимым событиям в политической сфере, по, жестоким и неожиданным терактам. Вот взять к примеру хотя бы Тот Самый.
2007-05-21
The worst experience ever - nokiausa.com
$13.84 за кнопку
2007-05-13
Microsoft: Linux doesn't exist in 2007
Вот, оказывается, даже Линус работает. Вероятно до этого подразумевалось, что Линукс делают бомжи под мостом. А в это время по мосту ездят в лимузинах крутые вицепрезиденты и презрительно плюют вниз.
Товарищч занимается пропагандой методом фальшивой ассоциации. Есть такой метод в пропаганде: перенести свои комплексы на врага, невзирая на реальность, например объявить его трусом, даже если он наступает и побеждает. Враг всегда трус, он всегда безнравственнен, он убивает стариков и детей, уничтожает наши традиции и ценности. Враг всегда продажен и лжив, воюет ради власти и наживы. А про свободу он лжет, всегда, не верьте ему. Верьте нам, идите с нами, помогите защитить наши духовные и материальные ценности!
Так вот, свободный софт - это софт, который выпущен под свободными лицензиями. И всё. В основном его разрабатывают коммерческие фирмы, а свободность - часть их бизнес модели. От этого софт не становится несвободным. Зачем выпускать под свободными лицензиями? Чтобы в него инвестировали другие игроки свободного софта, чтобы развивать экосистему, и чтобы противостоять софту несвободному. Свободный софт создает пул кода, который можно использовать в своих проектах. Итд итп.
Что, он не понимает этого, когда говорит о смерти свободного софта? Понимает, вероятно. Но говорит "линукс не существует" именно в 2007, когда Микрософт оконфузился со своей новой операционкой, возвратившей из забвения заслуженный титул "мастдая", и когда Линукс как раз достиг в своей неспешной эволюции состояния некоей конкурентоспособности и начинает быть привлекательным для корпоративных клиентов. Даже Dell планирует ставить его на продаваемые компьютеры. Ну действительно, будь я админом крупной сети, в гробу я видал все эти новые заморочные винды с их лицензиями и ненужными фичами!
И в этой ситуации, чем большее место будет занимать Линукс, тем сильнее будет пропаганда, заявляющая, что он проиграл, умер, что он безнравственнен и уничтожает вечные ценности корпоративной интеллектуальной собственности. Я жду очередного наезда по законодательной линии с попытками запретить Линукс и прочий свободный софт вообще.
А пока другие не столь высокопоставленные сотрудники утешают общественность низкой долей рынка Линукса. Да, доля рынка невелика, особенно по статистике Микрософт. В основном его ставят без всякого рынка. Кстати, подозреваю, что мы видим начало конца эры персоналок и конеца эры виндов. Но об этом надо отдельно написать.
2007-05-06
Cedar Butte
2007-05-04
Сириус как зеркало русской эмиграции
Вообще, все "бывшие" - разные. Большинство неравнодушны к бывшей родине и неравнодушие это простирается от любви и до ненависти. Одним ненависть нужна как оправдание правильности отъезда, другим любовь - как мечта о далекой и прекрасной родине, в которую когда-то в далёком-предалёком будущем он вернётся. Но тем не менее, есть нечто общее, которое кто-то назвал бы "совковостью", но на самом деле это вовсе не однозначное свойство. По моим наблюдениям настоящей совковостью обладают как раз непримиримые борцы с ней, борец с российским хамством обхамит всё и вся. У меня несколько наиболее отмороженных даже сидят в чёрном списке адресной книги.
Короче, если вы общались с эмиграцией (хотя бы со мной, например), получите удовольствие от прочтения.
...
-- Хамство? Ты побывала в маркете?
-- Да, я зашла в маркет в порту чтобы купить воды! И меня моментально обхамили!
-- Кто?!
-- Уборочный робот!
-- Как это? - растерялся я.
-- Он сказал. Сказал: если вы закончили свой выбор, пожалуйста, пройдите к кассовому столу! Представляешь?
-- И что?
-- Как - что? Я - гражданка Сириуса, я высший примат! У меня галактический паспорт! Как смеет этот бак со щеткой мне указывать, чем мне заниматься?
-- Ты ему так и ответила?
-- Разумеется! Какое его вообще дело, закончила я выбор или нет?!! Это мое приватное дело!!!
-- Тише, тише, Женечка...
-- Это мое право - торчать в маркете хоть всю жизнь! И вообще, что за командный тон? Что за указания?!
-- Ну... может, ты стояла в проходе, а ему надо было проехать?
-- Это его проблемы! Он робот, я примат! Во что превратится цивилизация, если каждая щетка начнет указывать, куда пройти?! Где здесь ванна, черт возьми, в твоем доме?!
...