SlideShare a Scribd company logo
1 of 40
Download to read offline
Код на стероидах
    Пашкевич Дмитрий
    4й Омский IT-субботник
    2 марта 2013г
Моя карьера в IT
● Начал программировать еще в СССР
● ФМШ 64 - лаборант - 1995
● Кафедра Общей Физики ОмГУ - лаборант
  ○ компьютерное моделирование ВТСП СКВИДов
● Интернет-Центр ОмГУ
  ○   программист - 2001
  ○   ведущий программист
  ○   заведующий веб-лабораторией - 2003
  ○   LibNavigator - первая "шаровара"
● Тамтэк - основатель, директор - 2006
Владею технологиями
●   С/С++ (STL, WinAPI, MFC, POSIX)
●   Java (тысячи их!)
●   С# (1.0-3.5)
●   MatLab
●   PHP
●   XML / XSLT / XPath
●   SQL / NoSQL / NewSQL / YaSQL
●   Network protocols
●   Parallel computing
●   Cloud computing
Проекты (человеко-лет)
●   Tallygram (социальная сеть) ~11
●   NYTimes Sartre (эл. подписки) ~10
●   iFactory DeGruiter ~10
●   NYTimes EGNG (почтовые рассылки) ~7
●   AppNexus ~4
●   The Weekly Standard ~4
●   ...
●   Тамтэк ~100
Познакомились? Перейдем к делу!
Истории из жизни
Если вас беспокоит что-то из упомянутого,
или вы узнали в кейсах себя или свою
команду - нам с вами есть, что обсудить.
Истоки
Мы выложились как могли! Почему заказчик
недоволен?

Достаточно ли рефакторить код 2 раза в
неделю? Может лучше каждый день? Что
говорят гуру на этот счет?

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

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

Сделаем архитектуру, как в Инстаграмм.
Когда к нам придут миллионы
пользователей - мы уже будем готовы.
Новые няшки
Java недостаточно быстрая. Будем писать
на Erlang, заодно и изучим.

Вышла новая версия Spring Framework. Ура!
Переходим!

На форуме пишут, что эта новая библиотека
лучше всего подходит для нашей задачи.
Мы лучше знаем
Использование Active Record позволит
удешевить разработку в два раза? Чепуха!
Заказчик не откажется от хранимых
процедур - они безопасней.

Заказчик просит упростить архитектуру?
Сделаем как планировали - он нам потом
будет благодарен.
Мы просто лучше
Потомкам тех, кто запустил первого
человека в космос не пристало
быдлокодить!

Шеф хочет, чтобы мы работали “быстро и
грязно”. Вот недоумок! Так мы сделаем что
попало. Заказчик не будет доволен.

Домашнее задание: Вспомните еще 10 причин, почему
всегда нужно сразу писать правильный код.
А как же сроки?
● Без этой фичи продукт будет бесполезен.
  Ее нельзя выкидывать.
● Без такой архитектуры все рухнет под
  нагрузкой.
● Без этого рефакторинга в коде завтра
  невозможно будет разобраться.
● Я плохо знаю Scala, приходится
  разбираться "по ходу".

Домашнее задание: Вспомните еще 10 причин, почему
сроками проекта нужно пренебречь.
Ура! Картинки!
Поиграем в ассоциации
Где спрятана проблема?
1.   Знания
2.   Опыт
3.   Воспитание
4.   Гордыня
5.   Жизненная философия
Что делать?
1. Знания
   Учиться! Да! Но чему?
2. Опыт
   Да! Но сколько лет мне нужно?
3. Воспитание
   Что есть - то есть.
4. Гордыня
   Не лечится.
5. Жизненная философия
   А докажите свою правоту?
Что для нас главное?
- Красивый код? /привет, Фаулер!/

- Отсутствие в коде повторений?
/здравствуй, DRY!/

- Четкое следование канонам ООП или
другим шаблонам? /кто не следует GoF -
неудачник!/
Что для нас главное?
- Использование последних версий софта?
/в них ведь меньше багов!/

