int(1)

9 советов Стива Клабника для начинающих программистов

Turing Bootcamp 09.09.2021 0

Эта статья основана на Codementor Hour of Code Office Hour, организованном Стивом Клабником , который известен как активный участник открытого исходного кода и внес более 1900 вкладов только в 2014 году. Рабочий час был открытым для вопросов и ответов, где участники могли спросить Стива о чем угодно, и вот 9 важных советов, которые Стив высказал, отвечая на вопросы новичков.

# 1: Всегда выполняйте одну задачу за раз
Всякий раз, когда я пытаюсь научиться делать что-то новое, или если у меня есть проект, в котором мне нужно разобраться, как делать много вещей одновременно, я стараюсь просто выбрать конкретную задачу и атаковать ее.

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

# 2: Разные люди легко находят разные вещи
Я знаю людей, которые не занимаются веб-программированием, потому что думают, что программировать операционные системы проще. Согласно их логике, им нужно написать ассемблерный код только для одного компьютера, и он будет делать то, что они ему говорят. Веб-разработчики должны обернуть язык разметки, язык программирования и язык стилей, прежде чем приложение будет отправлено по сети для работы на совершенно другом компьютере, работающем в другой операционной системе, что очень сложно.

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

# 3: Ваша работа может быть завершена только на 80%
Одна из особенностей инженерии заключается в том, что создание пригородного транспортного средства и гоночного автомобиля — это две очень разные вещи, поэтому в пригородном автомобиле вы можете избежать неприятностей с вещами, которые вы бы не поместили в гоночную, и наоборот. Важно решить, с какими крайними случаями вы хотите работать, но в большинстве случаев вполне нормально просто выполнять 80% работы, а остальные 20% — это то, что люди на самом деле не используют, поэтому не так важно получить эти вещи на 100% правы. Вы можете отследить последний 1% ошибок в своем проекте, но вы потратите на это много времени.

# 4: Познавайте, как Google
Многие новички недооценивают степень того, насколько гугл является частью работы программиста. Иногда моя работа больше связана с умением что-то искать, чем с программированием.

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

# 6: Технологии всегда меняются
Следовательно, меняется и язык технологий. Однако со временем вы накопите знания обо всех этих вещах.

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

Тем не менее, существует широкая парадигма, в которую попадают языки программирования, и есть своего рода генеалогическое древо языков программирования. Итак, если вы знаете язык, похожий на другой, будет очень легко подобрать этот язык. Например — люди и Python, и Ruby ненавидят меня за то, что я говорю это, — Python и Ruby — почти один и тот же язык программирования. Верно, что в культурном отношении существуют огромные различия. Однако в остальном это почти одно и то же, поэтому выучить одно, когда вы знаете другое, очень легко.

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

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

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

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

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

# 8: Программисты все время терпят неудачу
В Test-Driven Development, вы часто видите такие вещи , как: red, red, red, green, red, red, red, green-Какие средства большую часть времени, мы не удается. Если бы все наши программы были полностью укомплектованы и у нас не было ошибок, программирование вообще не существовало бы. Сам факт, что мы программируем, означает, что у нас либо еще мало функций, либо у нашего программного обеспечения есть проблемы.

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

# 9: Не сдавайся
Как новички в программировании, вы часто не имеете никакого отношения к тому, что сложно, а что легко, поэтому вы можете спросить меня, что я думаю о чем-то, когда считаю задачу очень тривиальной, и я скажу вам, что вместо этого это очень сложно. Напротив, вы можете подумать, что что-то очень сложно, и спросить меня, что я думаю, и я скажу вам, что это действительно легко.

Думаю, этот комикс от XKCD прекрасно иллюстрирует проблему:

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

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

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

Стань программистом за 3 месяца с нами! Подробности по ссылке.

Поделиться
Интересные статьи:
Turing Bootcamp 23.03.2021 🗣 Как пройти собеседование в ИТ-компанию? Советы для джунов Собеседование с работодателем по праву можно считать самым трудным и ответственным этапом в процессе поиска работы. Мы подготовили для...
Turing Bootcamp 16.08.2021 Плюсы и минусы JavaScript Взвесив все «за» и «против» JavaScript, мы можем представить себе полную картину этой области. Хотя JavaScript - это область со...
Turing Bootcamp 05.05.2021 Истории успеха: 5 программистов-самоучек, ставших преуспевающими программистами Когда она была стадии поиска работы, то сначала получила несколько отказов. Тем не менее она не сдавалась и в...