Размышление-воспоминание о написании кода
В последнее время я стал чувствовать себя... Да никак я не стал себя чувствовать, каким я был, таким я и остался (хоть и не казак). Хотя, нет. Не правда. Я изменился. Еще бы. Ведь я прекрасно помню себя в то время и в том состоянии, когда я был готов писать код, потом опять писать и опять. Думал я в то время, когда писать код не мог - по пути с работы домой (или обратно), перед сном, или за едой. Когда я писал код, я тоже думал. Но то были другие, более ситуативные и насущные мысли, в них не было перспективы и глобальности. Было это больше тридцати лет тому назад, тогда перед сном нельзя было взять планшет и писать код (кстати, как только появился доступ к лэптопу, первое, что я сделал - притащил его домой для написания кода по ночам). И вот тогда я думал.
В то время, я, конечно, рвал и метал! Ведь было столько задумок, которые хотелось воплотить, но времени на написание нужного для реализации кода катастрофически не хватало. А сколько негодования вызывало требование начальства продумать то, как должны будут взаимодействовать библиотеки, прикинуть, какие нужны функции, параметры этих функций, подумать над архитектурой? Да я уже два часа думал вчера вечером, пока ехал домой, потом думал, засыпая, во сне чего-то такое снилось, а потом еще два часа по пути на работу. А теперь я хочу писать код! Ну а самым бредовым, безусловно, представлялось предложение задокументировать ранее написанный код.
И вот, когда клавиатура так близко, среда разработки загружена и дымится чашечка кофе (с сигаретой, между прочим - тогда можно было курить на рабочем месте, кругом были такие же чудики, а думать во время неспешной компиляции, глядя сквозь дым на отсчет строк исходного кода, попивая кофе - то, что доктор прописал), именно в этот момент начальник затягивает свою унылую песню о том, что вот в этом решении он не уверен, так как это плохо стыкуется с тем куском кода, который мы написали неделю назад. Надо бы обсудить, нарисовать схематично, как, что и после чего будет выполняться (тогда ведь и UML-то не был разработан, не говоря уж о всяческих там BPMN и других MN). Да кому интересно то, как будет стыковаться сегодняшний код с кодом недельной давности?! Не будет стыковаться - перепишем тот старый код, всего и делов-то. Но начальник от таких предложений был просто в ужасе - он же уже видел, что тот код работает. А что будет с написанным заново?!
Вот такой была моя тогдашняя трудовая философия - все время писать код, и только тогда, когда писать нельзя - думать над ним. В основном, над завтрашним. Возможно, даже, послезавтрашним. И очень редко - над вчерашним. И что стало с этой философией? Она претерпела изменения. И видно это хотя бы по тому, что сейчас есть возможность писать код и перед сном, и по пути на работу или домой (если не за рулем, за рулем по-прежнему писать код трудно, да и не рекомендуется). Но я этого не делаю. Ладно, тут покривил душой, иногда - делаю. Но значительно чаще я продолжаю в это время думать. И я уже давно не рассматриваю время, которое расходуется на документирование кода, как бесполезную трату времени. Более того, нахожу в этом приятную возможность еще раз продумать описываемый код и, возможно, улучшить его. Ну а обмозговать механизм взаимодействия с тем кодом, что писался в прошлом месяце - так я сам готов всех собрать и поговорить об этом.
Некоторые скажут, дескать, да вы, батенька, обленились. Но нет, писать код я по прежнему люблю, и делаю это с удовольствием. Но я теперь люблю и то, что раньше не любил. Не любил, но делал, так как не мог все время писать код, не мог все время игнорировать требования руководства, не мог, не мог, не мог. А теперь я уже без этого не могу. Теперь я понимаю, что без этого получить продукт, который будет нужен - просто нереально. Потому, что это позволяет получить работающую систему, в которой каждая мелочь обстоятельно продумана. Теперь-то я понимаю, что вот то время, которое мне приходилось бесперспективно (как мне тогда казалось) расходовать на размышления, вместо того, чтобы... ну, вы понимаете - писать код, вот это самое время и позволяло получать программы, которые использовались людьми, для которых эти программы и писались. И поэтому я благодарен тому факту, что во время моего профессионального становления не было возможности все время писать код.