- Удовольствие от созерцания
многоуровневой архитектуры,
умещающейся только на листе A0? /мы ведь
не зря изучили “управление сложностью”?/

- Мнение коллег? /на Друпале пишут только
неудачники и быдлокодеры/
Что для нас главное?
- Сделать кого-то более счастливым?
Философия прагматичного
минимализма
KISS/Бритва Оккама. Не усложняйте
сущности сверх необходимости.

YAGNI. 20% фич потребуют 80% времени.
Реализуйте только то, что нужно вам прямо
сейчас.

Lean Startup. Не тратьте время и деньги на
то, что может оказаться никому не нужным.
Полезные советы
#1. Используйте проверенные
решения
Используйте решения, проверенные вами,
коллегами или сообществом.

Используйте “вчерашние” версии библиотек,
если только в них нет известных вам
серьезных дефектов или уязвимостей.
#2. Пишите на том, что вы лучше
знаете
Если вы гуру PHP - решайте задачу на PHP,
(если она вообще решается на PHP). Если
услышите, что решение на Scala будет
работать быстрее - 10 раз подумайте,
прежде чем сменить язык.

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

Не стоит использовать Java для
прототипирования. Не нужно использовать
Ruby в больших приложениях.
#4. Думайте про сегодняшний день
Большинство написанных приложений умрут
от того, что они будут никому не нужны, а не
от невозможности обслужить запросы
миллионов пользователей. Помните об
этом!

Если приложение “взлетит” - у вас будут и
деньги и время на то, чтобы переписать его
под миллионы пользователей и высокие
нагрузки.
#5. Никаких "прозапас"
Никогда не выбирайте библиотеку /
фреймворк / технологию по принципу
наличия чего-то, что вам возможно когда-то
понадобится. Практика говорит, что оно вам
не понадобится.
#6. Падения допустимы!
“Тройное дублирование” нужно только в
космосе. Для большинства приложений
допустимы “вылеты” и перерыве в работе.
#7. Избегайте преждевременной
оптимизации
Никогда не оптимизируйте код или
архитектуру заранее и наобум. Сначала
профилировка в условиях, максимально
приближенных к реальным - потом
оптимизация!
#8. Чем проще - тем лучше
Никогда не добавляйте слои абстракции “на
всякий случай”. Когда такой слой
понадобится - тогда и введете.
Современные IDE позволяют выполнять
подобный рефакторин “на раз”. Вообще,
старайтесь не делать ничего “на всякий
случай”.
#9. Делайте то, что действительно
нужно людям
Прежде чем вложить миллионы в стартап -
убедитесь, что он нужен людям, и будет
приносить прибыль.

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

Это будет длинный список (нагрузка,
интерфейс, сопровождение и тд) - поэтому
обязательно выясните, что из этого
наиболее важно. Каждое такое требование в
итоге может стоить миллионы. Чем-то
наверняка придется пренебречь.
#12. Выкидывайте лишнее
Если фича или какая-то “хотелка” сложна в
реализации, требует много времени / денег
или потребует серьезной переделки -
откажитесь от нее.
Народная мудрость
●   Будет день - и будет пища
●   Семь раз проверь - один отрежь
●   Все гениальное - просто
●   Лучшее - враг хорошего
●   First things first

"Нет цели лучше, я это понял
Чем приносить людям пользу."
(с) Влади (Каста)
Спасибо за внимание!
Пашкевич Дмитрий, Тамтэк
email: dmitry.pashkevich@thumbtack.net
skype: dmitrypashkevich
VK: vk.com/dmitrypashkevich

More Related Content

What's hot

Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыryba4
 
Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?SQALab
 
Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Alexey Rybak
 
От заката до рассвета | Максим Безуглый | Zlit Tech
От заката до рассвета | Максим Безуглый | Zlit TechОт заката до рассвета | Максим Безуглый | Zlit Tech
От заката до рассвета | Максим Безуглый | Zlit TechZlit
 
