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

40
Код на стероидах Пашкевич Дмитрий 4й Омский IT-субботник 2 марта 2013г

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

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

Код на стероидахПашкевич Дмитрий4й Омский IT-субботник2 марта 2013г

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

Моя карьера в IT

● Начал программировать еще в СССР● ФМШ 64 - лаборант - 1995● Кафедра Общей Физики ОмГУ - лаборант

○ компьютерное моделирование ВТСП СКВИДов● Интернет-Центр ОмГУ

○ программист - 2001○ ведущий программист○ заведующий веб-лабораторией - 2003○ LibNavigator - первая "шаровара"

● Тамтэк - основатель, директор - 2006

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

Владею технологиями

● С/С++ (STL, WinAPI, MFC, POSIX)● Java (тысячи их!)● С# (1.0-3.5)● MatLab● PHP● XML / XSLT / XPath● SQL / NoSQL / NewSQL / YaSQL● Network protocols● Parallel computing● Cloud computing

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

Проекты (человеко-лет)

● Tallygram (социальная сеть) ~11● NYTimes Sartre (эл. подписки) ~10● iFactory DeGruiter ~10 ● NYTimes EGNG (почтовые рассылки) ~7● AppNexus ~4● The Weekly Standard ~4● ...● Тамтэк ~100

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

Познакомились? Перейдем к делу!

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

Истории из жизни

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

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

Истоки

Мы выложились как могли! Почему заказчик недоволен?

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

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

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

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

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

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

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

Новые няшки

Java недостаточно быстрая. Будем писать на Erlang, заодно и изучим.

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

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

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

Мы лучше знаем

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

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

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

Мы просто лучше

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

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

Домашнее задание: Вспомните еще 10 причин, почему всегда нужно сразу писать правильный код.

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

А как же сроки?

● Без этой фичи продукт будет бесполезен. Ее нельзя выкидывать.

● Без такой архитектуры все рухнет под нагрузкой.

● Без этого рефакторинга в коде завтра невозможно будет разобраться.

● Я плохо знаю Scala, приходится разбираться "по ходу".

Домашнее задание: Вспомните еще 10 причин, почему сроками проекта нужно пренебречь.

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

Ура! Картинки!

Поиграем в ассоциации

Page 14: 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Page 15: 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Page 16: 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Page 17: 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Page 18: 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Page 19: 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Page 20: 2013-03-02 02 Дмитрий Пашкевич. Код на стероидах

Где спрятана проблема?

1. Знания2. Опыт3. Воспитание4. Гордыня5. Жизненная философия

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

Что делать?1. Знания

Учиться! Да! Но чему?2. Опыт

Да! Но сколько лет мне нужно?3. Воспитание

Что есть - то есть.4. Гордыня

Не лечится.5. Жизненная философия

А докажите свою правоту?

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

Что для нас главное?

- Красивый код? /привет, Фаулер!/

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

- Четкое следование канонам ООП или другим шаблонам? /кто не следует GoF - неудачник!/

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

Что для нас главное?

- Использование последних версий софта? /в них ведь меньше багов!/

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

- Мнение коллег? /на Друпале пишут только неудачники и быдлокодеры/

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

Что для нас главное?

- Сделать кого-то более счастливым?

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

Философия прагматичного минимализма

KISS/Бритва Оккама. Не усложняйте сущности сверх необходимости.

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

Lean Startup. Не тратьте время и деньги на то, что может оказаться никому не нужным.

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

Полезные советы

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

#1. Используйте проверенные решения

Используйте решения, проверенные вами, коллегами или сообществом.

Используйте “вчерашние” версии библиотек, если только в них нет известных вам серьезных дефектов или уязвимостей.

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

#2. Пишите на том, что вы лучше знаете

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

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

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

#3. Выбирайте подходящие инструменты

Знайте область применимости и рекомендуемые сценарии использования систем и фреймворков.

Не стоит использовать Java для прототипирования. Не нужно использовать Ruby в больших приложениях.

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

#4. Думайте про сегодняшний день

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

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

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

#5. Никаких "прозапас"

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

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

#6. Падения допустимы!

“Тройное дублирование” нужно только в космосе. Для большинства приложений допустимы “вылеты” и перерыве в работе.

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

#7. Избегайте преждевременной оптимизации

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

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

#8. Чем проще - тем лучше

Никогда не добавляйте слои абстракции “на всякий случай”. Когда такой слой понадобится - тогда и введете. Современные IDE позволяют выполнять подобный рефакторин “на раз”. Вообще, старайтесь не делать ничего “на всякий случай”.

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

#9. Делайте то, что действительно нужно людям

Прежде чем вложить миллионы в стартап - убедитесь, что он нужен людям, и будет приносить прибыль.

Если это работа на заказ - убедитесь, что заказчик проверил это, иначе даже отличный продукт окажется на свалке истории. И кто будет счастливым в конце?

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

#10. Помогайте клиенту

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

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

#11. Приоретезируйте нефункциональные требования

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

Это будет длинный список (нагрузка, интерфейс, сопровождение и тд) - поэтому обязательно выясните, что из этого наиболее важно. Каждое такое требование в итоге может стоить миллионы. Чем-то наверняка придется пренебречь.

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

#12. Выкидывайте лишнее

Если фича или какая-то “хотелка” сложна в реализации, требует много времени / денег или потребует серьезной переделки - откажитесь от нее.

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

Народная мудрость

● Будет день - и будет пища● Семь раз проверь - один отрежь● Все гениальное - просто● Лучшее - враг хорошего● First things first

"Нет цели лучше, я это понялЧем приносить людям пользу."(с) Влади (Каста)

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

Спасибо за внимание!

Пашкевич Дмитрий, Тамтэкemail: [email protected]: dmitrypashkevichVK: vk.com/dmitrypashkevich