Все записи автора Алексей Лосев

Мнение о книге "Джедайские техники"

Макс, для тех кто не знает - автор книги, зажигательный оратор. Когда я только узнал про его блог и стал смотреть выступления на конференциях, то он в основном про оценки, обезьянок против роботов и другие прикольные вещи рассказывал. Потом перешел на GTD, и, собственно, именно его статьи в блоге и выступления сподвигли меня прочитать Девида Аллен и его знаменитую "Getting Things Done" (Как привести дела в порядок). Потом было куча всего еще, но основу того, что я использую сейчас как систему личной эффективности дал Макс.
Ладно, про книгу. В начале книги рассказывается почему мы такие какие есть и кто такой "панический монстр". Ну а дальше практика, практика и еще раз практика. Та же техника "пустого инбокса" это будет один из краеугольных моментов в системе личной эффективности любого, у кого существенная часть коммуникаций с внешним миром идет через почту. Ну а дальше, берем инструменты которые описаны в книге и пытаемся применить их к себе. Понятно, что в "любой непонятной ситуации - думай". Но сначала берем и делаем как в книге, потом, если не сработало, думаем по чему. Ведь, каждому свое и универсальных решений подходящих всем - не существует. Например, мне, в свое время оказался удобнее подход с разветвленным деревом задач (в книге и в выступлениях Макс пропагандирует простую структуру списка задач: сегодня, на этой неделе, когда нибудь). Но я к этому пришел после года использования трех коробочек. Ну и минутка гордости. Льщу себя мыслью, что одну из методик описанных в книге Макс подсмотрел у меня, по крайней мере я ее в его выступлениях не видел, а вот во время одного из он-лайн мероприятий рассказывал :)
Читать ли эту книгу? Если у вас к концу дня мозг совершенно не вари, и вы тупо смотрите котиков в файсбучеке, если вы постоянно забываете про важные встречи/задачи, и еще много разных если, то да. 

Мнение о книге "Управление изменениями"

Книга содержит полтора десятка переводов статей разной степени историчности посвященных управлению изменениями организации. Чтение в первую очередь позначательно с точки зрения как развивалась научная мысль в это области. Забавно, когда первая треть книги про разные модели описания процесса изменения организации, например эволюционную. А в начале второй трети расписывается, почему большинство этих подходов бред.
В общем, большая часть книги размышления без хоть какой-нибудь научной базы в основе. В финальной части несколько исследований по кластеризации пытаются прикинуться научными, но материал для исследования берется не из объективных источников, а получается в результате опроса руководителя.
В общем, для расширения кругозора книга хороша, насколько все это применимо в реальной жизни - вопрос открытый. Кстати, в хрестоматии есть статья Адизеса, одна из немногих с практическими рекомендациями.
Ну а так, книгу можно растаскивать на цитаты, вот несколько мне особенно понравившихся:
 - Сначала были потери, затем появился план изменений, а позже его осуществление, которое привело к непредсказуемым результатам.
 - Причина, по которой американские бизнесмены любят говорить о гуру, заключается в том, что им слишком сложно выговорить слово "шарлатан".
Ну и длинная цитата, но она того стоит:
 - В настоящий момент в управленческих и политических кругах акцентируют внимание на влиянии организационных структур на результаты деятельности компании и стремятся использовать различные системы структурных изменений, направленных на усовершенствование компаний. Такие системы многочисленны, и их разнообразие кажется неиссякаемым: TQM, реинжинириг, изменение архитектуры - вот лишь несколько популярных программ. Менеджеры понимают, что утверждения консультантов, предлагающих эти программы, нельзя принимать на веру, без критической оценки. Однако, к сожалению, менеджеры редко обращаются к опытным специалистам, чтобы те оценили эффективность программы при помощи способов исследования и моделей [...]. Доступ к организациям, проводящим программы изменений, крайне ограничен [...]. В общем, консультанты не хотят, чтобы результаты проведенных ими изменений получили объективную внешнюю оценку, и поэтому всеми способами стремятся этого избежать.

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

Без рубрики

Цитата дня


Если бы вместо миллиардов, которые тратятся на вооруженные силы, нашлись бы миллионы на образование и здравоохранение, то для терроризма не было бы места.
-- Сергей Капица

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

Изменение в данных и текущей команды во время отладки

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


Первый вариант полезен, когда во время отладки сложно получить из окружения какие-то данные, а нам нужно проверить именно на них. В том месте где нам нужны данные, ставим точку останова и запускаем приложение:
Затем наводим мышку на интересующую нас переменную, чтобы выскочило окно с ее значением:
И переместив мышку кликаем на значении (если объект сложный, то можно путешествовать по его свойствам, иногда бывают проблемы, но в целом можно редактировать достаточно много чего):
Нажимаем Enter и все, программа идет по пути когда a <= 5.
Второй вариант еще проще, даже картинок не буду прикладывать. Ставим точку останова, запускаем приложение и когда доходим до точки, просто хватаем желтую стрелку (на предыдущей картинке на точке останова) мышкой и переставляем в нужное нам место. Это способ, как правило дополненный первым, нужен для того, чтобы пропустить некий функционал который взаимодействует с частью которой нет (не реализована или отсутствует в текущий момент).