От энтузиаста к веб разработчику
От энтузиаста к веб разработчикуОт энтузиаста к веб разработчику
От энтузиаста к веб разработчикуNikolay Mironov
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7Alexander Levantovsky
 
UI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" PatternUI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" PatternÞorgeir Ingvarsson
 
Как учиться в вузе, заниматься предпринимательством и не умереть в процессе
Как учиться в вузе, заниматься предпринимательством и не умереть в процессеКак учиться в вузе, заниматься предпринимательством и не умереть в процессе
Как учиться в вузе, заниматься предпринимательством и не умереть в процессеMIkhail Neverov
 
Wooppay. Продуктовая сторона стартапа.
Wooppay. Продуктовая сторона стартапа. Wooppay. Продуктовая сторона стартапа.
Wooppay. Продуктовая сторона стартапа. Wooppay_official
 
Владимир Завертайлов. Выравнивание нагрузки в IT-компании: впихнуть невпихуемое.
Владимир Завертайлов. Выравнивание нагрузки в IT-компании: впихнуть невпихуемое.Владимир Завертайлов. Выравнивание нагрузки в IT-компании: впихнуть невпихуемое.
Владимир Завертайлов. Выравнивание нагрузки в IT-компании: впихнуть невпихуемое.ScrumTrek
 
Фреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverФреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverautomated-testing.info
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла0leGG
 
Jpoint 2017 - как это было (обзор конференции)
Jpoint 2017 - как это было (обзор конференции)Jpoint 2017 - как это было (обзор конференции)
Jpoint 2017 - как это было (обзор конференции)CleverDATA
 
Как отучить программиста колбасить (Прагматик 2012)
Как отучить программиста колбасить (Прагматик 2012)Как отучить программиста колбасить (Прагматик 2012)
Как отучить программиста колбасить (Прагматик 2012)Mikhail Payson
 
Дизайн в хаосе
Дизайн в хаосеДизайн в хаосе
Дизайн в хаосеArtur Kasimov
 
Проблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteПроблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteautomated-testing.info
 
Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.ScrumTrek
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.ScrumTrek
 

What's hot (20)

Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работы
 
Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?
 
Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)Про то, что (лекция для студентов об адаптации к работе)
Про то, что (лекция для студентов об адаптации к работе)
 
От заката до рассвета | Максим Безуглый | Zlit Tech
От заката до рассвета | Максим Безуглый | Zlit TechОт заката до рассвета | Максим Безуглый | Zlit Tech
От заката до рассвета | Максим Безуглый | Zlit Tech
 
От энтузиаста к веб разработчику
От энтузиаста к веб разработчикуОт энтузиаста к веб разработчику
От энтузиаста к веб разработчику
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7
 
UI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" PatternUI Automation Patterns: "Sleep" Pattern
UI Automation Patterns: "Sleep" Pattern
 
Как учиться в вузе, заниматься предпринимательством и не умереть в процессе
Как учиться в вузе, заниматься предпринимательством и не умереть в процессеКак учиться в вузе, заниматься предпринимательством и не умереть в процессе
Как учиться в вузе, заниматься предпринимательством и не умереть в процессе
 
Wooppay. Продуктовая сторона стартапа.
Wooppay. Продуктовая сторона стартапа. Wooppay. Продуктовая сторона стартапа.
Wooppay. Продуктовая сторона стартапа.
 
Владимир Завертайлов. Выравнивание нагрузки в IT-компании: впихнуть невпихуемое.
Владимир Завертайлов. Выравнивание нагрузки в IT-компании: впихнуть невпихуемое.Владимир Завертайлов. Выравнивание нагрузки в IT-компании: впихнуть невпихуемое.
Владимир Завертайлов. Выравнивание нагрузки в IT-компании: впихнуть невпихуемое.
 
Фреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverФреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriver
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Jpoint 2017 - как это было (обзор конференции)
Jpoint 2017 - как это было (обзор конференции)Jpoint 2017 - как это было (обзор конференции)
Jpoint 2017 - как это было (обзор конференции)
 
