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

Этот бесплатный 40-минутный урок наполнен реальной информацией, которую я почерпнул из 10 различных работ по программированию. Взгляд изнутри на рынок и интересные сценарии в бизнесе.

Моя книга Истории технологий — 125 секретов карьеры программиста вышла на Amazon в мягкой обложке. Это дает вам представление об отрасли изнутри с помощью коротких уроков, которые я усвоил, работая в 10 различных компаниях в Торонто с 2005 года. промышленность. https://goo.gl/Z16Dcf

Вот разбивка видео выше:

Раздел 1: «Колледж или университет программирования?»

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

Раздел 2: «Компания Fortune 500»

Вот чему я научился за 8 месяцев работы в компании из списка Fortune 500:

- Объяснять техническую информацию нетехническим людям сложно, но необходимо, и это навык, над которым можно работать.

- KPI (ключевые показатели эффективности) часто включают количество новых технологий, которые вы можете внедрить.

- Как совмещать несколько задач, разбивая свое расписание на блоки.

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

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

Раздел 3: «Внимание к деталям»

Проактивность и внимание к деталям — вот что принесло мне первое предложение о работе в 2006 году. Я бы сказал, что внимание к деталям — одно из самых важных качеств программиста, без исключения. Скорее всего, это побочный продукт усердия и грубых усилий. Я думаю, это относится ко многим вещам в жизни, и это та же самая причина, по которой существует изысканная кухня: внимание к деталям. .

Раздел 4: «Первое предложение о работе»

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

Раздел 5: «Плата за размышления»

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

Раздел 6: «Критический фильтр»

Критический фильтр — это когда вы немного сдерживаете свои идеи, уточняя, анализируя и обдумывая их. Затем, когда вы вносите их, вы можете попасть в яблочко в нужное время и с более сильной доставкой.

Раздел 7: «Улучшение процесса»

Улучшение процессов — огромная область исследований. Люди делают на этом целые карьеры. Для меня важно определить, какие методы будут работать в вашей ситуации, и применять только их. Также важно измерять и отбрасывать те, которые не работают. Для нас в этой небольшой компании: выполнение всей поддержки только в течение 2-часового окна было огромным преимуществом, которое давало нам возможность сосредоточиться. Другой способ сделать это — иметь вращающуюся «шапку поддержки», когда вся поддержка осуществляется только одним разработчиком, позволяя другим работать, не отвлекаясь. (взять один для команды)

Раздел 8: «Ошибки, которые я совершил»

Некоторые выводы из ошибок, которые я сделал:

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

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

3. Иногда клиенты пытаются «прокрасться» в бесплатную работу… вернитесь к ним и спросите у своего начальника, имеют ли они право на такую ​​работу по контракту… иначе это станет вашей проблемой. .

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

Раздел 9: «Аутсорсинг в Китай»

Некоторый опыт постоянного аутсорсинга в Китай:

1. Разработчикам понадобилось 3 месяца, чтобы подготовиться и начать создавать полезный код.

2. Написание спецификаций и проверка статуса становятся важными.

3. Стоимость в Китае примерно в 4 раза меньше на одного разработчика.

4. У вас может быть 20-часовой рабочий день с передачей и забиранием для срочных проектов.

Раздел 10: «Рекомендации, повышения и уклоны»

В конце 2006 года я чувствовал, что застаиваюсь и недостаточно учусь. Я пошел дальше и поднял свою зарплату на 30%! Уроки, извлеченные из этого эпизода:

1. «Повысить себе» — самый простой способ сделать это. (Захватив его, поменявшись местами — инициировав этот прыжок с «младшего» на «средний» или «средний» на «старший»).

2. Следите изо дня в день: сколько вы учитесь? Каждый день должна поступать важная новая информация.

3. Во многих интервью я наблюдала предвзятость: стиль общения, возраст, интересы, манеры поведения и мало ли что еще… Все это существует, и все это реально! Если вы можете явно заметить предвзятость в решении о найме, это, вероятно, нехороший знак, потому что самые качественные компании нанимают, проверяя из первых принципов, а также на основе консенсуса. Тем не менее, предубеждения могут быть использованы в ваших интересах, чтобы получить вас и все же привести к значительному повышению по сравнению с вашим текущим рабочим местом.

Раздел 11: «Веб-игровая площадка»

Метаданные Интернета можно использовать для создания аналитических приложений и изучения поведения потребителей. Концепция становится более мощной с машинным обучением. Однако одна из основных проблем заключается в том, насколько неструктурированы входные данные. Вы вынуждены подводить черту, делая свою стратегию самоуверенной, когда дело доходит до типа данных, которые вы ищете. Иметь хорошо понятый кусок полезнее, чем пытаться «вскипятить весь океан». Я бы никогда не столкнулся с этой отраслью, если бы не изменил ситуацию в конце 2006 года.

