Advertisement
Поиск  
Always will be ready notify the world about expectations as easy as possible: job change page
24 марта

О чём нужно знать до того, как стать программистом

О чём нужно знать до того, как стать программистом
Автор:
Источник:
Просмотров:
210

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

О чём нужно знать до того, как стать программистом

Мы собрали общий срез «открытий» для программистов разных уровней и специализаций. Не обязательно столкнуться сразу со всеми ситуациями — но часть из них всё равно хоть как-то но проявляется в жизни каждого из нас 🙂

Не все программисты одинаковы

Когда мы только думаем стать программистом, программирование для нас делится на специализации: игры, сайты, приложения для бизнеса, программирование ЧПУ (о нём кто-то думал, интересно?). Кажется, вот сейчас прочитаешь пару книг, попрактикуешься и утрёшь нос игроделам, Цукербергу и разработчикам электронного расписания. А потом оказывается, что программист — это лишь часть команды, причём не то чтобы часть наряду с дизайнерами или тестировщиками, а часть команды программистов, каждый из которых отвечает за узкие и порой скучные задачи. Серьёзный коммерческий проект пилится одним человеком в каких-то уникальных, исключительных случаях — и речь в них идёт об очень опытных разработчиках с глубоким бэкграундом.

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

Не весь смысл в коде

В какой-то момент на заре карьеры фанат своего дела прочитывает (и что важно, понимает) «Совершенный код» Стива Макконнелла и решает, что всю жизнь будет писать код ёлочкой, комментировать, оптимизировать, проводить непрерывный рефакторинг и делать код понятным, эффективным и производительным. Более того, некоторые строго следуют всем постулатам и выносят мозг своим коллегам и руководителям, не обнаруживая код достаточно совершенным. До первого горящего багфикса, пятничного релиза и «срочно-важного» клиента, у которого некоторые вещи приходится дописывать чуть ли не на проде. И тут-то выясняется, что исправление в одной строке требует переписывания десяти других, где-то есть щепотка легаси, а продуктовый менеджер никоим образом не готов ждать новых итераций рефакторинга. Фигак-фигак и в продакшен.

О чём нужно знать до того, как стать программистом

Однако как только вы начнете работать над проектами, в которых задействовано большое количество участников команды, вы быстро окажетесь под большой кучей кода, потому что, чтобы изменить одну строчку, необходимо изменить 5 других блоков кода. И получается, что код — это функциональность, а смысл — в управлении разработкой, взаимодействии внутри команды, способности решать нестандартные задачи на лету и гибко перестраиваться для достижения оптимального результата в сжатые сроки при наименьших затратах времени, труда и нервов.

Что касается совершенного кода, он приходит с опытом и становится стилем — но только если пройти все предыдущие этапы.

Код — это ещё не всё

«Код — это всё, что нужно», — третье ошибочное суждение, связанное с кодом. Кстати, очень похожее на ошибку будущих врачей: они тоже думают, что будут лечить, пока не столкнутся с бумагами, отчётами, нормативами и прочей бюрократией. К слову, такая бюрократия есть во всех специальностях (даже у художников и музыкантов), просто врачи и программисты почему-то наиболее болезненно к ней относятся. Думается, из-за завышенных ожиданий от своей деятельности.

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

О чём нужно знать до того, как стать программистом

Я разработаю свой лучший проект

Нет. Для разработки лучшего (и особенно хорошо монетизируемого) проекта нужна хорошая, сильная команда профессионалов, которые точно знают, как сделать свою работу хорошо. Со временем становится понятной ещё одна мысль: свой лучший не равно лучший для пользователей. Практически каждый спринт вы будете натыкаться на неожиданные требования, которые реально удовлетворяют запросам пользователей, но при этом противоречат вашему вкусу, пониманию UX и представлениям о прекрасном. Лучший проект это тот, который нравится пользователям, решает их задачи и легко поддерживается. Остальное — высокое искусство программирования, не имеющего ничего общего с реальностью 🙂

О чём нужно знать до того, как стать программистом

Ещё одно открытие внутри этого: мыслить проектами не получится. Чтобы сделать в разработке что-то стоящее, нужно учиться декомпозировать проект на проблемы, проблемы на задачи, задачи на компоненты и, собирая снизу вверх, идти к целостной сущности. Только так. Если делать именно проект, в дальнейшем любая деталь реализации сможет его обрушить. Декомпозиция и разработка по частям страхуют от многих «монолитных» неприятностей.

