О хороших программистах

Программы пишут все. Датасаентисты – для анализа данных, офисные работники – для перекладывания циферок, инженеры – для расчёта прочности конструкций, сисадмины – для автоматизации настройки серверов... Но называем ли мы их программистами? Нет. А кто такой программист? Тот, кто на протяжении длительного времени выдаёт программный продукт, то есть программу, которой может пользоваться кто-то кроме самого программиста.
В институтах студентам дают задачи – например, написать программу, реализующую метод Рунге-Кутта. Или метод ветвей и границ. Но делает ли написание такой программы студента программистом? Нет, не делает. А можно ли придумать задание, которое сделает из студента программиста? Можно.
Устраивайтесь поудобнее, сейчас расскажу.
Вместо реализации хитровывернутого численного метода студент в первом семестре получает задание сделать какую-нибудь простенькую программу – например, учёт личных финансов. Две с половиной формочки, три таблицы – как раз достаточно, чтобы изучить какой-нибудь фреймворк для фронта и SQL для чайников.
Во втором семестре студент получает задание сделать программу учёта личных финансов, но уже с анализом данных через графики и диаграммы. Он заново пишет всю программу и навсегда понимает важность резервного копирования исходных текстов.
В третьем семестре ему предлагают сделать автоматическую загрузку данных из SMS и банковских приложений. Он узнает много об интеграции, а заодно поймёт важность правильного выделения функций. А поскольку между вторым и третьим семестрами – длинные каникулы, в голову студента закрадётся мысль о комментировании и документировании кода.
В четвёртом семестре надо потребовать удалить несколько функций и добавить новые, а в пятом – удалить часть новых и вернуть пару старых. Таким образом закрепляется навык выделения модулей, а также вбивается в голову неизбежность контроля версий. А в шестом надо будет наладить импорт и экспорт данных между программами разных студентов, и вот тут каждый студент узнает множество интимных подробностей о себе самом...
Вероятно, есть в моём описании какие-то неточности, но ведь то заметка в блоге, а не университетская программа. Главную идею, думаю, все поняли: важна последовательная работа над одним и тем же кодом с выдачей промежуточных результатов. И тогда на выходе может получиться программист. Хотя, конечно, может и не получиться...
|
</> |