Как отучить программиста колбасить (Прагматик 2012)
Как отучить программиста колбасить (Прагматик 2012)Как отучить программиста колбасить (Прагматик 2012)
Как отучить программиста колбасить (Прагматик 2012)
 
Дизайн в хаосе
Дизайн в хаосеДизайн в хаосе
Дизайн в хаосе
 
Проблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteПроблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestComplete
 
Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.Юлия Викторова; Александр Тарасов. DevOps без булшита.
Юлия Викторова; Александр Тарасов. DevOps без булшита.
 
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
Александр Курдюков. Внедрение continuous delivery для гетерогенных поставок.
 
Why it is not working
Why it is not workingWhy it is not working
Why it is not working
 

Viewers also liked

2013-10-05 01 Екатерина Боброва. Обзор фреймворка Thucydides
2013-10-05 01 Екатерина Боброва. Обзор фреймворка Thucydides2013-10-05 01 Екатерина Боброва. Обзор фреймворка Thucydides
2013-10-05 01 Екатерина Боброва. Обзор фреймворка ThucydidesОмские ИТ-субботники
 
2016-04-30 02 Алексей Коровянский и Серик Бейсенов. Human centered design
2016-04-30 02 Алексей Коровянский и Серик Бейсенов. Human centered design2016-04-30 02 Алексей Коровянский и Серик Бейсенов. Human centered design
2016-04-30 02 Алексей Коровянский и Серик Бейсенов. Human centered designОмские ИТ-субботники
 
2013-02-02 04 Непомнящих. Распределение по проектам без простоев и скамейки…
2013-02-02 04 Непомнящих. Распределение по проектам без простоев и скамейки…2013-02-02 04 Непомнящих. Распределение по проектам без простоев и скамейки…
2013-02-02 04 Непомнящих. Распределение по проектам без простоев и скамейки…Омские ИТ-субботники
 
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIPОмские ИТ-субботники
 
2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом
2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом
2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндомОмские ИТ-субботники
 
2015-10-03 04 Федор Нисиченко. Системы стабилизации видеокамер
2015-10-03 04 Федор Нисиченко. Системы стабилизации видеокамер2015-10-03 04 Федор Нисиченко. Системы стабилизации видеокамер
2015-10-03 04 Федор Нисиченко. Системы стабилизации видеокамерОмские ИТ-субботники
 
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.jsОмские ИТ-субботники
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данныхОмские ИТ-субботники
 
2014-02-01 03 Алексей Зиновьев. Говнокод-шоу
2014-02-01 03 Алексей Зиновьев. Говнокод-шоу2014-02-01 03 Алексей Зиновьев. Говнокод-шоу
2014-02-01 03 Алексей Зиновьев. Говнокод-шоуОмские ИТ-субботники
 
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервисаОмские ИТ-субботники
 
2013-09-07 02 Сергей Назаренко. Почему они мне не подчиняются?
2013-09-07 02 Сергей Назаренко. Почему они мне не подчиняются?2013-09-07 02 Сергей Назаренко. Почему они мне не подчиняются?
2013-09-07 02 Сергей Назаренко. Почему они мне не подчиняются?Омские ИТ-субботники
 
2013-11-09 01 Дмитрий Голушко. Опыт использования Grails
2013-11-09 01 Дмитрий Голушко. Опыт использования Grails2013-11-09 01 Дмитрий Голушко. Опыт использования Grails
2013-11-09 01 Дмитрий Голушко. Опыт использования GrailsОмские ИТ-субботники
 
2015 01-03 04 Игорь Гончаровский. Обзор технологий VoIP
2015 01-03 04 Игорь Гончаровский. Обзор технологий VoIP2015 01-03 04 Игорь Гончаровский. Обзор технологий VoIP
2015 01-03 04 Игорь Гончаровский. Обзор технологий VoIPОмские ИТ-субботники
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!Омские ИТ-субботники
 
