Философия как инструмент совершенствования программистов

Девять лет жизни я посвятила изучению философии в университете. Получив степень бакалавра, 2 степени магистра и докторскую степень, я решила оставить мир академических наук и устроилась на работу программистом.

И здесь меня ждало удивительное открытие! Несмотря на минимальные технические знания в самом начале моей карьеры программиста, изучение философии оказалось хорошей подготовкой к этой профессии.

Дело в том, что мне действительно не хватало технических навыков: довольно ограниченные знания JavaScript и никакого представления об AWS и облачных сервисах Google.

Однако занятия философией помогли мне улучшить профессиональное мастерство  —  неотъемлемое качество любого хорошего программиста. Я по-прежнему с удовольствием занимаюсь философией, поскольку она помогает развиваться в сфере разработки ПО. Далее я докажу данный тезис посредством 3-х убедительных аргументов.

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

1. Философия формирует навык продуктивного разногласия

Философы расходятся во взглядах. Как говорил философ Питер ван Инваген: “Разногласия в философии повсеместны и неразрешимы”.

Едва ли в философии найдется тезис, по которому философы смогут достичь единодушия. Согласно исследованию PhilPapers от 2020 года, проведенному среди профессиональных философов, только в 3-х из 40 главных философских вопросов более 70% мыслителей пришли к единому мнению.

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

Участвуя в философском диспуте с оппонентом, не разделяющим вашу позицию, необходимо объективно воссоздать его точку зрения, прежде чем подвергать ее критике. Так вы понимаете сильные стороны его аргументов и уязвимость собственных доводов. Кроме того, вы учитесь принимать иное видение и менять свою точку зрения по проблеме, исходя из результатов обсуждения.

Навык продуктивного разногласия очень пригодится в разработке ПО. Одна проблема предполагает множество решений, и у программистов могут возникнуть споры по поводу самого оптимального из них.

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

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

2. Философия учит разбивать сложную проблему на части

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

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

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

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

3. Философия учит выявлять ошибки

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

Для проверки состоятельности аргумента философы должны убедиться, следует ли вывод из его посылок и все ли исходные утверждения истинны. Один из способов это проверить  —  найти контрпример. Если такой существует, то аргумент признается недействительным.

В общем и целом, вы стараетесь предугадать контраргументы и парировать их. Именно таким умением также необходимо владеть и программистам.

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

Философия и программирование

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

Философы, планирующие стать программистами, могут не беспокоиться: эти 3 важных навыка, с таким трудом сформированные в философских диспутах, легко найдут себе применение в сфере разработки ПО. А программистам будет интересно привнести небольшую толику философии в рабочие будни и на собственном опыте проверить, отразится ли это на качестве создаваемого ПО.

Читайте также:

Читайте нас в Telegram, VK и Дзен

Перевод статьи Matilde Aliffi: 3 Reasons Why Philosophy Can Make You a Better Programmer

Сообщение Философия как инструмент совершенствования программистов появились сначала на NOP::Nuances of programming.