Чтобы быстро делать работу, нужно хорошо знать свои инструменты. С одной стороны — это кажется очевидным, с другой стороны — до практики этот принцип обычно не доходит. По крайней мере, я сам этим пренебрегаю — вот только недавно потратил несколько часов на выяснение того, как завести тестовый дубль в mountebank.
Программисты часто в процессе работы гуглят, как что сделать. Так ни на какое «состояние потока» рассчитывать не приходится. Понятно, что нельзя знать всего, но если бы нужно было гуглить только по конкретной задаче, то количество запросов бы сильно уменьшилось.
Когда ты взял задачу в работу, у тебя есть несколько источников неопределенности:
- плохо проясненные требования;
- неожиданное поведение системы, с которой надо взаимодействовать;
- поведение твоих собственных инструментов.
Инструменты — единственное, что полностью находится в зоне контроля программиста и имеет смысл все прояснить заранее.
И самое неприятное. Когда что-то идет не так как задумано, то ты не понимаешь — это твой косяк или система ведет себя не так, как ты ожидал. И время разбирательства возрастает очень сильно.
Что я думаю делать с этим?
- делать песочницы для тех инструментов, которыми я пользуюсь и «играть»;
- вести реестр знакомых инструментов;
- ограничивать новизну инструментов в своих проектах.