Support us

Software — not engineering

99 комментариев
Software — not engineering
В последнее время стало модным подчёркивать тот факт, что мы все с вами занимаемся не разработкой программного обеспечения, а его инженерией, как бы это слово не резало слух. Руководители компаний в своих интервью непрестанно подчёркивают и выделяют это сладкое и умное слово engineering, мол, белорусские разработчики это не пролетарии кодерства, а люди способные создавать программные системы, интегрируемые в бизнес-модель заказчика. Вообще конечно забавно слышать, как по новому заиграло слово "инженер", от которого все раньше так яростно открещивались, помня, насколько это понятие замызгали бесконечными заводами, стодесятирублёвой начальной зарплатой и бессмысленными НИИ в советское время. Но речь совсем не об этом. Если вы возьмёте любой рекламный проспект белорусской ИТ-компании, то среди перечисляемых преимуществ выбора именно компании из Синеокой главным пунктом всегда идёт высокий уровень разработчиков, обеспечиваемый научно-ориентированной системой образования, разработанной в Советском Союзе. Перед глазами у заказчика из Филадельфии или Берлина встаёт образ гениального советского учёного около страшной ракеты, а также бесполезного индуса, с которым он намучался годом ранее и он решает отдать проект в Беларусь или там, Украину.

Наука, математика, программирование

Ректорат наших университетов, а в самой большой степени БГУ, никогда не преминет возможностью упомянуть о "классическом" образе нашего образования (как это мило, кстати, звучит), ведь у нас в ВУЗах учат не просто каким-то уходящим практическим знаниям, а способности мыслить, развивают интеллект, а не вырабатывают навыки стучать по клавиатуре. И хоть студенты вечно не понимают, зачем им изучать теорию струн, лезть в дебри диффуров или квантовой физики, на самом деле это всё играет важнейшую роль и помогает им стать специалистами высокого уровня. Почему при этом после университета к работе над проектами пригодна в лучшем случае треть выпускников, никто особо не старается упоминать. Кроме того у нас распространено мнение о том, что аутсорсинг это низкоквалифицированный программерский труд и что наши девелоперы, ах, извините, software инженеры, выполняют monkey job для американцев или, там, немцев, в то время как там уже крутые гуру и профессионалы решают настоящие задачи. Зачем учить серьёзные научные дисциплины, если потом их никогда толком не использовать в работе? На самом деле и в той же Америке многие задаются тем же вопросом. Там точно также же в университетах студенту учат высшую математику, а потом работают в компании, которая социальные сети кодирует и в свет выпускает. У них специальность, по которой учатся будущие программисты, называется computer sciences и она точна также во многом далека от того, чем приходится заниматься программисту в реальности. Так вот, кто это такой вообще программист? Это инженер или конвейерный работник, или кто-нибудь ещё? Разработка программного обеспечения - это рутина производственного процесса или научная работа или вообще творчество (как любят говорить наиболее увлечённые кодеры)? Где проходит граница между наукой, математикой и программированием?

Software Engineering VS Computer Science

Задуматься над всем этим меня подвигла статья Чака Коннела под простым, но весьма информативным названием Software Engineering ≠ Computer Science , а также её обсуждение на слэшдоте . В данной статье автор, учивший, как и мы все, теоретические дисциплины в университете, удивляется насколько в реальности далека разработка ПО, от математики и насколько она "гуманитарна" в плане того, что всё в подавляющем большинстве программ определяется людьми их мнениями и суждениями. Для наглядности Чак даже приводит весьма оригинальную и, на мой взгляд, правильную картинку о том, что такое software engineering. Всё то, что выше черты – это и есть реальность software engineering, всё что ниже – computer sciences, то есть, фактически наша с вами теория из университета. Смысл данной картинки и всей статьи в том, что программирование, как это парадоксально не прозвучит, абсолютно иррационально и процесс разработки нельзя как-то формализовать и проводить по правилам и конвейерному принципу (а такое построение процесса производства и есть цель инженерии, к слову). Все существующие системы сертификации и всякие там рупы – это не более чем просто какой-то набор правил и тезисов, выработанных на основе опыта предыдущих проектов, при том что каждый новый проект – это новый опыт и в нём не получится руководствоваться лишь только старыми наработками. Не менее интересно и обсуждение данной статьи, которое развернулось на слэшдоте. Один из авторов комментариев высказал весьма интересную мысль о том, что современный программист занимается дизайном. Инструментарий в лице фреймворков у него уже есть, как и функциональные блоки разного уровня, и из всего этого он составляет рабочую систему, добавляя какие-то блоки и рюшечки. То есть формально программист – это дизайнер, а точнее будет выразиться – проектировщик, который сам по себе отношения не имеет к самой сути реализуемых им вещей. Нет в программировании никакой математики, это исключительно конструкторство, лего-го-го, короче. В последнем предложении я, конечно, утрирую, но, так или иначе во многом согласен с автором комментария. Программирование не касается ни математики, ни даже алгоритмирования. Причём это касается не только, допустим, веб-разработки, но и вообще программирования, даже достаточно сложных и связанных с математикой программ по той же обработке звука или изображений. Задача программиста - это грамотная реализация и интеграция какого-то фактически уже готово функционала в систему, будь это функция из какого-нибудь API или преобразование Фурье. Работа с кубиками, одним словом. И это, как ни странно, работа творческая – даже банальное кодирование странички, как показывает обширная статья, появившаяся на девбае несколько дней назад, процесс вполне себе творческий и содержащий в себе не только практичность и рациональность, но и свою эстетику. Не говоря про уже более сложные вещи, в которых задействуется уже программирование в полном смысле. Поэтому, по моему мнению, говорить о какой-то инженерии в отношении разработки – это полный бред. А насчёт обучения суровым научным дисциплинам в университетах, то главная их роль это действительно банально развить у человека логическое мышление, чтобы лучше потом конструировалось, и кубики правильнее составлялись, а практического сиюминутного смысла в этом нет никакого. Хотя, будь моя воля, я бы вообще ввёл какие-нибудь кванты в качестве обязательного предмета для всех специальностей, логика никому не помешает. Проблема в том, что подобный творческий подход, основанный при этом на продвинутой логике, использует совсем небольшой процент программистов и большинство кодирует по принципу "оно же работает". Вот с этим как раз и надо бороться и исправлять, чтобы потом не было претензий и разглагольствований по поводу monkey job.
Читайте также
Профессор устал читать ИИ-работы студентов, устроил им ИИ-экзамен
Профессор устал читать ИИ-работы студентов, устроил им ИИ-экзамен
Профессор устал читать ИИ-работы студентов, устроил им ИИ-экзамен
1 комментарий
ИИ-модели не понимают, какие задания сложны для людей
ИИ-модели не понимают, какие задания сложны для людей
ИИ-модели не понимают, какие задания сложны для людей
2 комментария
Без джунов всё вымрет. Техлид объясняет, почему искуственный интеллект уничтожает разработку
Без джунов всё вымрет. Техлид объясняет, почему искуственный интеллект уничтожает разработку
Без джунов всё вымрет. Техлид объясняет, почему искуственный интеллект уничтожает разработку
Любите использовать нейросети, когда программируете? Поздравляю, вы помогаете индустрии деградировать.   Расскажу, почему нейросети заменяют джунов и, в то же время, мешают им становиться сеньорами.  
3 комментария
Выпускники топовых вузов США не могут найти работу и уходят из ИТ
Выпускники топовых вузов США не могут найти работу и уходят из ИТ
Выпускники топовых вузов США не могут найти работу и уходят из ИТ
4 комментария

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.