Изменение в данных и текущей команды во время отладки

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


Первый вариант полезен, когда во время отладки сложно получить из окружения какие-то данные, а нам нужно проверить именно на них. В том месте где нам нужны данные, ставим точку останова и запускаем приложение:
Затем наводим мышку на интересующую нас переменную, чтобы выскочило окно с ее значением:
И переместив мышку кликаем на значении (если объект сложный, то можно путешествовать по его свойствам, иногда бывают проблемы, но в целом можно редактировать достаточно много чего):
Нажимаем Enter и все, программа идет по пути когда a <= 5.
Второй вариант еще проще, даже картинок не буду прикладывать. Ставим точку останова, запускаем приложение и когда доходим до точки, просто хватаем желтую стрелку (на предыдущей картинке на точке останова) мышкой и переставляем в нужное нам место. Это способ, как правило дополненный первым, нужен для того, чтобы пропустить некий функционал который взаимодействует с частью которой нет (не реализована или отсутствует в текущий момент).

Мнение о книге "Вовлекай и властвуй"

Книжка тоненькая и небольшого формата. Бралась как обзор для ознакомления с темой. В принципе со своей задачей книга справляется. Если бы из нее выкинули примерно пятую часть (например, про то как геймификация может нарушать законодательство в США; а уж то, что благодарности, словарь терминов, об авторах и издательстве занимает 30 страниц в книге из 223, это вообще за гранью добра и зла).
А остальное - ок. Основная идея геймификации раскрыта, из чего она состоит описано, базовые ошибки рассмотрены. В качестве книги для "посмотреть с высоты птичьего полета" - нормально.
Стоит ли читать? Если нужно базовое представление о том, что такое геймификация, то да. Если это не первая книга на эту тему или нужно начать разрабатывать геймдизайн уже завтра, то нет. Это не более чем обзор. В моей библиотеке Умберто Эко уже лежит следующая книга на эту тему. Как то так.

Мнение о книге "Ретроспектива проекта"

Если коротко, это эта книга лучший пример систематической ошибки выжившего. Предполагается, что она ориентирована на людей стремящихся научиться проводить ретроспективу. И что мы находим в этой книге? Что многие вещи автор описывает с позиции своего большого опыта: расскажите менеджерам о своих предыдущих ретроспективах, найдите аналогию с ситуацией на предыдущих ретроспективах, изложите свой собственный пример ретроспективы. В связи с этим многие вещи становятся тяжело применимы. Ну и как финальный штрих, или, если хотите вишенка на торте, автор говорит, что книга так себе. Найдите нормального проводильщика ретроспектив и начните учиться у него :) Обидно...
Ну а если серьезно, то многие вещи из книги применимы не только в рамках ретроспектив, но и в повседневной практике. Например: избегайте треугольников, четыре вида свободы, я-другой-контекст. Но это больше к фасилитации, а не к ретроспективам. Конкретные упражнения для проведения ретроспектив тоже расписаны неплохо. Можно будет их брать как для ретроспектив, так и для применения в рамках повседневных активностей.
Читать ли книгу? Да, есть много полезного. Но все надо очень вдумчиво переносить на себя и окружающую действительность.


Мнение о книге "Думай медленно… Решай быстро "

"Кукушка хвалит петуха, за то что хвалит он кукушку". Эта цитата из Крылова, так в рамках минутки стёба. Канеман в своей книге очень лестно отзывается о Талебе, ну а Талеб в своем "Черном лебеде" о Канемане. Но это ни умаляет достоинств ни одной книги, ни другой.
О чем эта книга... Да о том же, о чем и "Вы заметили гориллу?", "Странная логика наших поступков", "Психология убеждения. 50 доказанных способов быть убедительным". О первой и второй системе мышления. О том, что наша первая система ленива и любит "стереотипные" решения. О том, что обмануть ее достаточно просто. И даже если мы в учебном классе или на рабочем месте понимаем, что такое статистика. То выйдя из этих храмов знаний, оказывается, что вторая система отключилась и со статистикой работает первая, которая с ней не работает. Все это описано с научной точки зрения, на экспериментах. Некоторые из них я даже повторил. Т.к. группа была не очень большая, то не все прошли успешно, но в большинстве результаты были аналогичны приведенным в книге. Так что, оно работает :)
Читать ли книгу? Если упомянутые выше книги вы еще не читали, то да. В отличии от гориллы и странной логики в ней меньше анекдотов и больше научных данных, ну а по содержательности она примерно как 50 доказанных способов. Если читали... Ну тоже можно, для систематизации, так сказать.

[Xamarin] 2. Собираем приложения и делаем главное меню "Гамбургер"

Продолжаем разговор, т.к. собрать приложения это достаточно просто, то кроме этого добавим в приложение меню "Гамбургер". Поехали.

