12/03/2021
Из общения в нашем комьюнити в слаке:
"...заметила, что от себя требую уже сразу понимать и объяснять другой код и, наверное, по этому и прихожу к выводу, что ничего не понимаю. А надо просто идти дальше." (с) Когда-нибудь Senior Java Developer
Именно так. Меньше требований к себе. Больше терпения и усидчивости. Радуйся там, где проясняется, где начинает получаться. Эти маленькие победы - наш золотой песок на прииске.
Вот например мой проект сейчас https://github.com/codenjoyme/codenjoy Он состоит из 7761 коммитов. Это не много. И он сравнительно не сложный. Но пишу я его с переменным успехом вот уже лет 6.
Если бы кто-то сказал, что может сразу же осознать и придумать что-то такое же и написать за неделю-месяц - я не поверю. За это время будет ну 100 коммитов, ну 200 от силы.
Тут "один коммит" - это небольшое изменение, где добавляется какая-то новая особенность или часть возможной будущей задумки. И так, шаг за шагом. По 5-10-20 коммитов в день мы и движемся вперед.
Вот последние коммиты мои (тут показано что в коде было и на что поменялось):
https://github.com/codenjoyme/codenjoy/commit/404892e5f487f1e5d4a576fef241d9ec37f14fde
https://github.com/codenjoyme/codenjoy/commit/de7d818209a1f052193e6e08390f226125a9b1e6
https://github.com/codenjoyme/codenjoy/commit/a6723a479812eb5dcdcb68cca4ddb77eaa6f4652
https://github.com/codenjoyme/codenjoy/commit/39157387cb698a524685c1a4ffab51b2da1da340
https://github.com/codenjoyme/codenjoy/commit/7095affedc1d7c1592ce628c2c2dadc97de4f0bd
С ними я сегодня провозился весь день. Много пришлось погуглить, много неудачных попыток попробовать. Но как только все заработало, я тут же это сохранил. Теперь оно есть, а я могу подумать и потрудиться над чем-то другим.
Так песчинка за песчинкой...
Вот например сейчас, пока еще есть пару часов до сна я хочу сделать еще одно улучшение. У меня от недавнего времени есть чат. Он очень простой и не умеет подгружать прошлую историю. А хочу, чтобы мог. Понятия не имею как это сделать. Но приблизительно понимаю, как это будет выглядеть. Много чатов перевидал уже.
Буду скролить в начало чата, и когда достигну тогда у меня там появится визуализация загрузки. На сервер пойдет запрос за новой порцией данных. А когда ответ придет, я дорисую чат с новым солержимым. Этим дам возможность юзеру снова поскролисть в самое начало.
Вся эта задача по моему опыту потянет на 3-5 комитов. И я начну с того, что пойму как определить, что я доскролил до нужного места. Потом пойму, как послать запрос на сервер. Потом пойму, как получить данные с сервера. Потом отрисую их в чате. И настрою загрузку новой порции.
Этой информации мне достаточно чтобы приступить. Я пока перестану думать о всем функционале вместе и переключусь к самой первой задаче. Как понять, что я доскролил до нужного места? И сейчас я думаю только над этим - над тем что у меня в руках: 1 молоток, 1 гвоздь, доска и пальцы. Так я со временем построю весь дом.
Большую часть времени мне не надо понимать, как все должно работать вместе. Я просто время от времени буду отходить на расстояние - смотреть на картинку целиком и додумывать, что еще можно тут улучшить. Но 80% работы - концентрация в каком-то узком месте без ощущения всей картины.
Мне так же не надо помнить как все работает. После того как я сделал какую-то часть - могу смело забывать все, что узнал. В следующий раз, когда мне понадобится припомнить что там было - я буду смотреть в код. Или гуглить.
Это как искать что-то в большом подвале с 1 фонариком в руках. Ты видишь только то, куда светишь сейчас. Вещей много. Но ты знаешь что искомая где-то в коробке с проводами.
Или представь, как едешь ночью по дороге из одного города в другой. Ты видишь только на расстояние твоих фар - пару десятков метров и только ближайшие дорожные указатели, которые сообщают тебе как проехать еще пару сот метров - километр. Ты руководствуешься небольшим набором правил дорожного движения. Видишь не много, но проехать можешь на многие тысячи киллометров. Ты знаешь что можешь. И едешь с комфортной для тебя скоростью.
Так и у нас в программировании. В моем проекте 7761 маленьких изменений. Я не помню их всех. Я приблизительно понимаю как все устроено. А если надо погрузиться глубже - изуаю код, который писал сам же. Иногда удивляюсь. Иногда мне смешно. Иногда горжусь. Часто просто непонятно, кто этот умник и что он имел ввиду. Но есть навыки как в этом всем разобраться. Есть вера в то, что обязательно получится... нет - скоре даже привычка. Я могу выделить чуть-чуть времени сегодня и разобраться в коде, а затем чуть-чуть улучшить. Закоммититься, так что будет уже 7762.
И обязательно порадоваться этому.