пятница, 25 ноября 2016 г.

Quote of the day

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

Источник: https://habrahabr.ru/company/oleg-bunin/blog/310418/ 101 способ приготовления RabbitMQ и немного о pipeline архитектуре

пятница, 18 декабря 2015 г.

Неуспешный стартап и полученный опыт

Эдисону приписывают слова "у меня не было 10.000 неудач, я всего лишь изобрёл 10.000 способов, которые не сработали".

Чуть больше месяца назад закрыл "свой" стартап. Проект был небольшой, в команде всего 4 человека (бэкэнд, мобильное приложение, веб, администрирование окружения). Какой же опыт я извлёк из этого "способа, который не сработал"?

* Начинать стартап там, где уже есть рынок и конкуренты - вовсе не означает заведомый проигрыш. Это следует из дисциплины маркетинга и подтверждается жизненным опытом.
Ведь в противоположном случае на рынке было бы только по одному игроку в каждом сегменте, а это не так.
Новый игрок на рынке может занять более узкую нишу, отвоевать свою долю и т.д. - используя классические маркетинговые стратегии и любую их комбинацию.
Конечно, не стОит воспринимать совет буквально - задумка написать второй facebook или linkedin, пожалуй, окажется безрезультатной (хотя и такие попытки регулярно встречаются).
Но в любом случае, если идея не является абсолютно новой (что бывает крайне редко), то это не повод думать, будто ничего не выйдет. 

* Но и начинать дело наобум - ... наверно, можно, но лучше с самого начала стараться оценивать ситуацию и искать конкурентные преимущества.

* Люди - участники стартапа - должны "гореть" идеей, желанием и стремлением. Именно это является в стартапе одним из важнейших конкурентных преимуществ. Именно это позволяет "догнать и перегнать".
Пожалуй, это вообще самая главная особенность стартапа и необходимое требование для его успеха.
В общем, стартап - это не 8-мичасовой рабочий день. И вообще, он не измеряется рабочими часами.

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

* Стартап должен быть быстрым и активным.
Возможно, в определённых случаях этот пункт не подходит. Но мне кажется, что нужно стремиться к как можно более быстрой реализации продукта, чтобы сразу же получить фидбэк и понять, в правильном ли направлении мы движемся, товарищи. 
Если "идёт" - продолжать работу. Если "не идёт" - бросать сразу же. Потому что бросать через год - намного более жалко.
Долго раскачиваться, долго обсуждать какие-то будущие фичи, сразу закладываться на огромный трафик и поток запросов - значит, впустую тратить время и силы.
Да, если стартап "взлетит", сервис может "лечь" под нагрузкой. Да, приложение может оказаться неприспособленным для лёгкого внесения изменений. 
Но "вылизанное" с технической точки зрения приложение может просто быть никому не нужным.

И в заключение - процитирую слова одного из участников, сказанные им после закрытия проекта:
"Никого не хотел обижать, но был уверен, что к этому придем, с самого начала. Увы. :("
Эти слова "сделали мой день"...
Так что - заметка мне самому и совет другим - людей с подобными настроениями надо выявлять как можно раньше и держаться от них подальше, всем лучше будет.

вторник, 10 ноября 2015 г.

Unsupported major.minor version

Порой при запуске java класса/jar/приложения и т.д. можно "словить"
java.lang.UnsupportedClassVersionError: название класса :
 Unsupported major.minor version 51.0
Причина заключается в том, что класс был скомпилирован на версии jdk более новой, чем та, на которой этот класс теперь запускается. Например, скомпилирован на 1.7, а запускается на 1.6 и т.п.

Узнать текущую версию jdk можно консольной командой java -version

А вот как определить, какой версии class-файл? Узнать версию jdk, использованную при компиляции, можно по числу в описании ошибки (51, 50 и т.п.) или по самому class-файлу. Любой класс имеет определённую структуру (детали - в документации по его формату, например, https://docs.oracle.com/javase/specs/jvms/se6/html/ClassFile.doc.html#80959). В частности, начало выглядит примерно так:
CA FE BA BE 00 00 00 2E
Файл начинает с magic number CAFEBABE, а за ним следуют два short-а, составляющие minor и major части версии соответственно.
Поэтому можно открыть class-файл в hex-редакторе, найти значение и определить версию по следующей таблице:


среда, 28 октября 2015 г.

2015#10 notes

Ненастоящие сеньор-девелоперы, или почему годы опыта ни о чем не говорят - перевод поста одного товарища из Торонто на тему джуниоров, мидлов и сеньоров. Интересный критерий ранжирования, вполне себе логичный. Особенно с авторским примечанием "это просто гигантское упрощение" :).

