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

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

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

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

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

Опыт

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Учиться 

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



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

Комментарии

Galmer

16 Февраля 2022

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

Я как раз на своем опыте столкнулся с этой проблемой. Вроде учу, понимаю, но нюансы быстро забываются без практики. А где брать задания для практики, выдумывать их? Получается, что после прочтения каждой главы книги нужно придумывать себе какой-то новый мини проект. Мне поэтому трудно дается Си Шарп. В нем куча абстракций в виде синтаксических нагромождений, которые бывает очень трудно понять, в отрыве от понимания, для чего это вообще нужно(на практике). Большинство моих озарений, случались когда я наблюдал или пытался разобрать устройство какой-то программы. И тут до меня "резко доходило", вот оно оказывается для чего нужно. В книгах такой информации днем с огнем не сыскать. Приходится продвигаться как в танце - два шага вперед, шаг назад(((

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

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

P.S. Большое спасибо за ваши уроки, сайт и книгу! Они мне помогают, думаю другим тоже. Печально только что не вижу комментарием на сайте. Все тусуются на Ютубе)))


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

О блоге

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

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

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

Пишите мне