Save 37% off PRO during our Black Friday Sale! »

Stuff That Works

Stuff That Works

A big rant about stuff that works in software engineering

A8d8ca813a744866b9f85ea1cefb5813?s=128

Sergey Arkhipov

December 10, 2016
Tweet

Transcript

  1. Вещи, которые работают Архипов Сергей

  2. 1 0

  3. lim n→0 1 n =∞

  4. lim n→0 n2 n =0

  5. x 0 ≡lim n→0 x n

  6. Чему учат в университете 1. Нужно создавать иерархии 2. Инкаспуляция,

    наследование, полиморфизм 3. CMMI 3, ISO 9001 4. TDD 5. … 6. PROFIT!
  7. Жизненный цикл проекта ТЗ Общий каркас Очень быстрая разработка Быстрая

    разработка, первые демо и фидбек Спокойная доработка Стабилизация
  8. Что есть в жизни 1. Конечный продукт плохо подходит под

    начальное ТЗ 2. Асапчики 3. Легаси код 4. Костыль дривен девелопмент 5. Бизнес лихорадит 6. У каждого свое мнение, как правильно 7. …
  9. Жизненный цикл проекта Поддержка, развитие Р В

  10. Что есть в жизни 1. Конечный продукт плохо подходит под

    начальное ТЗ 2. Асапчики 3. Легаси код 4. Костыль дривен девелопмент 5. Бизнес лихорадит 6. У каждого свое мнение, как правильно 7. …
  11. Что есть в жизни 1. Конечный продукт плохо подходит под

    начальное ТЗ 2. Асапчики 3. Легаси код 4. Костыль дривен девелопмент 5. Бизнес лихорадит 6. У каждого свое мнение, как правильно 7. …
  12. Чему учат в университете 1. Нужно создавать иерархии 2. Инкаспуляция,

    наследование, полиморфизм 3. CMMI 3, ISO 9001 4. TDD 5. … 6. PROFIT!
  13. Причины проблем на проекте Люди Технологии

  14. Где, блять, люди?

  15. Нормально делай — нормально будет!

  16. Жизненный цикл проекта Поддержка, развитие Р В

  17. Правда, которую никто не слушает 1. Нормальных семейТЗ не бывает;

    2. Пишите просто. Сложно всегда успеете; 3. Легко усложнить, сложно упростить; 4. Стремитесь разорвать код на независимые куски; 5. Относитесь к другим так, как хотите, чтобы относились к вам; 6. Пишите ясные и понятные тесты
  18. Мировоззрение

  19. None
  20. Ментальная карта проекта

  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. None
  30. None
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. None
  38. Что я хотел этим сказать 1. Большой ООП проект редко

    сужается; 2. Мы можем держать только небольшой кусок контекста в голове; 3. Чем сильнее отдельный кусок связан (coupled) с другими кусочками, тем сложнее восстановить в голове нужный контекст; 4. Для любого нового человека в команде ваш прекрасно написанный проект выглядит комком плохо продуманных зависимостей.
  39. Это не работает 1. Чем дальше — тем сложнее расширять

    проект; 2. Вы не умнее жизни; 3. Производительность программистов не должна снижаться со временем.
  40. Что работает 1. Пишите абстракции только тогда, когда становится сложно

    писать реализации; 2. Идеи из FP: иммутабельность и чистота; 3. Unix — платформа, а не просто способ пускать программы; 4. Рвите монолиты на отдельные программы; 5. Минимизируйте зависимости; 6. Сопротивляйтесь изменениям 7. Однопоточность > threads > processes > async > distributed;
  41. Библиотеки

  42. О библиотеках 1. Максимально используйте стандартную библиотеку; 2. Используйте такие

    библиотеки, использование которых стоит убитого вечера и нервов; 3. Используйте проверенные библиотеки; 4. Не надейтесь, что кто-то починит вам баг; 5. Не верьте бенчмаркам; 6. Лучше изобретите маленький велосипед, тащите библиотеку от безысходности.
  43. Суббота. Вечер. День рождения второй половины. Въебал продакшн.

  44. Юниттесты

  45. Юниттесты 1. Проверка работоспособности — отчасти. 2. Документация — вряд

    ли; 3. Юниттесты — трассировка контекста, программное закрепление дампа из головы; 4. Покрывайте код максимальным количеством простых тестов: так лучше восстанавливается контекст.
  46. Юниттесты def test_something(fix1, fix2, ...): action1 action2 ... assert1 ...

  47. Комментарии

  48. Комментарии 1. Комментарии в жизни не работают. 2. Документация —

    работает. Пишите сразу короткую документацию. 3. Если тяжело описать что-то — сразу переписывайте.
  49. О людях

  50. О людях 1. Чем больше синьор, тем больше приходится общаться;

    2. Не рвитесь в синьоры/менеджеры; 3. Учитесь общаться и находить компромиссы; 4. Минимизируйте человеческий фактор; 5. Не будьте мудаками.
  51. @9seconds    https://speakerdeck.com/9seconds/stuff-that-works