Pull to refresh

Размышление о программировании и программистах

Reading time7 min
Views14K
Навеяно в ходе последних событий
Необходимость знаний математики
и
Кризис программиста

Несколько слов о программистах для студентов младших курсов и тех, кто еще только собирается поступать в институт.


«Понимаете, для того, чтобы создать систему, подобную Linux, недостаточно быть хорошим кодером. Нужно быть еще и коварной сволочью.»
Линус Торвальдс


Можно дать тысячу интерпретаций данного утверждения, но многие согласятся, что понятие «программист» несколько шире понятия «кодер». Программисты в массе своей субъективны, часто рассуждают о тех или иных темах исходя из своего личного опыта и предпочтений. А опыт и предпочтения у всех различные. Это мешает в обсуждений общих вопросов, так как каждый тянет одеяло в свою сторону.
То, что написано дальше — это только моя точка зрения.

(Разбор комментариев в конце статьи)

Кто такие программисты.


Программисты – это такие люди, которые занимаются разработкой программного обеспечения для различного рода вычислительной техники (ПК, сотовые телефоны, микроконтроллеры, и др.).

Есть множество специальностей и различных направлений, которые по традиции называются техническими. По окончании учебы в ВУЗе, студент автоматически становиться программистом с приставкой инженер, математик, системный, и др. Сами программисты часто себя называют с приставками Веб, C++, .NET, Java, баз данных, Linux и т.д.
На практике очень часто бывает, что и инженер, и математик, и системный программисты (по образованию) сидят за одним столом, и решают одну задачу, скажем, на языке Java.

Есть еще одна градация – это специализация. Здесь выбор относительно добровольный и задачи бывают различные. Например, 1С, web, базы данных, ЦОС, САУ, прикладные программы, 3D приложения, искусственный интеллект.
Знания, навыки, приемы в каждой предметной области специфичны.

Как делают программистов.


Делают их в ВУЗах. На лекции заставляют ходить всем скопом без учета (как жаль) специализации, по ним же сдавать экзамены.
Считайте, что вам крупно повезло (в отличие от ваших будущих работодателей): из-за сложной демографической ситуации вначале 90-х, конкурс на место с каждым годом все меньше. Преподаватели стали гуманнее, а делая лабораторные работы на современных языках программирования, уже не нужно знать как устроен ящик, к которому тянется шнурок от монитора.

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

Как работают программисты.


Путь программиста сложен и тернист. Конечно, все зависит от специализации. (Можете меня подправить) 90 % решаемых задач на данный момент – это базы данных и web-программирование. В данной (и не только) предметной области каждый год появляются новые языки программирования, новые фреймворки и технологии. За всем не успевают следить даже отмороженные гики. И уж конечно не стоит ожидать, что в следующем году в институте вам будут преподавать NET Framework 4.0 (а как хотелось бы). А ведь его уже кто-то использует и радуется, что ПО создается быстрее, да и область необходимых знаний сужается до знаний фреймворка. Web-программисты радуются появлению Ruby on Rails.

Как стать программистом.


Скорее всего, нужно сначала поступить в какой-нибудь технический ВУЗ на специальность, связанную с разработкой программного обеспечения. Самые суровые программисты (будучи студентами) считают, что в/о для них вообще не обязательно. Все зависит, конечно, от специализации и уровня суровости. Но в некоторых местах на диплом внимание еще обращают (советую). Благо конкурс на поступление сейчас небольшой.

А теперь СТОП…

Вам не кажется странным, что число выпускников каждый год растет, типовые задачи становятся проще, а вы все еще хотите стать программистом?

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

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

С каждым годом профессия программист все больше уподобляется профессии клерка (он же офисный планктон). С определенными ограничениями конечно:
1) не во всех предметных областях;
2) хороший программист работу найдет.
С выпуском нового фреймворка, область знаний программиста для успешного выполнения 99 % задач может быть намного уже, чем без него. В итоге, до решения определенного круга задач могут быть допущены 40 специалистов, а не 20 как было ранее. К тому же ВУЗы выкинули на рынок очередную партию выпускников. И вот их уже не 40, а 60.

Вот тут возникает еще 2 вопроса:
1) какую предметную область выбрать, чтобы было интересно, прибыльно и вопрос о конкуренции рынка труда стоял не очень остро?
2) что значит «хороший программист»?

Как выбрать предметную область.