Проекты ради проектов бессмысленны

Мы не раз говорили о важности сбора требований пользователей (отчасти потому что при разработке CRM-системы это актуально как нигде) и внимания к пользовательскому опыту. Всё просто: проекты без цели не способны взлететь, какая бы гениальная идея ни лежала в их основе. Пет-проекты, идеи программного ретрита на Багамах, тестирование скриптов управления сетью на Марсе и клавиатура для кота должны оставаться фан-проектами. Поймите правильно: не нужно от них отказываться, нужно не бросать работу и не вкладывать всё шуршащее, движимое и недвижимое в заведомо неподъёмный стартап. Каким бы красивым он вам ни казался!

О чём нужно знать до того, как стать программистом

Главный код-ревью — твой

Всегда нужно оставаться критичным к своему коду. Код-ревью от коллег бесценен: любые проблемы лучше увидеть незамыленным глазом. Но важно уметь работать с кодом самостоятельно: не делать его совершенным, не заморачиваться на мелочах, но иметь свой внутренний code style (который будет совмещаться с любым корпоративным), своего строгого ревьюера, который не только видит код, но и понимает, как он работает внутри всей системы, как его можно улучшить, ускорить. Это не врождённый талант, это серьёзная и вдумчивая работа, которая требует обучения и понимания технологий улучшения читабельности, производительности, устойчивости и универсальности. Если вы научитесь быть микрокомандой для самого себя, ваша ценность на рынке значительно возрастёт, а зависимость от типа команды и стиля управления разработкой снизится. Профессионал с высокой степенью свободы и независимости — это во многом даже круче, чем некоторые дутые тимлиды и СТО.

О чём нужно знать до того, как стать программистом

Учиться придётся непрерывно

Если хочется чего-то добиться в профессии, расти и иметь авторитет в сообществе, придётся очень много учиться. По факту — непрерывно. Хорошая новость: когда ты благодаря этому зарабатываешь, обучение идёт не в пример легче.

О чём нужно знать до того, как стать программистом

Стоит ли идти в программирование? Если появилась такая мысль, обязательно нужно хотя бы попробовать. Будет просто? Просто не будет, будет сложно. и чем выше ваши амбиции и потребность в развитии, тем будет тяжелее. Нужны ли склонности и задатки? Для по-настоящему хорошего разработчика — да, потому что там и алгоритмы, и математика, и сети. Этому за шесть месяцев не научиться. Будут ли разочарования? Будут. Главный профит? Вы — востребованный специалист, который точно знает, что делать и который твёрдо стоит на ногах. Всё остальное приложится: и деньги, и уважение, и карьерный рост.

Похожее
19 августа 2014 г.
Есть один курс, который я бы добавил в программу обучения по всякой инженерной специальности, и он не о компиляторах или сложности алгоритмов. Это “Введение в реальность индустрии”, ибо об этом не говорят и это приводит к никому не нужным обломам....
28 июля 2017 г.
Автор: Владимир Болиев
Это статья про семь простых правил, которые я сформулировал для себя за годы работы программистом. Семь правил, которые подняли мою эффективность. Сделали меня лучше. Это мои правила и они работают для меня. Я не пытаюсь навязать их вам, я хочу...
20 июля 2016 г.
Если вы из тех, кто «работал ещё Там-То!» и «делал ещё То-То!», а сейчас счастливо отдыхаете на пенсии — эта статья не для вас. Просто спасибо за труд и примите мои поздравления. Но если же вы, как и я, даже...
24 марта
Программист сегодня не то что прежде — одного знания языка (или языков) программирования мало, чтобы быть действительно конкурентным на рынке труда. Ты можешь сколько угодно прописывать в коде на С++ указатель на указатель на указатель, но какой в этом толк,...
Написать сообщение
Почта
Имя
*Сообщение


© 1999–2024 WebDynamics
1980–... Sergey Drozdov
Area of interests: .NET Framework | .NET Core | C# | ASP.NET | Windows Forms | WPF | HTML5 | CSS3 | jQuery | AJAX | Angular | React | MS SQL Server | Transact-SQL | ADO.NET | Entity Framework | IIS | OOP | OOA | OOD | WCF | WPF | MSMQ | MVC | MVP | MVVM | Design Patterns | Enterprise Architecture | Scrum | Kanban