• О великих велосипедах, или почему иногда нужно писать с нуля

      Not invented here — источник инноваций и причина успеха?


      Я не могу дать тебе рецепт успеха, но рецепт провала могу дать точно: каждый день и каждую минуту делай все так, как делают окружающие.
      Неизвестный автор.


      Очень часто в компаниях выступают против синдрома «not invented here». Я, как менеджер проектов, прекрасно понимаю соображения такого толка. Велосипеды — это лишние затраты, удлинение сроков разработки, сложность и дороговизна поддержки продукта в будущем, зависимость от разработчиков велосипеда и все такое прочее.

      Но как программист, понимаю однозначно — без велосипедов не будет инноваций. А без инноваций не будет прорывных технологических решений, новых проектов. Будут только одинаковые, похожие друг на друга, собранные из одного набора кубиков проекты и приложения, никак не могущие конкурировать между собой (разве что кто кого засудит и «отожмет» рынок).

      Не случайно поэтому Гугл выделяет 20% на свободное творчество, и это рождает такие великолепные переосмысления старых вещей, как почтовый клиент Gmail.

      Но обо все по порядку. В этой статье я хочу коротко рассказать о трех «велосипедах», которые произвели революцию в своей области.
      Читать дальше →
    • Как делать удобные ajax-сайты

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

        Сразу скажу, что существуют такие web-приложения, которые лишены указанных ниже недостатков (например, Gmail, Хабрахабр). Но это — счастливые исключения, лишь подтверждающие правила.

        1. Трудность навигации


        Прежде всего, состояние. Тот, кто читал «Психбольницу в руках пациентов» Купера, знает, о чем речь. Складным ножом легко пользоваться потому, что у него всего два состояния: раскрыт и сложен. А в случае же с сайтом вы имеете очень большое количество состояний. И если к неопределенности в плане ссылок мозг еще привыкает со временем — пользователь знает, что он находится на одной странице, и всего его действия ограничены ею одной, что сказывается на относительной легкости моделировании различных состояний по страницам — то с аяксом такого не происходит.


        Довольная Гаечка наконец-то нашла нормальный ajax-сайт!
        Читать дальше →
      • Top 5 раздражающих моментов в работе программиста

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

          1. А сколько займет сделать этот раздел (дается ТЗ из одной строки)?

          Как правило, отвлекают от работы вопросом, сбивают с потока. Просят назвать срок, когда неизвестна ни задача, ни требования, только одно предложение. И так настойчиво, что, чтобы отвалили, называешь прикидочный срок.

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

          2. Ты же ОБЕЩАЛ сделать за два дня, а прошла неделя! (моют мозг по сроку из пункта 1)

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

          Менеджеру: ничто так не демотивирует, как обвинение в некомпетентности и лжи. Постарайтесь давать точное ТЗ и бить задачу на простые кусочки, в чем программист с удовольствием поможет (если хорошо попросить). Тогда можно будет более точно управлять сроками.
          Читать дальше →
        • О неверности обобщений, или каждый программист — уникален

            Прочитал пост «Твой программист и твоя жена....», и как программист и управленец, хочу не согласиться с автором. Несмотря на то, что считаю его опыт в организации разработки достаточно интересным.
            Если бы ты мог дать пинка под зад человеку, который виновен во всех твоих неприятностях, ты бы потом три дня не смог сидеть.
            Неизвестный автор

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

            Далее, обобщать уникальных специалистов — это все равно что пытаться рассуждать об музыкантах, к примеру, вообще. Музыканты — это, мол, народ странный, и вот особенно родившиеся после 70х. А то, что кабацкий певец, солист оркестра или выдающийся оперный певец — это три совершенно разных музыканта и тысячи разных людей, как-то в пример не берется.

            Но идем дальше.
            Читать дальше →
          • Перекресток семи дорог, или о выборе пути для программиста

              Очень часто можно услышать несколько типичных высказываний.
              — Я не хочу работать на дядю, поэтому я ушел во фриланс.
              — Не хочу работать на дядю, иду в свой бизнес. Ушел за будущую долю в стартап.
              — Открыл свое дело.

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

              Если вы нашли себя — поделитесь в комментариях!
              Читать дальше →
            • Пять причин быть управленцем

                Я прочитал пост «13 причин не быть управленцем» и хочу написать ответ.

                Прежде всего хочу заметить, что доктор биологических наук Сергей Савельев в книге «Изменчивость и гениальность» говорит, что мозг каждого человека под что-то создан. Кто-то имеет мозг программиста, кто-то управленца, кто-то обе сферы может осилить. Но обычно талант вынуждает человека делать то, что ему нравится. А к чему он не создан, его радовать не будет, и в это все дело.

                Таким образом, к примеру, есть мозг художника, и он не будет математиком. А математик часто не может писать гениальные стихи, и так далее. Бывают гении, типа Леонардо да Винчи, но это исключение.

                Весь вопрос в том, чтобы освоить азы профессии, и если она нравится — ей и нужно заниматься. Если нет — пробовать себя в чем-то другом.

                Поэтому универсальных советов нет, каждому нужно искать свое дело.

                Это было предисловие, а теперь про плюшки работы управленцем.

                Итак, что в управлении проектами круто.

                1. Масштабируемость
                Как управленец, я могу строить управленческие структуры, рабочие группы, и суммарный результат во много раз больше, чем если бы я сам кодил. При этом масштабируемость бесконечна, насколько хватит способностей.
                Читать дальше →
              • Могут ли нейронные сети помочь скопировать мозг?

                  Жаль только — жить в эту пору прекрасную уж не придется — ни мне, ни тебе. Н.Некрасов.

                  Говорят, что мозг-де можно смоделировать на компьютере, нейронные сети есть модель мозга, можно скопировать сознание человека.

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

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

                  В целом добавим, что нейронов в мозге до 100 миллиардов, и получается такая комбинация вариантов, что смоделировать эту систему нельзя на данном этапе развития человека.
                  Читать дальше →
                • Красной таблетки не существует

                    О чем это


                    Я долгое время был адептом идей о равенстве, свободе и братстве том, что существует красная таблетка.

                    — Что можно с помощью ООП решить все проблемы масштабирования программ;
                    — Что с помощью одной методологии можно выстроить разработку проектов;
                    — Что с помощью нескольких гениальных книг можно научиться проектировать интерфейсы.

                    На самом деле, после пары десятков проектов я пришел к выводу, что все это — не более чем заблуждения, и чудеса происходят только в книгах авторов, которые делают на своих бестселлерах миллионы. Или в головах консультантов, которые делают деньги, продавая вам фуфло в виде Agile, KPI и прочих умных слов.

                    Я не сделаю, возможно, в этом посте никаких открытий. Но сэкономлю вам пару лет, если вы решитесь поверить моему опыту.

                    Читать дальше →
                  • Сначала бизнес-процессы, а затем — стартапы, софт и прочее

                      Известный бизнесмен Дмитрий Потапенко рассказывает то, с чем я сталкиваюсь постоянно. Прежде чем создать какой-либо очередной «бухгалтерский учет», который якобы решить все проблемы, нужно вникнуть в бизнес-процесс и жестко его прописать и внедрить.

                      Так и стартап — если в стартапе нет выстроенных бизнес-процессов (продажа, производство), то это мусор и толку из него не выйдет. Речь даже о попытках выстраивать процессы, ведь стартап изначально есть, по одному определению, поиск работающий бизнес-модели.

                      В каком-то смысле это как user stories — именно они, выбранные правильно и реализованные четко, первичны. А не то, как там нарисованы гламурные полутени в альфа-версии, или сделана крутая ООП архитектура с новейшим IoC контейнером. Эти детали не важны на первом этапе.

                      Настоятельно рекомендую всем, кто занимается автоматизацией предприятий — программистам, руководителям проектов и так далее.

                    • Настоящие нечестные конкурентные преимущества

                      • Translation
                      image

                      Что, если кто-нибудь скопирует вашу гениальную бизнес-идею?



                      Около двадцати человек на Answers OnStartups задали этот вопрос в той или иной форме:
                      Когда я встречаюсь с инвестором-ангелом, он может спросить: «Что, если большая компания скопирует твою идею и разработает такой же сайт, как у тебя после того, как твой сайт увидит мир?»

                      Как я могу ответить на этот вопрос?

                      Нет, вопрос звучит иначе: что вы сейчас делаете, зная, что большая компания будет копировать вашу идею?
                      Читать дальше →
                    • Почему многие выбирают PHP

                        Тут было задано много вопросов в одном топике, ответы на которые частично дали в другом.

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

                        И кажущаяся несправедливость, почему PHP рулит на рынке веб-приложений, как Microsoft в десктопном софте, обернется очевидностью.
                        Читать дальше →
                      • Придут ли на смену статически типизированным языкам языки с динамической типизацией?

                        • Translation
                        Я был фанатом статически типизированных языков много лет. Я усвоил урок на собственном горьком опыте, используя C. Слишком много систем ломались из-за глупых ошибок типизации. Когда C++ вышел, я был заядлым приверженцем и яростным адептом строгой типизации. Я насмехался над smalltalk'ерами, кто ныл о потери гибкости. Надежность, в конце концов, была гораздо более важна, чем гибкость. И кроме того, мы могли поддерживать наше ПО гибким И статически типизированным, если просто следовать хорошим принципам управления зависимостями.

                        Четыре года назад приобщился к XP (методология Extreme Programming). Я полюбил акцент на практичности, который она добавила к разработке ПО. Мне также понравился упор на тестирование. С тех пор я заразился идеей тестирования. Я не могу более представлять себе создания кода без использования TDD (test driven development). Не могу вообразить даже, чтобы не иметь полное покрытие тестами, чтобы мои разработки были в сохранности.

                        Около двух лет назад я кое-что заметил. Я стал все меньше и меньше зависеть от типизации в плане надежности. Мои юнит-тесты предохраняли меня от совершения ошибок, связанных с типизацией. Чем больше я зависел от юнит-тестов, тем меньше я зависел от надежности на основе типизации в Java или C++ (мои языки).
                        Читать дальше →
                      • Сначала «скелет», а потом «мясо», или почему неуспешны стартапы

                          Сначала «скелет», а потом «мясо».
                          Сначала процесс, а потом инструмент под процесс.
                          Автоматизация хаоса дает хаос.

                          Это все — разные формулировки одной простой идеи. Идея, которая часто не учитывается во множестве вещей.

                          Для примера рассмотрим стартапы. Обычно бывает как. Возникает у человека идея, что определенный процесс будет интересен группе людей. И человек создает стартап, сайт, где эти люди должны будут использовать сайт как инструмент для процесса.

                          Не учитываются следующие моменты
                          1. Сам процесс может существовать только в воображении создателя стартапа. К примеру, процесс аггрегации результатов матчей ЦСКА вовсе может быть не нужен фанатам этого футбольного клуба, как бы себе это не представлял стартапер. Поэтому важно быть в самом процессе, понимать, какой процесс — реален, а какой нет.
                          Читать дальше →
                        • Умение просчитывать

                            Существует разговорный глагол «просчитывать», что означает — моделировать в голове различные варианты развития события и последствия. Сегодня хочется поговорить об умении просчитывать ходы, и почему это является важнейшим умением в жизни.

                            Для начала небольшое введение. Не задумывались, почему многие великие люди любят шахматы? Почему Сергей Галицкий (миллиардер, с нуля построил сеть «Магнит»), говоря о важных для начинающих бизнесмена вещах, сказал в первую очередь о логике (кстати, в шахматах Сергей хорошо поднаторел в свое время). Почему о той же логики говорит известный блоггер Фриц Морген. А выдающий бизнесмен Дмитрий Потапенко, рассказывая о том, как ему удалось построить свои сети магазинов и ресторах, при моделировании бизнес-процессов предлагает пользоваться блок-схемами алгоритмов из восьмого класса?

                            Потому что они умеют раскладывать задачи в голове на несколько итераций, несколько шагов.
                            Читать дальше →
                          • Добавленная стоимость жизни

                              Как много смысла вы приносите в свою жизнь?

                              Наверное, программист, как никто другой, сталкивается с общественными стандартами. От вас ждут следования правилам, чтобы вы были, как все. А вы физически другой. Как в том знаменитом тесте Алана Купера: люди, заходящие в самолет, либо идут налево, в кабину пилота, для контроля ситуации и изучения тысяч рычагов; либо они идут направо и хотят просто и комфортно долететь. Программисты всегда идут налево.

                              В то же время, мало кто задумывается, что конформизм и следования общественным требованиям без умственных усилий ведут к деградации человечества. Дело в том, что социальное взаимодействие между особями человечества осталось на уровне обезьян, и для простых функций достаточно мозга весом в 900 грамм.

                              А вот для решения труднейших задач нужен более мощный мозг (который от природы в большей части случаев появляется только у мужчин). И решение ранее неразрешимых задач, творчество — это некая деятельность, которая требует сопротивления общественным догмам. То есть у нас в мозге есть две системы: лимбическая, доставшееся от обезьян и требующая от нас фаллометрии, размножения и поглощения еды; и неокортекс, новая кора, которая делает нас человеком разумным. И между ними всегда есть конфликт, который зовется в психологии «хочу» и «надо».
                              Читать дальше →
                            • Как выбирать главные задачи

                                Как часто можно наблюдать ситуацию, когда списки дел сделаны менее чем на 10%. Потому что мы все пытаемся впихнуть в один день, неделю и т.д.

                                Первый шаг — это осознать иллюзорность важности дел. Процентов девяносто пять дел можно просто выбросить на помойку. Отлично это понимаешь, когда вдруг приболел, или по иной причине не был доступен для «важных» дел. Никто не умирает, и сам остаешься жив.


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

                                На самом деле, осознать иллюзорность важности дел в нашем мире — это только первый шаг. Самое трудное — делать правильный выбор.

                                Читать дальше →
                              • Samsung's Smart Window

                                  Недавно наткнулся на ролик на Ютубе,
                                  где показывается технология Smart Window.

                                  Это некая комбинация простого окна (через него все видно) и тач скрина, который встречается в сотнях фильмов и сериалов, начиная от Star Trek.

                                  Похоже, осталось только еще решить вопрос распознавания голоса, и тач скрин точь-в-точь как в «Звездном пути».

                                  Впрочем, это лучше увидеть!

                                • Принципы из ритейла в управлении IT проектами

                                    Введение


                                    Мне очень нравится Дмитрий Потапенко. С ним можно найти не так много видео на Ютубе, но я пересмотрел все. Если кто не знает — это человек, владелец около 15 магазинных и ресторанных сетей, ведет бизнес в РФ, Болгарии и Чехии, под ним работают 7000 человек, суммарный оборот $140 млн в год. До кучи, в прошлом — двухкратный чемпион мира по каратэ, в 25 лет стал вице-президентом Грюндиг по СНГ.
                                    В общем, крутой мужик.

                                    Отсмотрев видео, я нашел немало общего в управлении проектами и стартами с тем, что излагает Дмитрий. Хотелось бы тезисно записать и подытожить. Я вообще люблю применять принципы из совершенно несовместимых, на первый взгляд, сфер, для решения трудных задач — нередко это дает очень красивые и простые решения.

                                    Стратегия важнее тактики


                                    Стратегические просчеты невозможно компенсировать тактическими успехами.
                                    «О войне», фон Клаузевиц


                                    Это же можно сказать и про проект. Выбрали десктопное приложение вместо того, чтобы писать под Web — огромный просчет. Выбрали неверную сферу и под нее угрохали огромное количество средств — никак не реализовать. Выбрали неправильный приоритет по функционалу на месяц, конкурент вас обогнал — опять же, потеря может быть критической. Выбрали неверную технологию — вместо быстрого языка PHP писать на «правильном» типа Ява — опять же потеряли стартовую скорость, еще не выйдя на орбиту.

                                    Кстати, стратегия является отличной защитой от всяких умников, которые будут копировать ваш проект. Посмотрите хорошую статью о том, что поможет защитить продукт от воров.
                                    Читать дальше →
                                  • Как делать нужные людям проекты, или почему не взлетают стартапы

                                      Сегодня на практических примерах мы разберем два мифа в управлении проектами, в том числе в разработке стартапов:
                                      1. То, что лучший и единственный способ сделать успешный стартап — сделать такой, который решает задачи, хорошо знакомые создателю в повседневной жизни.
                                      2. То, что существует автономизация бизнеса, когда проект можно довести до некоторой точки и больше ничего не делать, а потом он просто будет на автомате приносить деньги.



                                      Также мы коснемся мифа «плохих программистов», которые делают задачи не в срок, делают неработающие проекты, или там тратят время на Хабр, и узнаем, что в большей части проблем виноват тот, кто руководит разработкой.

                                      Читать дальше →