Раздел 12: «Среда нулевого процесса»

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

Раздел 13: «Осень 2008 года»

Когда экономика идет плохо, денег становится мало, и все ненужное вытряхивается. Осенью 2008 года все наши крупные клиенты бросили нас как камень. В данном конкретном случае дополнительное участие в моем концерте спасло мне работу, и после этого я проработал еще 3 года в дочерней компании. Урок? Вы «приятно иметь» или «ключевая часть бизнеса»? Нет такой вещи, как «по-настоящему незаменимый», но вы можете быть чертовски близко к этому.

Раздел 14: «Вдохновение и личный пример»

Вдохновить своих сотрудников можно разными способами. Мой босс вдохновлял меня тем, что он был тем, кем он был: классным, образованным, выдающимся, опытным, мягким, терпеливым и творческим. Он не пытался произвести сильное впечатление. Но он это сделал… иногда просто присутствие этого человека рядом творит чудеса, потому что у него есть элементы, которые вы хотите реконструировать. Это может не сработать на некоторых людях, невосприимчивых к мысли об улучшении в то время, но, вероятно, работает на большинстве людей.

Раздел 15: «Оставаться позитивным программистом»

Для меня гораздо важнее оставаться позитивным и продуктивным, чем доказывать свою правоту. Многие люди прекрасно справляются с «мирным временем», но любая серьезная двусмысленность или неуверенность их выбивает из колеи. Во многом это связано с личностями и тем, как они работают вместе. Я видел людей противоположных культур, которые просто не могли работать вместе — каждый не желал уступать ни на йоту.

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

Раздел 16: «Проверка вашего руководства на реальность»

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

Все постепенно выздоравливают?

Компания зарабатывает?

Отвечают ли люди своевременно?

Берут ли люди на себя ответственность за то, что они делают? Если они этого не делают, получают ли они выговор?

Хорошо ли работает эскалация или она застревает в какой-то точке цепочки?

У этого списка нет конца. Можно задать сотни вопросов. Но если дела идут просто «тяжело», всегда есть причина. Кто-то прикалывается…

Раздел 17: «Шаг вперед» — распознавание того, что вы отстаете

Потребовалась куча интервью с полным стеком, чтобы понять, что я не могу общаться с большими мальчиками на старшем курсе. Итак, я пошел в стартап, занимающийся C#.net, вебом, БД, веб-сервисами и нативным мобильным телефоном. Это соответствовало культуре, но технически я должен был усилить свою игру. Урок: слишком долгое пребывание в роли одинокого волка приведет к отсутствию проверки реальности, которая необходима вам, чтобы оставаться в курсе событий. Молодые мотивированные команды помогут вам не отставать. Гораздо проще учиться у других, чем на примерах из Интернета. По крайней мере, таков был мой опыт в 2011 году. Однако времена изменились, и в последнее время StackOverflow стал для меня феноменальным

Раздел 18: «Кристально чистое ценностное предложение» — приятно иметь

Иногда ценность вашего продукта настолько очевидна, что он почти сам себя продает. Вы просто заканчиваете презентацию в PowerPoint для клиента, и он спрашивает: «Сколько и как скоро мы можем начать?». Это фантастическое место. На мой взгляд, все всегда сводится к бизнес-плану, Уникальному торговому предложению, целевому рынку и должно «экономить деньги, экономить время, зарабатывать деньги или обеспечивать развлечение». Если он не делает что-то из этого хорошо, у компании могут быть проблемы.

Раздел 19: «Приобретение»

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

1. У нас было 40–60 сотрудников. Большинство из них были целеустремленными и талантливыми.

2. За время существования компании у нас было 60–100 клиентов. Много мелких сделок и крупных сделок.

3. Отличное лидерство, обладающее прочными основами бизнеса. Постоянная и стабильная финансовая траектория во все времена.

4. Надежное ценностное предложение для клиента. Легко доказать экономию затрат и то, что системы окупаются всего за несколько месяцев.

Раздел 20: «Общий дизайн в программном обеспечении»

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

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

Раздел 21–22: «Увольнения и сокращения»

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

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

Раздел 23: «Мысли о техническом консалтинге»

Контракт против полного рабочего дня имеет много компромиссов. Если вы состоите в браке или у вас есть партнер, неплохо иметь одного постоянного и одного по контракту. Таким образом, у вас все еще есть план семейного здравоохранения и более высокая ставка заработной платы с другой стороны. Однако есть много подслушанного в бухгалтерии, различных административных задачах и бухгалтерских сборах, которые идут на управление корпорацией. Я обсуждаю все компромиссы консалтинга в своей книге Amazon: Истории технологий: https://goo.gl/6sPJwq