Создаем новый проект в студии выбрав Cross Platform App (Xamarin):
В открывшемся окне я оставил пустое приложение, но вот шаринг кода выбрал на основе PLC. Принципиальная разница в том, как организуется доступ к платформозависимым вещам. В Shared Project, это директива #if.
После нажатия на принять и некоторого времени (если вы это делаете в первый раз, то выскочит предупреждение, что надо бы операционную систему перевести в режим разработчика, плюс выскочит окошко подключения к устройству на котором компилировать iOs решение, т.к. мне пока это не интересно, то я просто закрыл это окно. В итоге создается решение содержащее 4 проекта:
Как не сложно догадаться, три из них под платформы, ну и первое в списке, это разделяемая сборка код из которой будет использоваться в остальных решениях.
Следующим шагом я выгрузил проект с iOs приложением, запустил билд и получил ошибку Could not find android.jar for API Level 26. This means the Android SDK platform for API Level 26 is not installed. Either install it in the Android SDK Manager (Tools > Open Android SDK Manager...), or change your Xamarin.Android project to target an API version that is installed.
В принципе, все логично, т.к. я устанавливал SDK для Android версии 7.1.1, а ей соответствует 25 версия. Заходим в настройки Android проекта и меняем версию:
Все, можно запускать UWP и Android приложение. Эмулятор по прежнему долго грузиться, но мы уже можем убедиться, что приложения работают и показываю жизнеутверждающий текст про "Добро пожаловать...".
Как я уже сказал, это не очень интересно, поэтому добавлю заголовок в приложение и главное меню "Гамбургкер".
Создаем в корневом проекте папки Views и ViewModels. В папку ViewModels добавляем класс MenuViewModel, в папку Views добавляем Content Page для самого меню и две Content Page для показа как работают переходы (Home и Second):
На вьюхах Home и Second я просто поменял текст:
Как я уже сказал, они нужны только для того, чтобы было понятно на какой мы странице.
Меняем нашу главную страницу, делая ее потомком MasterDetailPage. Для этого меняем предка в cs файле и удалив все содержимое, меняем корневой тег. Вот такой получается XAML:
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:Adjutant"
             x:Class="Adjutant.MainPage">

</MasterDetailPage>
И вот так cs:

Начинаем реализовывать меню. Для этого нам нужно знать, на какой мы странице сейчас находимся. Для упрощения примера, я не буду усложнять с правильной реализацией навигации и просто добавлю в класс App три свойства (для хранения ссылки на главное окно, для хранения ссылки которая сейчас показывается и признак развернутости меню):
public partial class App : Application
{

    public staticNavigationPage NavigationPage { get; private set; }
    private static MainPage RootPage;
    public static bool MenuIsPresented
    {
        get
        {
            return RootPage.IsPresented;
        }
        set
        {
            RootPage.IsPresented = value;
        }

    }
В ViewModel добавляем следующий код:
public class MenuViewModel
{
    public ICommand GoHomeCommand { get; set; }
    public ICommand GoSecondCommand { get; set; }

    public MenuViewModel()
    {
        GoHomeCommand = newCommand(GoHome);
        GoSecondCommand = newCommand(GoSecond);
    }

    void GoHome(object obj)
    {
        App.NavigationPage.Navigation.PopToRootAsync();
        App.MenuIsPresented = false;
    }

    void GoSecond(object obj)
    {
        App.NavigationPage.Navigation.PushAsync(new SecondView());
        App.MenuIsPresented = false;
    }

}
Как видно, у нас просто две команды. Одна для перехода на домашнюю страницу, вторая для перехода на вторую.
Самое интересное. Вьюха с меню. В XAML добавляем две кнопки:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Adjutant.Views.MenuView">
    <ContentPage.Content>
        <StackLayout BackgroundColor="Gray">
            <Button Text="Домой" TextColor="White" BackgroundColor="Green" Command="{Binding GoHomeCommand}" />
            <Button Text="Вторая страница" TextColor="White" BackgroundColor="Navy" Command="{Binding GoSecondCommand}" />
        </StackLayout>
    </ContentPage.Content>

</ContentPage>
А в cs, опять же, чтобы не усложнять пример, добавим создание ViewModel:
public partial class MenuView : ContentPage
{
    public MenuView()
    {
        BindingContext = newMenuViewModel();
        Title = "Menu";
        InitializeComponent();
    }

}
Осталось только поправить создание приложения. Дописываем конструктор класса App:
public App()
{
    InitializeComponent();
    var menuPage = new MenuView();
    NavigationPage = newNavigationPage(new HomeView());
    RootPage = new MainPage();
    RootPage.Master = menuPage;
    RootPage.Detail = NavigationPage;
    MainPage = RootPage;

}
Запускаем. Вот так это выглядит в эмуляторе после запуска:
А вот так после тапа на "гамбургере":
При переходе на вторую страницу меню пропадает и заменяется стрелкой назад:
В целом все нормально ровно до тех пор, пока не запустим UWP:
Нет "гамбургера", меню показывается всегда... Вот такие они, Xmarin.Forms - одинаковые на всех платформах :)
Ладно, в следующий раз поговорим о моделях навигации.