Чем “студенческий” код отличается от коммерческого?

Опубликовано Feb 16, 2012 в Собеседование: Советы | 2 коммент.

, ,

Автор: Галина Мирошниченко

координатор учебных программ компании Fulcrumweb

Чем же студенческий программный код отличается от коммерческого? Ответ на этот вопрос с технической точки зрения весьма пространен и содержится в многочисленных книгах и руководствах, а с житейской точки зрения разница, по-моему, состоит в следующем:

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

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

Студенческий код чаще всего не видит никто, кроме автора. В лучшем случае его посмотрит компетентный преподаватель, но его желание добиться от вас выполнения лабораторной на нормальном уровне основано только на его личной добросовестности, внешней мотивации на это преподаватель не имеет. С коммерческим кодом юниора все наоборот: его будет проверять ваш непосредственный начальник, его будут стыковать с остальной частью проекта, им будут заниматься инженеры по качеству, в конце концов, им будет пользоваться заказчик. От всех этих людей вышеупомянутый юниор зависит весьма сильно, и все они имеют собственный интерес, чтобы с этим кодом все было “как надо”. И это “как надо” для коммерческого кода обычно достаточно четко описано. Поэтому, один из первых документов, которые вы прочитаете, придя на работу – это Code Convention (Конвенция по написанию кода) конкретной организации.

Если вы учитесь в вузе не с целью просто получить диплом “… a дальше видно будет…”, но приняли решение стать таки программистом, – то отнеситесь к своим учебным институтским программам как к коммерческому продукту, который вы в перспективе обменяете на предложение той работы и условий, которые выберете вы сами. Ведь это, согласитесь, лучше, чем работа, полученная по принципу “…куда возьмут…”.

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

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

К сожалению, зачастую, если даже преподаватель указывает на вопиющие стилевые ошибки, то заставить их исправить обычно не удается, потому что, против аргумента “Так ведь работает!” преподавателю спорить себе дороже. Мой личный опыт подобной войны со студентом, который имел четкую цель стать программистом и САМ писал программы, окончился полным моим поражением. Например, я требовала применить оператор цикла и исправить то место, где 17! раз подряд вызывался один и тот же метод и ему передавался инкрементированный 17 раз параметр. И там было много еще всякого в таком же духе. Время шло, мы вели дебаты, я выслушивала аргументы в духе: “Ну что Вы, конечно, я знаю оператор цикла, и, конечно, на работе так писать не буду – но мы же в вузе, а тут чего придираться…”. И он меня уговорил – зачет был вовремя сдан, хотя стороны остались при своем мнении. Излишне говорить, что увидев бы код подобного РАБОТАЮЩЕГО! проекта, прикрепленный к резюме на должность начинающего NET-разработчика, соискатель получил бы от меня ответ “Спасибо, мы получили Ваше резюме и занесли сведения в базу данных…” Приглашения на собеседование не поступило бы.

Еще пример. Начало бакалаврской работы. Задается вопрос – делаем по взрослому, или чтобы защититься? Конечно, по взрослому. Тогда читайте вот эти материалы по поводу общих правил кодирования. “Прочитали?” “Да.” Начинаем писать первый код – разбираемся, как работают вот эти классы и можно ли на них основывать реализацию основного функционала. Имеем в результате: Form1 c TextBox1, TextBox2 и т. д. “Вроде же вы прочитали, о том, что переменным нужно давать смысловые имена?” “А, ну да, так я думал, что это ПОТОМ когда-нибудь понадобится… Ну ладно, я ПОТОМ переименую…”

Беда в том, что когда наступает это заветное ПОТОМ, и вы начинаете ходить на собеседования, – вам все эти правила придется вспоминать и сходу применять с непредсказуемыми результатами. А переделывать свои проекты, написанные в студенческом стиле, так, чтобы их код можно было бы показывать посторонним компетентным людям вы, и подавно, не соберетесь. Поэтому, чем раньше вы осознаете, будете постоянно держать в голове, и применять правила коммерческого программирования, тем лучше, в конечном итоге для вас самих.


Автор публикации:

2 Коммент. : “Чем “студенческий” код отличается от коммерческого?”

  1. Anonymous says:

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

    • Галина says:

      Смешались в кучу кони, люди…
      Требование придерживаться правил именования идентификаторов – это вне обсуждения, так как это обязательно и разумно.
      Про рисование блок-схем ничего сказать не могу. Я их последний раз добросовестно нарисовала больше 20-ти лет назад в своем дипломном проекте и больше никогда их ни сама не рисовала, и ни от кого не требовала.

Оставить комментарий

Ваш адрес email не будет опубликован.


*