31 год, миллиардер: Элизабет Холмс совершила прорыв в медицине. Однажды я "повёлся"-таки на контекстную рекламу и оказался на странице со статьёй о Theranos и Холмс, затем посмотрел её выступление на TEDMED 2014.
Как люди запускают крупные, крутые и реально дорогие проекты с нуля? Чаще всего - они работают, днями, неделями, месяцами и годами. И постепенно встречают и деньги, и бизнес, и удачные стечения обстоятельств.
И хотя недавно журналисты The Wall Street Journal обвинили Элизабет Холмс (Theranos) в обмане, всё равно первая статья меня зацепила.

Organizational change myths and patterns for Evangelists by Linda Rising, выступление на FlowCon San Francisco 2013.
Посыл: люди нерациональны в принятии своих решений. Поэтому, если вам необходимо донести идею (любую, хорошую/плохую), то не нужно придумывать рациональные аргументы  и в мелочах продумывать PowerPoint презентацию - в первую очередь вы должны их убедить, что вам можно верить. И тогда они купят то, что вы продаете.
И паттерны:
  • evangelist (с религиозным оттенком) - вы должны сами гореть идеей;
  • share food - вкусные печенки добавляют +100500 к убедительности;
  • угрозы ведут к соблюдению требований, но не к приверженности идее (compliance but not commitment);
  • индивидуальный подход к убеждению решает очень многое;
  • скептики - это НЕ плохие парни, которых нужно игнорировать, но путь к познанию и улучшению.
Так что - рекомендую.

вторник, 27 октября 2015 г.

Прокрастинация, будь она неладна...

Умное слово "прокрастинация" нынче используется направо и налево. Его основное достоинство - им можно красиво объяснить нежелание делать хоть что-то.
Ну, как бы, есть где-то такое слово, есть у кого-то такая ситуация - и ладно бы с ними.
Но - shit happens... пришло понимание, что при всей собственной самоорганизованности, дисциплине и склонности к management of time and life - меня это тоже касается :(
И что самое противное - явно наблюдаются следствия - потеря энергии, потеря продуктивности, ощущение неудовлетворённости и напрасной траты бесценного времени.

"Признать, что вы прокрастинируете, — отличный первый шаг..."

Вот, прямо как новый участник клуба анонимных алкоголиков, мол, здравствуйте, меня зовут Вася, и я алкоголик прокрастинирую.

"... но этот шаг будет абсолютно бесполезен, пока мы не начнём менять свой подход к делу".

Ага, мудрых советчиков в сети масса; но если не тратить время на чтение статей о том, как не тратить время на ... ну, вы поняли - то что делать-то?

среда, 21 октября 2015 г.

Tortoise icons overlay

Давно использую TortoiseSVN / TortoiseGit для работы с этими VCS. И как-то привык к специальным иконкам - с их помощью можно очень быстро понять, в каком состоянии директории и файлы, изменены ли они, находятся ли в ignore-состоянии и пр. и пр.

На новом рабочем месте установил себе TortoiseGit 1.8.15 и... - не увидел привычных оконок, вместо них был обычный win-style. Все стандартные настройки в settings (TortoiseGit's settings, figures 2.65-2.67) присутствовали. Из-за занятости решение проблемы пришлось отложить, поработал пару недель без них. Привыкнуть тоже можно, конечно, но с ними лучше ))

А потому недавно выбрался в интернет в поисках решения - как перекрыть иконки для  TortoiseGit?..

вторник, 20 октября 2015 г.

Забавный баг

Недавно в одном разговоре вспомнилась забавная история, которую и захотелось рассказать.
История случилась несколько месяцев назад, когда мы в Intervale проводили интеграцию с Maxima Telecom в рамках проекта vmet.ro (он же wi-fi.ru).