Pull to refresh

Здравый смысл важнее алгоритмического мастерства

Reading time 2 min
Views 23K
Предлагаю читателям «Хабрахабра» перевод небольшой заметки «Organizational Skills Beat Algorithmic Wizardry» за авторством James Hague. Заметка показалась интересной и мне захотелось поделиться с аудиторией.

Много раз я читал о технических собеседованиях в крупнейшие компании и был очень рад, что не ищу работу программиста. Способность написать оригинальные реализации кучи или дерева. Головоломки с различными ограничениями. Задачи, на обсчёт которых потребуется десять миллиардов лет если вы не сможете правильно проанализировать и перефразировать требования. Моя первая реакция – как вообще им удаётся хоть кого-нибудь нанять?

На самом деле большая часть работы программиста не требует такого алгоритмического мастерства.

Когда вы пишете код самый важный навык для вас – как удержать всё это нагромождение функций от разрушения под тяжестью собственной сложности. Я работал над крупными телекоммуникационными системами, консольными играми, блогами, несколькими персональными утилитами. Очень-очень редко мне приходилось работать с хитрыми структурами данных или алгоритмами. Чаще требуется отслеживать состояния, сортировать структуры, внимательно разбираться как разные части системы взаимодействуют друг с другом. Написание кода является лишь частью задачи. После него идут рефакторинг, упрощение, исключение избыточных манипуляций.

Именно по этой причине многие становятся программистами «случайно». Вряд ли вы часто встречаете людей, которые стали нейрохирургами между делом, просто занимаясь этим в своё свободное время. Это требует очень интенсивного и специфического обучения. Но научиться писать код легко и многие это делают. Когда я начинал программировать на 8-битном домашнем компьютере я даже не знал что такое алгоритм. Я не представлял как сортировать данные и мне это не требовалось для тех простеньких игрушек, которые я тогда писал. Мне достаточно было знать про счётчики, таймеры и управление состоянием. Для этого не нужна «гениальность», достаточно здравого смысла.

Несколько лет назад я написал утилиту, которая преобразует изображения в прямоугольные текстуры. Программа небольшая – около 1500 строк кода на Erlang и C. Упаковкой изображений в прямоугольник занимается совсем маленький фрагмент кода длиной около 20 строк. Написать его было не сложно, но вряд ли бы я справился с этим на собеседовании. Остальная часть кода занимается чтением файлов, выводом результатов, обработкой параметров изображений и передачей данных между разными частями приложения. Именно этот код я чаще всего модифицирую когда нужно добавить что-то новое, улучшить обработку ошибок или улучшить удобство использования.

И именно так выглядит большая часть разработки программного обеспечения.
Tags:
Hubs:
+23
Comments 62
Comments Comments 62

Articles