Как стать хорошим программистом - 5 советов

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

Недавно я затрагивал тему того, как выучиться на программиста, то есть как изучать. Тогда же я затронул очень важную тему того, что нужно заниматься практикой и сказал, что труд сделал из обезьяны человека и сможет сделать из ламера программиста. Желательно устроится на работу, где можно будет получать реальный опыт. 

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

Прочитав одну книгу или после первого курса, являетесь ли вы программистом? Если вы можете написать простую программу самостоятельно, то да. Но являетесь ли вы хорошим программистом – скорей всего нет. Это только начало долгого пути. 

Опыт

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

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

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

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

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

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

Командный опыт

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

Возможно, это мое личное и вы сможете развиваться единолично так же эффективно. 

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

Я думаю, что самые сильные скачки моего развития произошли как раз в командах, особенно, когда я работал в Klick Health. Мне посчастливилось поработать с хорошими программистами, благодаря которым я вырос профессионально, по крайней мере я так считаю. 

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

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

Сложные проекты

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

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

Если застрять в каком-то агентстве, которое изо дня в день делает простые сайты из пары страниц, развития не будет. 

Стремись делать свою работу лучше

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

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

Изучайте правила хорошего кода

Просто научиться программированию можно достаточно легко. Я уже говорил, что для этого достаточно только прочитать одну книгу. Чтобы познакомиться с C#, достаточно прочитать мою книгу Библия C#, и вы уже освоите синтаксис и станете программистом. Но это будет только начало пути. Этого может не хватить даже до уровня Junior программиста. 

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

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

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

Ну и третье в этом разделе - чистый код. У каждого свое отношение к тому, какой код считать чистым, но в целом есть определенные правила, которым стоит следовать. Стоит именовать свои переменные понятными именами, а не тулить везде i, j, x, y, z и так далее. Нужно писать короткие и простые функции, которые решают только одну задачу, но делают это хорошо. И так далее, и в таком духе. 

На все три темы - алгоритмы, паттерны и чистый код есть много хороших книг. Я не буду сейчас советовать никаких конкретных книг, это может быть тема отдельного видео. Здесь же я только хотел обозначит направление, в котором нужно двигаться, чтобы стать хорошим программистом. 

Учиться 

Я обещал пять советов? Будет шесть. Шестой просто будет коротким - нужно постоянно учиться. 



Внимание!!! Если ты копируешь эту статью себе на сайт, то оставляй ссылку непосредственно на эту страницу. Спасибо за понимание

Комментарии

Alexmas

Здравствуй Михаил. Хочу научится программировать.  Что ты посоветуешь? Какие технологии учить? Какой язык выбрать первым?
Web особо не интересен. Зато есть интерес к десктопам и мобилкам.


Михаил Фленов

Если Десктопы и мобилки, то тогда выбор C# или Java. На втором можно писать десктопные приложения и нативные мобильные для Андроида. На C# хорошие десктопные и мобильные под любую платформу через Mono.

Оба языка хорошо подходят для начинающих.


Alexmas

Спасибо.


ZubAder

Тоже хочу научится программировать. Смотрю в сторону c# и python, что посоветуешь?

Куда перспективней двигаться, веб, мобильная разработка или десктоп?


Михаил Фленов

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


ZubAder

Я посмотрел видюхи про c#  и понял что это мощный язык, поэтому выбрал его.
Друг сразу попросил написать программу по учету картриджей, подскажи что выбрать winforms, wpf, uwp , и как хранить данные которые он будет вносить в программе, нужно ли использовать базу данных и какую? Спасибо.


Michael Flenov

Сколько разных картриджей? Возможно будет достаточно даже простого XML или JSON файла для хранения информации


ZubAder

Он работает в офисном здании. Много кабинетов, у каждого свой принтер. Поэтому чтоб не вести все в excel просит программу по учету , где он будет записывать кому установлен картридж , когда установлен , какие картриджи к каким принтерамм подходят, рядом цена что бы в конце года сделать отчёт о затратах.


Михаил Фленов

В принципе, такое можно хранить в XML, а потом в UI все делать через LINQ. Но я так понимаю, данные будут расти и со временем XML может стать проблемой, поэтому лучше все же базу данных, хотя бы использовать файлы Access, или можно SQL Express Edition. Раньше была более маленькая версия Compact Edition, но ее MS убили. Сейчас даже не знаю, что еще посоветовать простое в качестве базы данных.


Добавить Комментарий

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповидания на русском или английском языке.

Пишите мне


Я в социальных сетях
Facebook Telegram Програмысли
Youtube Instagram Твитер