2013-11-09 03 Евгений Тюменцев. Подходы к реализации модели акторов
2013-11-09 03 Евгений Тюменцев. Подходы к реализации модели акторов2013-11-09 03 Евгений Тюменцев. Подходы к реализации модели акторов
2013-11-09 03 Евгений Тюменцев. Подходы к реализации модели акторовОмские ИТ-субботники
 

Viewers also liked (15)

2013-10-05 01 Екатерина Боброва. Обзор фреймворка Thucydides
2013-10-05 01 Екатерина Боброва. Обзор фреймворка Thucydides2013-10-05 01 Екатерина Боброва. Обзор фреймворка Thucydides
2013-10-05 01 Екатерина Боброва. Обзор фреймворка Thucydides
 
2016-04-30 02 Алексей Коровянский и Серик Бейсенов. Human centered design
2016-04-30 02 Алексей Коровянский и Серик Бейсенов. Human centered design2016-04-30 02 Алексей Коровянский и Серик Бейсенов. Human centered design
2016-04-30 02 Алексей Коровянский и Серик Бейсенов. Human centered design
 
2013-02-02 04 Непомнящих. Распределение по проектам без простоев и скамейки…
2013-02-02 04 Непомнящих. Распределение по проектам без простоев и скамейки…2013-02-02 04 Непомнящих. Распределение по проектам без простоев и скамейки…
2013-02-02 04 Непомнящих. Распределение по проектам без простоев и скамейки…
 
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
2016-09-17 01 Василий Полозов. Обзор понятий и технологий VoIP
 
2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом
2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом
2016-04-30 05 Даниил Валов. Apiary - где-то между фронтендом и бэкэндом
 
2015-10-03 04 Федор Нисиченко. Системы стабилизации видеокамер
2015-10-03 04 Федор Нисиченко. Системы стабилизации видеокамер2015-10-03 04 Федор Нисиченко. Системы стабилизации видеокамер
2015-10-03 04 Федор Нисиченко. Системы стабилизации видеокамер
 
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
 
2014-02-01 03 Алексей Зиновьев. Говнокод-шоу
2014-02-01 03 Алексей Зиновьев. Говнокод-шоу2014-02-01 03 Алексей Зиновьев. Говнокод-шоу
2014-02-01 03 Алексей Зиновьев. Говнокод-шоу
 
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
2015 09-05 02 Сергей Сорокин. Обзор и анализ мобильного backend сервиса
 
2013-09-07 02 Сергей Назаренко. Почему они мне не подчиняются?
2013-09-07 02 Сергей Назаренко. Почему они мне не подчиняются?2013-09-07 02 Сергей Назаренко. Почему они мне не подчиняются?
2013-09-07 02 Сергей Назаренко. Почему они мне не подчиняются?
 
2013-11-09 01 Дмитрий Голушко. Опыт использования Grails
2013-11-09 01 Дмитрий Голушко. Опыт использования Grails2013-11-09 01 Дмитрий Голушко. Опыт использования Grails
2013-11-09 01 Дмитрий Голушко. Опыт использования Grails
 
2015 01-03 04 Игорь Гончаровский. Обзор технологий VoIP
2015 01-03 04 Игорь Гончаровский. Обзор технологий VoIP2015 01-03 04 Игорь Гончаровский. Обзор технологий VoIP
2015 01-03 04 Игорь Гончаровский. Обзор технологий VoIP
 
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
2012-12-01 03 Битва ORM: Hibernate vs MyBatis. Давайте жить дружно!
 
2013-11-09 03 Евгений Тюменцев. Подходы к реализации модели акторов
2013-11-09 03 Евгений Тюменцев. Подходы к реализации модели акторов2013-11-09 03 Евгений Тюменцев. Подходы к реализации модели акторов
2013-11-09 03 Евгений Тюменцев. Подходы к реализации модели акторов
 

Similar to 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах

Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRАлександр Алаев
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU
 
