суббота, 29 сентября 2012 г.

Деньги как мотивация в высокотехнологичных стартапах

Интересная публикация на тему: Does money matter? Wealth attainment as the motive for initiating growth-oriented technology ventures (оригинальная ссылка).

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

Как выяснилось, деньги не являются единственным, и даже не являются самым важным фактором как для стартапщиков, так и для топ-менеджеров.

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

Материалы и методы

Исследование психологическое. Сначала разослали 1800 анкет, из которых ~ на 600 ответили. Нужны были те, кто участвовал в стартапе или рассматривал предложение стартапа. Из этих людей выбрали тех, кто за прошедшие 5-10 лет являлся основателем стартапа, топ-менеджером или владельцем фирмы. Из них 54 согласились на подробное интервью. Плюс из выборки опрашивалась контрольная группа, это те, кто рассматривали возможность стартапа, но отказались от неё (31 человек). Далее исключено было 3+3 человека, ответы которых были не полные. И результат ушел на анализ.

Анализ проходил по 11 факторам:

Wealth
Стать богатым, заработать денег, достичь своих финансовых целей
Vision
Реализация своих замыслов, что из себя должна представлять организация, какие цели перед собой ставить
Stability
Чувствовать себя стабильно в социальном, политическом и личном. Чувствовать себя комфортабельно по отношению к будущему.
Power
Быть вовлеченным в ключевые решения. Иметь влияние и власть.
Lifestyle
Получать от жизни удовольствие, быть здоровым, проводить время с тем, с кем хочется.
Leadership
Мотивация и влияние на других.
Innovation
Создание чего-то нового или особенного. Реализация оригинальных идей.
Independence
Свобода и гибкость решений. Быть хозяином себя. Работать там, тогда и с тем, с кем хочется.
Ego
Не быть толпой. Выигрывать. Создать свое имя-бренд.
Contribution
Помогать другим. Влиять на общество с помощью организации.
Challenge
Использование всех своих талантов. Самореализация. Решение большего круга вопросов и получение большей ответственности.

Каждый из факторов оценивался по трем параметрам: Importance (важность с точки зрения карьеры и самого человека), Salience (принятие решений с точки зрения проектов), Satisfaction (удовлетворение принятыми решениями; например за последние 5-10 лет).

Выводы исследователей

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

Конечно же $ мотивируют, но как оказывается, это не единственный стимул и цель.

Как выяснилось, такие мотивации, как innovation, vision, independence, challenge были самыми значимыми. Это проявилось для обоих групп, но для стартапщиков в более яркой и выраженной форме.

Насколько значимыми, можно посмотреть на табличку (слева стартапщики, справа топ-менеджеры)(кликабельно):

Данное исследование не единственное в своем роде. Например в материалах статьи есть ссылка на другой результат:

In fact, Roberts (1991) found that money was not a significant motive for the initiation of high-technology ventures; motives such as independence and challenge were more important.

Там было сравнение не стартап vs не-стартап, а чистый хай-тек venture (создание нового авантюрного предприятия).

В исследовании потенциально есть (по моему мнению) два фактора, которые не учтены и могут серьезно влиять не результат. Первый (незначительный) — это качество выборки. Если из 1800 выбирается только 54, то это могут быть например только те, кто хочет участвовать в исследованиях, и соответственно с большим чувством полезности к обществу. В результате — нерепрезентативная выборка. Второй — более значимый. Это то, что во многих психологических опросах люди ведут себя совсем не так, как в реальной ситуации (см. "Слова в психологических экспериментах ничего не стоят"). Другими словами, на опросе люди могли отвечать так, как они о себе думают, а в реальности принимать совершенно другие решения.


суббота, 22 сентября 2012 г.

Диагностика исключений

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

Короткий обзор

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

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

Все instance отправляются в коллектор и в дальнейшем при перехвате используются по усмотрению.

Детальный обзор

Рассмотрим нижеследующую функцию.

Она занимается тем, что парсит файл специального формата, проверяет корректность и укладывает данные в память в соответствии с внутренним представлением. Для иллюстрации и разбора важно только заметить, что она работает с одним файлом и использует другие функции, это get_utfmarker_line(), check_elements(), getline(), check_and_union_ranges().