Раздел 24: «Монополии данных и другие уникальные виды бизнеса».

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

Раздел 25: «Разветвление на новые языки»

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

Раздел 26: «Могут ли вас заменить ваши партнеры?»

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

Раздел 27: «Высокая цель — попасть в лучшие компании»

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

Раздел 28: «Льготы в компании и доверие сотрудников»

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

Раздел 29: «Налог на инновации»

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

Раздел 30: «Разрешение двусмысленности всех видов»

Я считаю, что каждая компания, в которой вы будете работать, будет иметь совершенно разные способы реализации проектов. Вот как это было для меня. Из-за этого я думаю, что способность адаптироваться к окружающей среде и иметь много способов разрешить двусмысленность — это две замечательные способности. Обычно это включает в себя беготню и общение со многими людьми, изучение структуры, чтобы вы могли перейти к делу, а не задаваться вопросом, что могло произойти. Это включает преодоление некоторых искусственных организационных границ, если это необходимо. Одна шутка, которая мне нравится: самое важное в программисте — это «Его ноги»: потому что вы должны бегать и разговаривать с как можно большим количеством заинтересованных сторон, чтобы в конечном итоге вы не создали ненужные вещи или не должны были отменить свою работу. позже. .

Раздел 31: Стать «2 в 1» или «3 в 1»

Часто есть возможность быть 2 в 1 или 3 в 1. Если не на работе, то на подработке… Быть 2 в 1 устраняет накладные расходы на общение между двумя людьми. 3in1 дает даже экспоненциально большую выгоду. Наличие нескольких дисциплинированных людей в данном бизнесе может сделать этот бизнес высокопродуктивным, а их ценности резко возрастут. Я также считаю, что с точки зрения спроса и предложения число настоящих 2-в-1 или 3-в-1 на порядок меньше, чем количество специалистов. Это просто основано на разговорах, которые у меня были с людьми, и на том, что я понял, работая в разных местах. Я думаю, что строгие роли должны уйти в прошлое, и люди должны делать как можно больше того, что делает их эффективными.

Раздел 32: «Стань ногой в дверь»

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

Раздел 33. Вести себя более социально, чем «типичный разработчик».

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

Раздел 34: «Взлом потребительского рынка приложений»

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

Раздел 35: «Микро- и макропрограммирование в программировании».

Мы можем быть продуктивными, выполняя 200 крошечных задач в день вместо 60. Или мы можем быть продуктивными, изменив всю нашу стратегию и подход к другой школе мысли. Или мы можем сделать и то, и другое. Я думаю, вы можете назвать это «тяжелой работой» против «умной работы». Умная работа может привести к экспоненциально более высокому результату, потому что она может иметь комбинированный эффект. .

Раздел 36: «Становление безэмоциональности в отношении технических проблем»

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

Раздел 37: 4 причины, по которым срок годности программного обеспечения может истечь, как и у продуктов питания.

1. Ваша же функция реализуется крупным игроком. Ваш становится лишним.

2. Ваш код какое-то время сидит, а его сторонние зависимости устаревают и перестают поддерживаться через несколько лет.

3. Обещанная ценность продукта никогда не материализуется, и бизнес отказывается от нее.

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

Раздел 38: «Гарантия занятости — это вы сами, а не какая-либо компания»

«Гарантия занятости» — это вы сами. Возможность оставаться в курсе, узнавая много разнообразной, открытой информации. Это также: иметь хороший послужной список, множество вариантов, множество связей и сильные навыки, которые вы можете быстро продемонстрировать. Я не верю в какие-либо гарантии занятости, имеющие отношение к крупным компаниям, если только они не являются явными победителями рынка, такими как Amazon, Facebook или Google.

Раздел 39: «Безопасность вашего языка, процесса и среды»

Что вам сойдет с рук ваш язык или IDE? Если это буквально позволяет вам отрезать себе ногу, то вы можете использовать как можно больше защитных инструментов и практик. Вы можете использовать инструменты StyleCop, определить строгий стиль кодирования (попробуйте Google) и всегда подкреплять себя тестами. Тесты — это всегда хорошая идея, независимо от того, используете ли вы полный TDD или просто прагматичный, экономичный подход. Это упражнение в дисциплине, потому что инструменты безопасности «инвестируют в будущее людей».

Раздел 40: «Спрос и предложение на каждой платформе»

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

Если вам понравилась эта серия, пожалуйста, поставьте лайк, подпишитесь и подпишитесь, а также рассмотрите мою книгу на Amazon: https://goo.gl/Z16Dcf.