5 правил успешной разработки приложений для бренда
5 правил успешной разработки приложений для бренда 5 правил успешной разработки приложений для бренда
5 правил успешной разработки приложений для бренда Heads&Hands
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobАліна Шепшелей
 
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"Inhacking
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for DummiesCOTOHA
 
Интернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияИнтернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияnomoretears
 
Практика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковПрактика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковSQALab
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныRoman Dvornov
 
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряорганизация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряit-people
 
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажатьИнструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажатьNetpeak
 
Проектирование с учетом пользовательских требований
Проектирование с учетом пользовательских требованийПроектирование с учетом пользовательских требований
Проектирование с учетом пользовательских требованийCEE-SEC(R)
 
я выбираю профессию в It
я выбираю профессию в Itя выбираю профессию в It
я выбираю профессию в Itmalahova-helen
 
Говорим о СУБД языком HR
Говорим о СУБД языком HRГоворим о СУБД языком HR
Говорим о СУБД языком HRKonstantin Osipov
 

Similar to 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах (20)

Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseR
 
IT basics for non technical CEO (Rus)
IT basics for non technical CEO (Rus)IT basics for non technical CEO (Rus)
IT basics for non technical CEO (Rus)
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
5 правил успешной разработки приложений для бренда
5 правил успешной разработки приложений для бренда 5 правил успешной разработки приложений для бренда
5 правил успешной разработки приложений для бренда
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a job
 
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Основы разработки сайтов by Uplab
Основы разработки сайтов by UplabОсновы разработки сайтов by Uplab
Основы разработки сайтов by Uplab
 
Programmers' Mistakes for Dummies
Programmers' Mistakes for DummiesProgrammers' Mistakes for Dummies
Programmers' Mistakes for Dummies
 
Интернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияИнтернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятия
 
Практика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковПрактика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиков
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряорганизация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
 
Apalon
ApalonApalon
Apalon
 
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажатьИнструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
 
Проектирование с учетом пользовательских требований
Проектирование с учетом пользовательских требованийПроектирование с учетом пользовательских требований
Проектирование с учетом пользовательских требований
 
User Story Canvas
User Story CanvasUser Story Canvas
User Story Canvas
 
я выбираю профессию в It
я выбираю профессию в Itя выбираю профессию в It
я выбираю профессию в It
 
Говорим о СУБД языком HR
Говорим о СУБД языком HRГоворим о СУБД языком HR
Говорим о СУБД языком HR
 

More from Омские ИТ-субботники

2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!Омские ИТ-субботники
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKitОмские ИТ-субботники
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?Омские ИТ-субботники
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальноеОмские ИТ-субботники
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системыОмские ИТ-субботники
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидацииОмские ИТ-субботники
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...Омские ИТ-субботники
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...Омские ИТ-субботники
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторыОмские ИТ-субботники
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленкеОмские ИТ-субботники
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборотОмские ИТ-субботники
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...Омские ИТ-субботники
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность Омские ИТ-субботники
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?Омские ИТ-субботники
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикерОмские ИТ-субботники
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of ThingsОмские ИТ-субботники
 

More from Омские ИТ-субботники (20)

2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
 
2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
 
2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC
 