void
parse_file( const std::string & filename ) 
{
    std::ifstream file( filename.c_str() );
 
    if ( !file.good() )
    {
        throw phone_ranges_error_t( 
            "Can't open file '" + filename + "' to parse." );
    }
 
    // Receive first line and cut marker (if it present).
    elements_t elements = get_utfmarker_line( file );
 
    // Parse all file and collect map.
    ranges_t ranges;
    while( true )
    {
        check_elements( elements, ranges );
 
        ranges_t::const_iterator it = 
            ranges.find( range_t( elements[0], elements[1] ) );
 
        if ( it == ranges.end() )
            ranges[ range_t( elements[0], elements[1] ) ] = elements[2];
 
        if ( file.eof() )
            break;
 
        elements = getline( file );
    }
 
    check_and_union_ranges( ranges );
 
    m_ranges = ranges;
}

Проблема

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

Как мы это можем сделать?

Ниже два примера, как это может быть реализовано традиционными методами.

Первый: добавить информацию в пролетающие мимо исключения

void
parse_file( const std::string & filename ) 
{
        std::ifstream file( filename.c_str() );

        try
        {
                ...
        }
        catch( const std::runtime_error & ex )
        {
                throw std::runtime_error( 
                        ex.what() + " parse_file filename:" + filename + ";" );
        }
 
}

Этот способ имеет ряд недостатков.

Во-первых, нам нужно перехватить все типы исключений. Из-за этого требуется добавлять много catch'ей, для каждого из типов. В результате мы обязательно какой-нибудь из них забудем. Кроме того, мы не сможем перехватить неизвестные для нас исключения (например из других библиотек).

Во-вторых, нам нужно писать try и catch. И все содержимое функции сдвигать на одну табуляцию. Все это усложняет код, его понимание и сопровождение.

В-третьих, здесь происходит дополнительная операция конструирования объекта исключения.

Второй: передача параметра в контекст броска исключения

Один из способов:

void
parse_file( const std::string & filename ) 
{
        std::ifstream file( filename.c_str() );
 
...
 
        elements_t elements = get_utfmarker_line( file, filename );

...
 
                check_elements( elements, ranges, filename );
 
...

                elements = getline( file, filename );

...
 
        check_and_union_ranges( ranges, filename );

...
}

Здесь следующие проблемы.

Один дополнительный параметр для каждой функции. Из-за чего код становится более сложным для восприятия и сопровождения. Мы должны контролировать каждую функцию, и какую-нибудь из них обязательно забудем. Кроме передачи параметра мы должны в каждой точке броска исключения дописать информацию в throw.

В завершении, мы при таком способе не контролируем чужие исключения.

Предлагаемое решение

Необходимо добавить всего одну строчку:

void
parse_file( const std::string & filename ) 
{
        ex_diag::reg<std::string> reg_file ( filename, "parse filename" );
...

В конечных точках перехвата мы можем использовать всю диагностическую информацию, которая была собрана автоматически. Это можно разобрать вручную (какое бы то ни было исключение):

catch ( ... )
        {
                std::cout << 
                        ex_diag::get_collector_instance().info() << std::endl;
        }

Или это произойдет само, если мы наследовались от исключения библиотеки:

catch ( const ex_diag::ex_t & ex )
        {
                // Dump will be at ex_diag::ex_t d'tor.
        }

В завершение

Инструмент межплатформенный, проверенный, с тестами и примерами.

Проверялся с помощью VC7 и GCC.

Обертки работают для любых объектов, которые можно отправить в std::ostream.

Проектировалось для минимального синтаксиса и минимального использования ресурсов.


среда, 5 сентября 2012 г.

Связные слова английского

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

Отдельно и тематически они назваются как «conjunctions», или «linking words».

Ниже — мой список.

Additionally/In addition, …
В дополнение/кроме того, …
After a while …
Спустя некоторое время …
After all, …
После всего/в конце концов …
All in all, …
Вобщем, …
All the time/while, …
Все время, …
allegedly, …
как будто/якобы …
Anyhow …
Каким-то образом …
Apart from X, …
Кроме X, …
Anyway, …
В любом случае, …
Arguably, …
Можно утверждать, что …
Around this time, …
Примерно в это время …
As always, …
Как всегда, …
As a result, …
Как результат, …
As a matter of fact, …
Собственно говоря, …
As an aside, …
В качестве отступления, …
As it turns out, …
Как выясняется, …
As shown below/above, …
Как показано ниже/выше, …
As you mentioned, …
Как вы упомянули, …
Astonishingly, …
Удивительно, …
At first glance/at first sight, …
На первый взгляд, …
At the end,
В завершении/в конце, …
At times,
Временами/время от времени, …
A total of …,
В общей сложности, …
Based on that, …
На основании этого, …
Basically, …
В основном, …
Because of/Due to …
Из-за …
before long, …
вскоре, …
Besides/Likewise, …
Кроме того, …
But by contrast, …
Но напротив/с другой стороны, …
But for X, …
Если бы не X, …
By definition, …
По определению, …
By the time, …
К тому времени, …
By the way/Incidentally, …
Между прочим, …
Certainly/Sure enough, …
Конечно/конечно же, …
Clearly, …
Очевидно, что …
Coincidentally, … / …, respectively.
Соответственно, …
Conversely, …
С другой стороны, …
Currently, …
В настоящее время, …
Despite …, …
Несмотря на …, …
Earlier, …
Ранее, …
Early on, …
На ранней стадии/вначале, …
Even so, …
Несмотря на это …
Even worse/What's worse, …
Хуже того/Даже хуже, …
Eventually/In the end/Ultimately, …
В конце концов/В конечном счете, ..
Ever wonder, …
Вы никогда не задумывались, …
Evidently, …
По видимому/Очевидно/Внешне, …
Fittingly, …
Знаменательно, …
For brevity, …
Для краткости, …
For example/for instance, …
Например, …
For once, …
На это раз, …
Foremost, …
В первую очередь, …
Fortunately, …
К счастью, …
Frankly/To be honest, …
Честно говоря, …
From then on, …
С тех пор, …
Furthermore/On top of that, …
К тому же/кроме того, …
Granted,
Конечно, …
Gradually, …
Постепенно, …
Given this situation, …
Учитывая эту ситуацию, …
Hardly, …
Маловероятно/вряд ли, …
Hence/Consequently, …
Следовательно, …
Henceforth, …
Впредь/Отныне/С этого момента, …
Heretofore, …
До этого времени/Прежде/Ранее, …
Historically, …
Исторически сложилось так, …
Hopefully, …
Надеюсь/Говоря с надеждой …
However,…
Однако, …
I find that …
Я считаю/нахожу, что …
In hindsight, …
Оглядываясь назад/в прошлое, …
I wonder …
Сомневаюсь …
I've no doubt [that] …
Я не сомневаюсь[, что] …
Ideally, …
В идеале, …
In a nutshell, …
В двух словах, …
In a twist, …
По иронии, …
…, in essence, …
…, по существу, …
In many ways, …
Во многих отношениях, …
In my mind, …
На мой вгляд, …
In other cases,…
В других случаях, …
In other words/Put another way, …
Другими словами, …
In particular, …
В частности, …
In practice, …
На практике, …
In short, …
Короче говоря, …
In the beginning, … / At the beginning of …
Сначала, … / В начале [фильма], …
In the same vein, …
В том же духе/роде, …
In truth, …
По правде говоря, …
Indeed, …
Правда/на самом деле, …
Inevitably, …
Неизбежно/неминуемо, …
In/with regard to …
Что касается …
Interestingly, …
Интересно, что …
It appears that, …
Похоже, что …
It is worth noting …
Стоит отметить, …
It is undeniable that …
Нельзя отрицать, что …
It leads to …
Это ведет к …
It so happens, …
Бывает так, …
It seems fitting, …
Это представляется целесообразным, …
It seems to me …
Как мне кажется, …
It's thought that …
Считается, что …
Just curious, …
Просто интересно, …
Just in case …
На всякий случай …
Just then, …
Именно тогда …
…, lest …
…, чтобы не …
Lastly, …
Наконец, …
Later, …
Позже, …
Let's be clear:
Давайте уясним: …
meanwhile/meantime, …
тем временем/между тем, …
Mainly/Primarily, …
Главным образом/В основном, …
Mind you/Keep in mind, …
Имейте ввиду, …
Moreover, …
Более того, …
More specifically, …
Более конкретно, …
Most likely,
Более вероятно, …
Namely, …
А именно, …
Naturally …
Естественно/разумеется/конечно …
Needless to say …
Само собой разумеется …
Next time,/Up next, …
В следующий раз …
Nonetheless/Nevertheless, …
Тем не менее/Но все же, …
Not to mention …
Не говоря уже о …
Occasionally,/By chance, /Every now and then, …
Время от времени/Изредка/Порой/Случайно, …
Of late, …
В последнее время/недавно, …
Offensively, …
Обидно, но …
On average, …
В среднем, …
On the one hand …, on the other hand …
С одной стороны, …, с другой стороны, …
On top of everything else, …
Кроме всего прочего, …
Onсe the X/As soon as X …
Как только X …
Otherwise, …
Иначе/в противном случае …
… other than …
… кроме …
Over time, …
Через некоторое время, …
Partly, …
Отчасти/Частично, …
Per say, …
Само собой, …
Pleasingly, …
Приятно то, что/Что привлекательно, …
Rather, ..
Точнее/Вернее/Скорее, …
Regrettably, ..
К сожалению, …
Sadly, …
К сожалению, …
Similarly, …
Аналогично/Подобным образом, …
So far so good, …
Пока что все хорошо, …
So far, …
До сих пор, …
Specifically, …
В частности, …/А именно, …/Конкретно …
Strangely enough, …
Как ни странно, …
Subsequently, …
Впоследствии/в дальнейшем, …
Surprisingly to us, …
На удивление нам, …
… still …
… все ещё/по-прежнему …
Take into consideration/account …
Учтите/примите во внимание …
That is, …
То есть, …
That said, …
Тем не менее, …
That was how, …
Именно так, …
The bottom line is, …
Суть в том, …
Therefore …
По этой причине/следовательно …
This in turn, …
Это, в свою очередь, …
This time, …
На этот раз …
Though/although, …
Хотя/несмотря на, …
Thus/In this way/Thereby, …
Таким образом, …
[Time] permitting however, …
Если позволит [время], …
To begin with, …
Начнем с того, что …
To ensure that …
Для того, чтобы …
To our knowledge, …
По нашим сведениям, …
To sum up,/In conclusion, …
Резюмируя/В заключение, …
Up close,…
Вблизи, …
We have argued that…
Мы утверждаем, что …
Whereas …
В то время как …
With any luck, …
Если повезет, …
Which is why, …
Именно поэтому …
Worse still, …
Что ещё хуже, …
Worth of all, …
Хуже всего, …
You see, …
Видите ли, …

Список на этой странице будет пополнятся.


суббота, 1 сентября 2012 г.

Роберт Эттингер — Перспективы Бессмертия

Одноименная книга, в которой раскрываются все основные вопросы крионирования. Несмотря на то, что написана в 1962-м, а перевод на русский был только в начале 2000-х, наверно является единственным источником такого рода (на русском языке, в твердом варианте), где расписано с научной точки зрения все основные моменты крионирования (научные факты, исследования, юридичесикие и социальные вопросы и проблемы, как это делают и делается, …).

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

Во всем этом есть множество проблем и вопросов. Как замораживать/размораживать/хранить? Насколько это все научно обоснованно, или это работает только в теории? Как это организуется и что можно сделать, чтобы этим воспользоваться? …

Здесь некоторые факты, которые есть в книге и мне показались интересными.

Более сложное, нежели отдельные клетки или сперматозоиды/яйцеклетки

Первая успешная пересадка замороженных органов произведена в начале 2006-го года. То есть, полностью процесс замораживания и оттаивания с пересадкой органа (яичники крыс). Но например, замораживание и оттаиавние кожи делалось ещё в 1950-х гг, а первый ребенок из замороженной яйцеклетки родился в 1986-м году.

Сохранение памяти

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

Процедура заморозки и шансы

Многие непрофессионалы и даже врачи полагают, что тело должно быть заморожено в течение нескольких минут после клинической смерти (клиническая смерть — состояние, при котором нет явных признаков жизни, дыхание, сердцебиение), чтобы обеспечить шанс на выживание. Это заблуждение.

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

Ещё 50 лет назад проводились операции с охлаждением мозга до 12'C на 45 минут без кровообращения, в течение которых мозг пациентов повреждался. Но после операции пациенты восстанавливались в течение нескольких месяцев.