Так как областей специализации существует множество, можно в общих чертах представить область своих предпочтений. Понятно, что после 5-тилетней разработки баз данных будет несколько сложно реализовать себя в области 3D-моделирования, при условии, что в данной области уже есть специалисты. Хотя шанс есть всегда.
Проводя аналогию, я бы не хотел оказаться у хирурга, который всю жизнь был окулистом. Для любителей холиваров — есть такой врач — терапевт (врач широкого профиля).
Между тем, (особенное внимание хотелось бы обратить тех, кто только еще выбирает куда пойти учиться) были бы полезными знания о перспективах развития рынка ПО, как минимум на 3 (больше — лучше) года вперед.

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

На рынке есть множество специализаций. В таких областях, как web и базы данных конкуренция и сейчас не самая малая. Скорей всего, с выпуском все новых и новых готовых инструментов для разработчиков, средняя зарплата в этих направлениях начнет со временем снижаться. Даже если количество рабочих мест будет по-прежнему расти. В любом случае, хочу предостеречь от соблазна забить на учебу и сшибать деньги по легкому здесь и сейчас. Высокая цена будет только на Гуру, которые могут решить тот самый 1 % задач, недоступный остальным.

Хотелось бы обратить внимание на такие специфические области, связанные с программированием, как криптозащита, кодирование и передача информации, цифровая обработка сигналов, системы автоматизированного управления. Интерес к этим областям увеличивается с каждым днем, их область применения достаточна широка – начиная от модема, и заканчивая космическим кораблем. Здесь тоже нужно быть Гуру, и танцев с бубном не меньше.

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

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

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

Что значит «хороший программист»?


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

Вот несколько моих соображений по этому поводу.

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

Развивать свой кругозор и уровень мышления необходимо. Без знания математической логики вообще любой программист выглядит убого.
По словам бывшего сотрудника нашей фирмы, уехавшего в 90-х в Америку, там огромное количество узкоспециализированных специалистов, много умных людей, очень хорошо разбирающихся в своей предметной области. Но им очень сложно (практически не возможно) организовать взаимодействие различных блоков между собой в сложных системах.

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

Масла в огонь священной войны подливает простая человеческая лень и мания величия. Почему то многие считают, что им все должны. Должны все рассказать, показать, обучить. Почему при получений фундаментальных знаний, вопрос о самостоятельном изучении языков и технологий воспринимается дико? Можно зная, например, Pascal и основы ООП, изучить язык C++ самостоятельно. И многие делают это.

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

Если человек хочет, чтобы его обучили языкам, и и технологиям (часто в 1 экземпляре) – ему прямая дорога в техникум. (Процесс обучения нужно обсуждать отдельно)

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

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

Резюме.


Желательно уже к концу второго (раньше – лучше) курса определиться в предполагаемой предметной области будущей специальности. Не обязательно идти в ту область, которая является модной сегодня. Нужно анализировать рынок труда и ситуацию в мире (в России в частности). У программиста есть огромный выбор интереснейших и перспективных областей. Они сложны, интересны, востребованы и достаточно хорошо оплачиваемы. А работать надо собой в профессиональном плане нужно начинать как можно раньше и как можно больше.

P.S. Прежде, чем оставлять комментарии, рекомендую так же ознакомиться со статьей Джоэля Спольски – Советы студентам, изучающим вычислительную технику.

UPDATE

Выводы, которые можно сделать из комментариев


1) олимпиадник (не равно) программист.
См. ниже. (bobermaniac)

2) школьник (не равно) программист.
В школе только процесс обучения. (Есть исключения)

3) Программирование – это врожденная болезнь.
Если в 18 лет вы не знаете даже бейсик, то шанс заболеть мал.

4) В институте собираются умные люди (в том числе студенты). Возможно, вам есть чему у них научиться. (kmike)

5) Для того, чтобы стать профессионалом, нужно много работать как над собой, так и над различными проектами.

6) Симптом «изучу любой язык за 2 недели» проходит с возрастом (профессионализмом). Не у всех.
Убедитесь сами. См. ниже.

7) Обратите внимание на сферы деятельности, где базовые знания математики (и прочее) не нужны. Возможно здесь высокая конкуренция.
Пример, habrahabr.ru/blogs/arbeit/59989/#comment_1633645

8) Обратите внимание на развивающиеся (пока еще не модные) сферы деятельности.
aryeh знает, что говотит.

9) На Хабре нужно развивать систему модерации. Иначе любую тему можно превратить в помойку.
Как минимум возможность скрытия веток обсуждения, выходящих из темы топика.

Tags:
Hubs:
Total votes 117: ↑98 and ↓19+79
Comments231

Articles