Тесты в ущерб мышлению.
Избыток тестов загоняет в мир оградительного программирования.
Кто-нибудь использует дорожное ограждение при поездке?
Кто водит машину, стукаясь об ограждения, говоря:
«Вау! Я рад, что у меня есть эти ограждения, иначе я никогда бы не приехал вовремя.»
Ограждения помогают вам добраться до места?
Направляют вас?
Нет. Хотя они повсюду, они не направляют вашу машину в какое-то конкретное направление.
Спринты.
Бегуны не бегут 1 километр как 10 раз по 100 метров. Слабаки!
А вот менеджеры проектов придумали программистам спринты! Они считают что рассчитывать силы на километр глупо, умнее просто бегать 10 раз по 100 метров подряд, потом удивляются, что суммарное время выхода продукта оказалось гораздо больше расчётного.
Если замедлился при программировании - ты работал спринтами, бездумно.
При создании сложного продукта, на старте нельзя "бежать" как на 100 метров, нужно медитировать на простоту, чтобы сложность не помешала создать продукт ...
Различай когда ты спринтер, а когда стайер.
Не порть данные.
При создании информационных систем мы обрабатываем данные.
Данные просты - списки, словари, множества ... - их мало.
А мы (разработчики) их обкладываем сложными конструкциями, тыщи вариантов, отдаляющих от сути данных (вещей).
Не усложняй себе труд - манипулируй данными (списки, словари, множества) напрямую.
Суть простоты в
незапутанности, в несвязности с чем-либо ещё.
а не в том, чтобы заранее знать.
Полиморфизм по запросу.
Ваша жизнь абсолютно, полностью изменится, когда вы соедините вместе структуры данных и операции над ними.
Это три независимых операции.
Другими словами, генерализация/абстракция не связана с чем-то конкретным.
Она доступна по запросу.
Резюме.
Программирование сводится к эффективному мышлению и избеганию неуправляемой сложности, к упрощению (разделяй и властвуй) многочисленных проблем.
Абстракции проектирования.
Значит что-то отделить. И, в частности,
отделить от физической природы чего-либо.
Но это НЕ «скрывать вещи».
один из подходов:
кто, что, когда, где, почему и как?
Затем наборам функций присваиваем имена, создаём категории вещей, но маленьких, а не гигантов интерфейсов.
Большая проблема.
Если вы сплетаетесь с «как», заклинивая вместе, говоря, что это просто конкретная функция вместо интерфейса, или вот конкретный класс
вместо интерфейса.
Можете сплестись с «как» более "тонко", добавляя семантику функции,
диктующую как это должно быть сделано.
Строгое разделение «что» и «как»
является ключом к решению проблемы «как».
Остерегайтесь абстракций, которые каким-то изощренным образом диктуют как должно быть - Вы связываете себе руки.
Сложно === неправильно.
Простота не является целью, но она даёт шанс понять "реальный" смысл событий.
Потребуется постоянная бдительность.
Ваши ощущения, что простота === легкости использования, не верны.
Инструменты надёжности, они не о простоте, они вторичны, не касаются сути проблемы.
Это защитные сети, но не более того.
Легко != просто.
"Легко" субъективно, касается личного опыта.
Мне легко говорить по русски, а кому-то нет.
"Просто" - объективно, про надёжность системы - каждая строка кода, должна быть простой сама по себе для понимания - чтобы мы понимали и могли легко изменять систему, соблюдая принципы простоты.
Мы одержимы «лёгким».
Хочется получить быстро и без усилий, без учёта последствий.
Это приводит к тому, что мы жертвуем простотой в долгосрочной перспективе.
- Вместо того, чтобы говорить правду и давать обратную связь (если чье-то поведение по отношению к нам неприемлемо), мы предпочитаем лгать или держать свои мысли при себе.
- Вместо того, чтобы заниматься профилактической медициной и регулярно проверяться у врачей, мы часто предпочитаем не обращать внимания и обращаться за помощью, когда ситуация ужасна.
- Вместо того, чтобы потратить 15 минут на чтение руководства к устройству или программе, мы спешим начать им пользоваться, а затем тратим часы на ремонт или потому, что не используем новую функцию экономии времени, о которой говорилось в руководстве.
- Вместо того, чтобы лечь спать и отложить занятие на следующее утро, мы бодрствуем до 2–3–4 часов ночи, не высыпаемся и следующий день у нас непродуктивный.
Если мы выбираем «легко», мы не будем совершенствоваться, потому что мы не покинем зону комфорта, которая необходима для обучения.
Изучить свои привычки и вещи, которые вас сегодня окружают.
Почему вы выбрали именно их?
Попытайтесь найти что-то более простое и попробуйте использовать это.