Предисловие
Данная публикация не претендует на вселенскую истину, это не более чем личный опыт, наблюдения и опыт коллег. Думаю, что новичкам, стоящим на пороге интереснейшего мира программирования, стоит трезво смотреть на реальное положение вещей и чем быстрее иллюзии уйдут на второй план, тем быстрее можно получить удовольствие (и не только) от своих разработок.
Мифы для начинающих
Миф 1: «Сейчас я выучу С# (С++, ассемблер и т.д.) и стану настоящим программистом»
Увы, как показывает практика, кроме знания языка надо знать очень много смежных направлений. Например, очень часто нужны знания ведения какого либо учёта. Заказчику не нужен программист просто потому что он хорошо кодит, заказчик готов платить деньги, а иногда и не малые, за решение поставленной задачи, а не красивый алгоритм.
Миф 2: «Настоящий программист сутками пишет программы»
Как показывает практика, программист программирует в лучшем случае ⅓ времени проекта, всё остальное время уходит на постановки задач, общение с заказчиком и прочее убийство этого времени. Нет, конечно же есть среды, где программист именно кодит сутками, например, как в SAP-е. Но именно в SAP-е самая низкооплачиваемая должность кодер, который пишет строго по предоставленному техническому заданию. Шаг вправо, шаг влево — расстрел. И всё равно компания, автоматизирующая предприятие держит огромный штат сотрудников, далёких от кодирования для проведения как раз этих ⅔ работ.
Миф 3: «Сейчас как сделаю бухгалтерию и её как начнут все покупать»
К сожалению многие себя тешат этим мифом (и я давным давно был наивен). Мол, сейчас сделаю программу, которая будет быстрее и удобнее той-же 1С и она будет всем нужна. Но сделав начальную поделку пользователь задаёт резонный вопрос: “у меня работает 1С, она всем удовлетворяет, почти полностью поддерживает изменения в законодательстве, позволяет сдавать рег. отчётность и тогда зачем твоя, ни кому не известная программа?”.
Миф 4: «Мне бы только продать пару копий своего продукта и тогда уж точно попрёт»
Хорошо, предположим есть в знакомых влиятельная личность, которая инициирует покупку этого продукта для старта. Такое часто бывает (конкретные предприятия называть не буду по понятным причинам). А дальше то надо поддерживать продукт, что-бы конкуренты смотрели, завидовали и тоже хотели купить его. И вот тут начинается неприятное — разработчик перегорает, начинает требовать немалых денег, ведь кушать то хочется и клиент, серьёзно подумав, покупает 1С, где обновления бесплатные или условно бесплатные.
Миф 5: «Я стану специалистом и буду богат как Билл Гейтс»
Это самый печальный миф из всех остальных. Во-первых, Билл Гейтс по своей натуре был и есть менеджер, а не программист. Он всегда думал как выгодней продать, а не как лучше создать код. Поэтому, уверяю, без доп.образования (например, финансово-экономического) дальше начальника ИТ-отдела или руководителя проекта уйти не получится.
Миф 6: «Я буду создавать интереснейшие программы»
А вот и нет. За работу платят деньги только если результат нужен заказчику и как выясняется на рынке требуются очень нудные учётные системы или что-то подобное. Если мечтание жизни было создавать игры, то там тоже многомесячные нудные решения проблем.
Я тоже на работе занимаюсь тем, что мне не по душе, главное что-бы заказчику понравилось, а вот дома, по вечерам, запускаю свой любимый TASM и програмирую для души. Абсолютно ни кому не нужные программы создаются от души и для собственного удовлетворения.
Личный опыт или как не надо поступать новичкам
На одном из проектов набирали молодых сотрудников, только-что окончивших ВУЗ по специальности связанной с программированием. И один молодой работник как-то обнаружил поразительную вещь: «ни когда не подумал бы, что знания из ВУЗа придётся отбросить и учиться заново». Я не знаю что именно его поразило, но он во всём прав. Мы изучаем крутые методы сортировки, а заказчику надо просто видеть когда и куда он потратит деньги, когда и в какую сумму построит новый мост, в общем всё что угодно, кроме мастерства программиста. Именно поэтому многие программисты разочаровываются, узнав, что на предприятии он далеко не первый человек и жизни учит его даже бухгалтер.
Это может показаться смешным, но в реальной жизни надо делить на ноль. Это самый яркий пример, встретившийся мне в начале карьеры программиста. Бухгалтер на полном серьёзе оперирует такими понятиями, как «ну мы же делим на ноль, значит и в результате получаем ноль...». По своей глупости я начал возмущаться, отправлять человека обратно в школу, требовать дать адекватного заказчика, но вместо всего этого предприятие отказалось от моих услуг и обратилось к тому, кто умеет делить на ноль. Это теперь я знаю, что берд с моей точки зрения не обязательно таковым является с точки зрения заказчика, а тогда подобное было просто дикостью.
Альтруизм оказывается в IT-сфере не приветствуется. Однажды я решил помочь хорошему человеку в настройке компьютерного клуба (лет 15 назад они были в моде), при чём абсолютно бесплатно. Да, сутки на ногах без копейки денег, просто что-бы пообщаться с хорошим человеком. Но он тогда отказался от моей помощи, по причине как он выразился: «если человек не берёт деньги за работу, значит он не честный». И как показывает практика у всего есть своя цена. Деньги, это не только мотиватор разработчика, но и демотиватор заказчика, он лишний раз отбросит ненужный функционал в долгий ящик и разработчику не придётся реализовывать чью то бредовую идею.
Ещё позволю себе отметить интереснейший факт роста программиста как специалиста. Пока человек ещё новичок и только познаёт просторы ит-мира, ему кажется, что он всё знает. С опытом, программист понимает, что он почти ни чего не знает. И только став профессионалом, разработчик понимает, что ему абсолютно всё без разницы, главное что-бы заказчик был доволен. Конечно, этот анекдот рассказывают как анекдот, но беда в том, что эта самая настоящая реальность.
Рекомендации самому себе в молодости
1. Плюй на красивый код, лучше изучай стандартные конфигурации, ячеечный складской учёт и бюджетирование.
2. Забудь про добрых пользователей, они ленивы по определению. Им не нужны новшества и сложности, при любом нововведении, пользователи так или иначе будут саботировать и бунтовать.
3. Большинство крупных руководителей вообще не знают зачем нужны ит-структуры. Смирись и не доказывай свою значимость, это неблагодарно и заведомо проигрышно. Тебе будут понимающе кивать, тебя будут хвалить, но все лавры от внедрённой системы поимеет совсем другой человек. Кстати, это относится к любой проектной деятельности.
4. Изучай планирование времени. Прям тренируйся сразу после ВУЗа, а лучше прям учась на программиста. Это очень важно и именно из-за нехватки этих знаний, многие проекты заваливаются самым неприятным образом.
5. Учись брать деньги. За каждый чих бери определённую сумму. Да, это страшно, да, заказчика можно потерять, но за то зацепившийся клиент тебя быстро обеспечит работой.
6. Не играй в комповые игры и занимайся спортом. Смешно? У многих в этом серьёзные проблемы. Что первое, что второе, сильно влияет на производительность. Именно поэтому во многих организациях делают упор на тренажёрные залы, бассейны и фитнес-центры, лишь бы работники работали эффективней.
7. Самое главное — не забывай семью, звони родным, навещай родителей и уважай своих детей. Поверь, эти ошибки практически невозможно исправить.
Казалось бы чего общего в этих советах с алгоритмами на С++? Вот это и есть то необычное, что если-бы хоть кто-то раньше мне дал такие советы, то шишек набил бы гораздо меньше. Надеюсь, что после этого текста в мире будет чуть меньше шишек, набиваемых молодыми людьми.
Автор: strange2007