Как писать код, который будет актуален и через 10 лет?
"Войти в айти" стало трендом в СНГ за последние 2 года. Рынок оброс специалистами, однако далеко не все понимают, что такое инженерная культура в IT-компаниях и чем программный инжиниринг отличается от программирования.
Мы, в Kolesa Group, активно развиваем IT-рынок, запускаем бесплатные образовательные проекты, набираем молодые таланты, поэтому хотим поговорить на тему IT-культуры.
Гостем второго эпизода подкаста "Код и кофе" стал Антон Сергеев, тимлид в Kolesa Group. Антон в разработке уже больше 10 лет и успел попробовать себя в разных областях помимо веба — от десктопного софта до устройств IoT, занимался синхронизацией времени в беспроводных сетях, писал на самых разных языках — от Java, C, ActionScript до Go и PHP.
В статье ниже мы собрали самые важные отрывки из подкаста.
Есть ли код, который жив спустя 10-15 лет?
Не весь код выдержал проверку временем. Есть часть кода, которая морально устарела, но служит верой и правдой из последних сил. Есть действительно качественный код, которому 10 лет. К его созданию подошли ответственно и сделали инфраструктуру, которая до сих пор хорошо работает.
Программный инжиниринг vs программирование
В книге Software Engineering at Google ребята из Google описали, в чем, по их мнению, отличие между этими двумя понятиями.
Программный инжиниринг — программирование, интегрированное во времени. То есть многократно повторенное во времени.
Одноразовый код, который написали для решения сиюминутной задачи — это программирование.
Если надо поддерживать и улучшать код на протяжении длительного времени, это переход в разряд программного инжиниринга. Можно написать код, который решает задачу здесь и сейчас, часто костыльный, и выкинуть его. Но сделать так, чтобы код работал долго и надежно — это уже задача другого уровня.
Инженерная культура: что это и как ее развивать
Это то, как в компании принято разрабатывать программы. Не обязательно даже специально проговаривать правила и объявлять, что "теперь у нас есть инженерная культура". Многие о ней даже не задумываются, но отношение/подходы к программированию и то, как устроена разработка — это и есть та самая культура.
Хорошая инженерная культура — это когда люди пишут код качественно, постоянно его улучшают, выносят уроки из ошибок и внедряют автотесты.
Также мы поговорили о:
- культуре экспериментов;
- выборе технологий и их внедрении;
- синьорах и джунах;
- разработческих мифах: нелюбовь к планеркам и ведению документации.
..прочитав заголовок, на ум пришёл только один код:
System.out.println("Hello world");
.. классика, актуальная десятилетиями)
Комментарий недоступен
Не совсем так. Есть у бизнеса есть некоторая задача, которая решается некоторым кодом, и если этот код написан так, что он полностью решает данную задачу и при этом выдерживает увеличивающуюся нагрузку, то никто не будет его переписывать просто потому, что
все живые языки без исключения претерпели колоссальные изменения
Изменения в код вносятся ровно по мере необходимости - расширение функционала, оптимизация, масштабирование и т.п. Потому что ля бизнеса важно чтобы код бы функциональным и эффективным, а уж на чем он написан дело десятое. И любое его изменение, особенно, если это часть большой системы, это не просто новый код, но и огромное количество ретестов - компонентных, бизнес, нагрузочных, интеграционных... А все это ощутимые затраты. Времени и ресурсов.