Во время учебы в бакалавриате одна из моих подруг переключила специальность с информатики на пре-стоматологию, потому что не считала программирование действительно полезным навыком. Конечно, это могло бы дать ей работу, но в случае зомби-апокалипсиса или аварии с временным порталом она никому не понадобится для создания веб-сайта или компиляции двоичных файлов, но людям всегда нужно вырывать зубы.

В то время я думал, что ее логика разумна, но я недавно купил свой первый дом и в процессе устранения множества проблем пришел к осознанию того, что программирование помогает развить некоторые передаваемые навыки в областях, где даже компьютеры не используются. Вот три примера того, как я использовал эти навыки для устранения проблем с электричеством в моем новом доме:

Все, что можно отладить

Когда проект, над которым я работаю, не может легко обеспечить интерактивность или операторы печати, например, с языками описания оборудования на ПЛИС или кодом C / C ++ до того, как я научился использовать gdb, я использую вариант «алгоритма волчьего забора», чтобы сделай так, чтоб это работало.

Возможно, вы не слышали об этом термине, но, вероятно, использовали его. Алгоритм решает проблему поиска одинокого волка на Аляске: постройте стену, разделяющую штат пополам, а затем слушайте вой в любой части. Затем снова и снова, и снова, и снова разделите секцию пополам, пока не окажетесь на расстоянии укуса.

Этот алгоритм можно применить для выяснения того, почему схема в вашем доме не обеспечивает такую ​​мощность, как при поиске ошибок сегментации в вашем коде: сделайте одно изменение между тестами и повторяйте в зависимости от результата. Конечно, сложная часть отладки часто заключается в том, что попробовать дальше, но так же, как в вашем коде есть конечное количество строк, в любой цепи есть конечное количество переключателей и розеток.

Пользователь на первом месте

Выделение времени на обдумывание того, как мой проект будет использоваться перед реализацией, экономит время в будущем. Я напрасно потратил усилия на создание множества функциональных возможностей, когда мне нужно было только что-то сделать хорошо. Я потратил несколько дней на то, чтобы приукрашивать графический интерфейс, а затем был разочарован, когда наиболее распространенное действие требует нажатия трех кнопок вместо одного.

Точно так же важно подумать о том, как я буду жить в своем доме, прежде чем вносить в него какие-либо изменения. Если я слишком низок, чтобы дотянуться до него, имеет ли смысл подключать выключатель к потолочному светильнику, а также к стене? Если мой более высокий муж использует потолочный выключатель, это вызовет у меня разочарование, когда настенный выключатель не включает свет. Нет смысла добавлять USB-питание в розетку под моим столом, если я не могу встать на четвереньки, чтобы использовать его, но имеет смысл добавить его в ближайшую розетку к моей двери, чтобы что я могу зарядить свой телефон, пока жду поездки.

Страх - убийца прогресса

Я работал над проектами, в которых я чувствовал страх - что, если на моем веб-сайте есть уязвимость в системе безопасности, и хакеры взяли ее на себя? Что делать, если я неправильно считываю коды серого от этого двигателя и заставляю его пролетать мимо цели? Хотя это были серьезные проблемы, если бы я попытался гарантировать, что их не произойдет, я бы никогда не продвинулся вперед. То же самое и с электромонтажными работами. Хотя есть серьезный риск смерти, если я засуну вашу мокрую руку прямо в службу, последствия испорченной ошибки при соблюдении некоторых мер предосторожности недостаточно серьезны, чтобы отговорить меня от попыток.

Если я сделаю резервную копию своего кода и протестирую его в среде песочницы, последствия обнаружения хакером моих уязвимостей будут небольшими, потому что я всегда могу закрыть свой веб-сайт и попробовать еще раз. Если я отключу электрическую цепь, над которой работаю, последствия неправильного подключения розетки будут небольшими, потому что в моем доме более одной розетки.

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

В старших классах и бакалавриате гуманитарные, социальные и естественные науки продавались как курсы, которые научили меня думать, тогда как инженерия, технологии и бизнес научили меня конкретным практическим навыкам. Но это не стало моим опытом: программирование научило меня думать не меньше, чем уроки философии и истории, которые я посещал. Мы часто навязываем идею обучения программированию, чтобы создать что-то конкретное, но относительно мало о фундаментально преобразующих эффектах мышления как программиста.