2013-03-02 02 Дмитрий Пашкевич. Код на стероидах

  • 1. Код на стероидах Пашкевич Дмитрий 4й Омский IT-субботник 2 марта 2013г
  • 2. Моя карьера в IT ● Начал программировать еще в СССР ● ФМШ 64 - лаборант - 1995 ● Кафедра Общей Физики ОмГУ - лаборант ○ компьютерное моделирование ВТСП СКВИДов ● Интернет-Центр ОмГУ ○ программист - 2001 ○ ведущий программист ○ заведующий веб-лабораторией - 2003 ○ LibNavigator - первая "шаровара" ● Тамтэк - основатель, директор - 2006
  • 3. Владею технологиями ● С/С++ (STL, WinAPI, MFC, POSIX) ● Java (тысячи их!) ● С# (1.0-3.5) ● MatLab ● PHP ● XML / XSLT / XPath ● SQL / NoSQL / NewSQL / YaSQL ● Network protocols ● Parallel computing ● Cloud computing
  • 4. Проекты (человеко-лет) ● Tallygram (социальная сеть) ~11 ● NYTimes Sartre (эл. подписки) ~10 ● iFactory DeGruiter ~10 ● NYTimes EGNG (почтовые рассылки) ~7 ● AppNexus ~4 ● The Weekly Standard ~4 ● ... ● Тамтэк ~100
  • 6. Истории из жизни Если вас беспокоит что-то из упомянутого, или вы узнали в кейсах себя или свою команду - нам с вами есть, что обсудить.
  • 7. Истоки Мы выложились как могли! Почему заказчик недоволен? Достаточно ли рефакторить код 2 раза в неделю? Может лучше каждый день? Что говорят гуру на этот счет? Говорят, что американские программисты продуктивней. Может быть они умнее?
  • 8. О будущем Наверняка нам нужно будет сменить базу данных через год. Добавим слой абстракции, чтобы можно было сделать это за пару дней. Вот здесь после выхода в продакшн нам наверняка понадобится справляться с нагрузками. Выделим отдельный сервис. Сделаем архитектуру, как в Инстаграмм. Когда к нам придут миллионы пользователей - мы уже будем готовы.
  • 9. Новые няшки Java недостаточно быстрая. Будем писать на Erlang, заодно и изучим. Вышла новая версия Spring Framework. Ура! Переходим! На форуме пишут, что эта новая библиотека лучше всего подходит для нашей задачи.
  • 10. Мы лучше знаем Использование Active Record позволит удешевить разработку в два раза? Чепуха! Заказчик не откажется от хранимых процедур - они безопасней. Заказчик просит упростить архитектуру? Сделаем как планировали - он нам потом будет благодарен.
  • 11. Мы просто лучше Потомкам тех, кто запустил первого человека в космос не пристало быдлокодить! Шеф хочет, чтобы мы работали “быстро и грязно”. Вот недоумок! Так мы сделаем что попало. Заказчик не будет доволен. Домашнее задание: Вспомните еще 10 причин, почему всегда нужно сразу писать правильный код.
  • 12. А как же сроки? ● Без этой фичи продукт будет бесполезен. Ее нельзя выкидывать. ● Без такой архитектуры все рухнет под нагрузкой. ● Без этого рефакторинга в коде завтра невозможно будет разобраться. ● Я плохо знаю Scala, приходится разбираться "по ходу". Домашнее задание: Вспомните еще 10 причин, почему сроками проекта нужно пренебречь.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. Где спрятана проблема? 1. Знания 2. Опыт 3. Воспитание 4. Гордыня 5. Жизненная философия
  • 21. Что делать? 1. Знания Учиться! Да! Но чему? 2. Опыт Да! Но сколько лет мне нужно? 3. Воспитание Что есть - то есть. 4. Гордыня Не лечится. 5. Жизненная философия А докажите свою правоту?
  • 22. Что для нас главное? - Красивый код? /привет, Фаулер!/ - Отсутствие в коде повторений? /здравствуй, DRY!/ - Четкое следование канонам ООП или другим шаблонам? /кто не следует GoF - неудачник!/
  • 23. Что для нас главное? - Использование последних версий софта? /в них ведь меньше багов!/ - Удовольствие от созерцания многоуровневой архитектуры, умещающейся только на листе A0? /мы ведь не зря изучили “управление сложностью”?/ - Мнение коллег? /на Друпале пишут только неудачники и быдлокодеры/
  • 24. Что для нас главное? - Сделать кого-то более счастливым?
  • 25. Философия прагматичного минимализма KISS/Бритва Оккама. Не усложняйте сущности сверх необходимости. YAGNI. 20% фич потребуют 80% времени. Реализуйте только то, что нужно вам прямо сейчас. Lean Startup. Не тратьте время и деньги на то, что может оказаться никому не нужным.
  • 27. #1. Используйте проверенные решения Используйте решения, проверенные вами, коллегами или сообществом. Используйте “вчерашние” версии библиотек, если только в них нет известных вам серьезных дефектов или уязвимостей.
  • 28. #2. Пишите на том, что вы лучше знаете Если вы гуру PHP - решайте задачу на PHP, (если она вообще решается на PHP). Если услышите, что решение на Scala будет работать быстрее - 10 раз подумайте, прежде чем сменить язык. Ваша неопытность сведет все преимущества нового языка на нет. Это можно делать, когда сроки проекта - не критичны, и вы сможете все переписать с нуля.
  • 29. #3. Выбирайте подходящие инструменты Знайте область применимости и рекомендуемые сценарии использования систем и фреймворков. Не стоит использовать Java для прототипирования. Не нужно использовать Ruby в больших приложениях.
  • 30. #4. Думайте про сегодняшний день Большинство написанных приложений умрут от того, что они будут никому не нужны, а не от невозможности обслужить запросы миллионов пользователей. Помните об этом! Если приложение “взлетит” - у вас будут и деньги и время на то, чтобы переписать его под миллионы пользователей и высокие нагрузки.
  • 31. #5. Никаких "прозапас" Никогда не выбирайте библиотеку / фреймворк / технологию по принципу наличия чего-то, что вам возможно когда-то понадобится. Практика говорит, что оно вам не понадобится.
  • 32. #6. Падения допустимы! “Тройное дублирование” нужно только в космосе. Для большинства приложений допустимы “вылеты” и перерыве в работе.
  • 33. #7. Избегайте преждевременной оптимизации Никогда не оптимизируйте код или архитектуру заранее и наобум. Сначала профилировка в условиях, максимально приближенных к реальным - потом оптимизация!
  • 34. #8. Чем проще - тем лучше Никогда не добавляйте слои абстракции “на всякий случай”. Когда такой слой понадобится - тогда и введете. Современные IDE позволяют выполнять подобный рефакторин “на раз”. Вообще, старайтесь не делать ничего “на всякий случай”.
  • 35. #9. Делайте то, что действительно нужно людям Прежде чем вложить миллионы в стартап - убедитесь, что он нужен людям, и будет приносить прибыль. Если это работа на заказ - убедитесь, что заказчик проверил это, иначе даже отличный продукт окажется на свалке истории. И кто будет счастливым в конце?
  • 36. #10. Помогайте клиенту Они сами не всегда понимают, что именно им нужно. Если вы уверены, что проект в таком виде не “выстрелит” - говорите об этом клиенту, не боясь потерять контракт. Наша миссия - помогать людям, а не выкачивать из них деньги. Если клиент упорствует - что ж, это его право. Делайте, как он велит со спокойной совестью. В следующий раз он будет прислушиваться к вашим рекомендациям.
  • 37. #11. Приоретезируйте нефункциональные требования Обязательно выясяйте нефункциональные требования к системе с помощью вопросов, на которые заказчик способен ответить. Это будет длинный список (нагрузка, интерфейс, сопровождение и тд) - поэтому обязательно выясните, что из этого наиболее важно. Каждое такое требование в итоге может стоить миллионы. Чем-то наверняка придется пренебречь.
  • 38. #12. Выкидывайте лишнее Если фича или какая-то “хотелка” сложна в реализации, требует много времени / денег или потребует серьезной переделки - откажитесь от нее.
  • 39. Народная мудрость ● Будет день - и будет пища ● Семь раз проверь - один отрежь ● Все гениальное - просто ● Лучшее - враг хорошего ● First things first "Нет цели лучше, я это понял Чем приносить людям пользу." (с) Влади (Каста)
  • 40. Спасибо за внимание! Пашкевич Дмитрий, Тамтэк email: dmitry.pashkevich@thumbtack.net skype: dmitrypashkevich VK: vk.com/dmitrypashkevich