Перейти к содержимому

Как стать хорошим программистом

  • автор:

10 способов стать хорошим программистом

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

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

1. Учите основы

Понимание основ — это ключ к успеху в любой индустрии и любой профессии. До тех пор, пока вы недостаточно хорошо знаете основы, вы не сможете стать хорошим программистом. Знание азов позволит вам разрабатывать и реализовывать лучшие решения наилучшим способом. Если вы ощущаете пробелы в своих знаниях, будь то основы computer science, или концепции языка, на котором вы пишете, то никогда не поздно вернуться назад и повторить забытое.

2. Задавайте вопросы (как? почему?), когда пишете код

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

3. Учите других — учитесь сами

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

4. Пишите простой, понятный, но в то же время логичный код

Как и в других областях, формула KISS (Keep it simple and short — делай короче и проще) работает и в программировании. Пишите логичный код и избегайте усложнений. Иногда люди пишут сложный код только для того, чтобы доказать, что они умеют писать такой код. Мой опыт подсказывает, что простой и логичный код всегда работает хорошо, приносит меньше проблем и лучше поддается расширению. Вспоминается отличная фраза:

Хороший код — это лучшая документация. Каждый раз, когда вы захотите добавить комментарий, спросите себя: «Как я могу улучшить этот код, чтобы он не требовал комментирования?»
Стив МакКоннелл

5. Уделяйте больше времени анализу проблемы, тогда вам понадобится меньше времени для ее устранения

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

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

6. Будьте первым, кто проанализирует и оценит ваш код

Хотя это трудно, но попробуйте «сломать» ваш код до того, как это сделает кто-то другой. Со временем вы научитесь писать почти безошибочный код. Всегда проводите подробную и беспристрастную оценку своего кода. И никогда не бойтесь спрашивать, что другие думают о вашем коде. Работайте с хорошими программистами и прислушивайтесь к их мнению — это поможет вам стать хорошим программистом.

7. Не пугайтесь быстрой смены технологий

За все время работы в области IT, я встречал множество людей, которых не устраивала их работа, и людей, которые меняли место работы, чтобы работать с новейшими технологиями. В таком стремлении нет ничего плохого, однако ошибка в «новейших технологиях». Каждый день появляются новые инструменты, API и фреймворки, призванные сделать разработку быстрой и простой. И эта тенденция не снизится. Однако следует понять одну вещь: фундаментальные знания и основы меняются значительно медленнее, чем фреймворки, новые инструменты и API. Можно провести аналогию с морем, на поверхности которого находятся быстрые течения, однако на глубине вода спокойна и она составляет большую часть объема. Поэтому держитесь «на глубине», поближе к основам. В мире Java приложений уровня enterprise существует много веб-фреймворков, а новые выходят каждые две недели. Однако основы клиент-серверной архитектуры, шаблона MVS (Model View Separation), фильтров/сервлетов/JSP, упаковки ресурсов, обработки XML и т.д. остаются неизменны. Поэтому лучше потратьте время на изучение этих основ, нежели на изучение вечно меняющихся фреймворков. Поверьте, зная основы, изучить новые API и фрейморки будет куда легче.

8. «Костыли»* долго не работают

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

9. Читайте документацию

Хорошие программисты читают много документации. Это могут быть спецификации, JSR, API, документы, туториалы и т.д. Чтение документации позволит вам понимать основы, и вы будете решать задачи наилучшим способом.

10. Чужой код тоже может чему-то научить

Я работал с двумя отличными программистами, которые постоянно в своих IDE держали исходники чужих проектов на Java, и обращались к ним каждый день. Они делали это не только из желания узнать, как работают базовые вещи, но и из желания научиться писать хорошие программы. Чтение исходных кодов известного open source проекта, или кодов, написанных вашим ведущим программистом, может помочь вам писать код лучше.

И последнее: не сравнивайте себя с другими

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

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

Как стать программистом мирового уровня за 3 года?

Программисты не поскупились поделиться своим многолетним опытом и составить маркированные списки (!) с главными выводами о том, как начать, научиться и не переставать прогрессировать.

09 июля 2015 4 минуты 46078
Автор статьи
GeekBrains
Автор статьи
GeekBrains
https://gbcdn.mrgcdn.ru/uploads/post/21/og_cover_image/0bc9a1222b0c927c6b60c3055783e4c2

Так звучит самый пессимистичный ответ на вопрос, заданный студентом-второкурсником на Quora.com, и даже он основан на весьма вдохновляющем тезисе — «Нет предела совершенству».

Что еще говорят более опытные кодеры своему молодому собрату?
68 человек не поскупились поделиться своим многолетним опытом программирования и составить маркированные списки (!) с главными выводами о том, как начать, научиться и не переставать прогрессировать. Вот так выглядят самые интересные из них:

Q: — Как стать программистом мирового уровня за 3 года?

A: — А это довольно занятный вопрос, особенно учитывая, что вы метите в программиста «мирового уровня», а не просто спрашиваете, как стать очень хорошим программистом.
Что вы вообще считаете мировым уровнем? И как вы это измеряете?

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

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

И чем больше таких проблем вы решаете, тем лучше вы становитесь. Вот, что я думаю:

1. Программирование — это решение проблем. Окружите себя проблемами. Чем больше, тем лучше. Поначалу они будут казаться пугающими, но как только вы начнете с ними справляться, все начнет становиться проще.

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

3. Расширяйте количество применяемых языков: говорить «C++ или Java — лучший, я буду пользоваться исключительно им» достаточно глупо; у каждого есть свои тонкости, которые можно использовать в своих интересах, и владеть ими очень полезно.

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

5. Работайте в команде. Это как пункт 2, только немного иначе: каждый программист имеет свою уникальную точку зрения, которая помогает расширить вашу собственную.

A: — Вы позволяете другим людям заглядывать в ваш код? Попробуйте использовать такие сервисы как StackExcange: это бесплатно, и люди дают там много полезных советов по улучшению кода. Я стал делать значительные успехи в программировании после того, как начал показывать свой код другим людям.

Один профессор Массачусетского технологического института сказал: «Работайте каждый день в течение двух лет, и будете великим программистом. Работайте каждый день в течение двух лет и учитесь работать с алгоритмами, и станете программистом мирового класса».

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

A: — Хм, я не уверен, что в какой-то момент вы сможете сказать «Достижение разблокировано! Теперь я — кодер последнего уровня».

Что может быть круче, чем ответ на вопрос «Какой у меня ранг?» среди каких-то мифических разработчиков Земли? Полагаю, понимание того, что вы пишете лучше, чем на прошлой неделе, месяце или году.

Думаю, совершенствоваться помогают:
— готовность узнать новое: я улучшаю свою программу с 1996 года — и все еще есть, куда ее улучшать;
— привычка делиться новыми знаниями: умение объяснять другим — это полезно для вас самих (кстати, не так много людей это умеют);
— интерес к предметным областям вне программирования: умение быстро понимать разные вещи крайне важно для программиста — кому я объясняю?

A: — Написать код. Много кода. Работающего кода. Создать собственный движок. Написать Единую Истинную CMS (она будет такой же как и тысячи других, но вас ждет много открытий в процессе). Создайте собственный тасктрекер. А потом дополните его почтовым клиентом. А еще, пусть поддерживает плагины. Вы все еще тут? Напишите собственный язык для написания плагинов и собственный интерпретатор для него.

A: — 10: Практика
20: RTFM (Read The Following (Fucking) Manual)
30: Используйте правильные инструменты
40: Читайте чужой код
50: Развивайте коммуникативные навыки
60: Решайте проблемы с кодом
70: Практика
80: Практика
90: GOTO 10

A: — О, у меня есть любимая цитата, которую я перечитываю, когда мне нужно вдохновение. Крис Хэсфилд (астронавт, побывавший на орбите Земли) отвечает на вопросы на Reddit:

Вопрос: Какой совет вы можете дать молодому человеку, который хочет попасть в эту область?

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

А потом кто-то сделал комикс из этого ответа:

A: — Не подпускайте себя к выводу о том, что вы программист мирового уровня. Вы же потеряете способность учиться! Какой тогда вы будете программист?

A: — Читайте много кода и вносите свой вклад в Open-Source проекты.

A: — Короткий ответ: «Никак»; длинный ответ: «Я не уверен, что есть такая вещь, как «программист мирового уровня».

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

A: — Три вещи, которые известны мне:

1. Не стоит искать каких-то на 100% успешных путей к вашей цели. У всех они разные.
2. Почти все лучшие продукты написаны не в одиночку. Если вы гений, найдите еще парочку и научитесь с ними общаться.
3. Все языки ограничены (как и английский), но постоянно развиваются.Не останавливайте как развитие своих продуктов, так и свое собственное.

Автор: Ольга Землякова

Как начать путь? Выбрать престижную профессию «Веб-разработчик».

4 шага к тому, чтобы стать хорошим программистом

4 шага к тому, чтобы стать хорошим программистом

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

Согласитесь, мы очень часто слишком рано бросаем начатое. И именно это мешает нам добиться успеха. Запомните: обучение программированию – не спринт. Любой начинающий айтишник – это марафонец, которому предстоит довольно длительный период получения и развития навыков.

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

Такой совет кажется абстрактным, не так ли? Как же применить его на практике?

Давайте вспомним, что мы с вами – программисты, и выстроим на базе этой идеи полноценный «алгоритм обучения»:

ШАГ 1. Найти свою мотивацию

Просто ответьте на вопрос – зачем вам учиться программированию? Вариантов может быть несколько:

  • интересны информационные технологии;
  • желание много зарабатывать;
  • есть базовые знания, которые хочется углубить;

Эта практика действительно помогает, потому что когда в сознании есть DESTINATION, намного легче найти PATH.

ШАГ 2. Поставить перед собой краткосрочную и реально достижимую цель

Основываясь на главной мотивации, определяемся со своей первой целью:

  • написать полноценную полезную программу на языке Java;
  • заработать первую тысячу долларов;
  • выполнить 5 заказов в качестве фрилансера;
  • устроиться на работу Django-разработчиком;
  • .

Обязательно выбирайте то, что реально осуществить за 2-3 месяца.

ШАГ 3: Настроить процесс достижения поставленной цели

На этом этапе вам нужно придумать набор шагов, повторение которых однажды приведет вас к желаемому результату, например:

  • заработать первую тысячу долларов фрилансером: «каждый день мониторить фриланс-биржи и откликаться минимум на 5 проектов»,
  • устроиться на работу в качестве Django-разработчика: «еженедельно отправлять 2 письма с резюме в кадровые службы подходящих компаний»;

ШАГ 4: Достичь цели или скорректировать ее

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

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

Таким образом, с помощью планирования и дисциплины вы добьетесь очень многого!

Больше интересных новостей

Новый ChatGPT-4: в чем его особенность?

Новый ChatGPT-4: в чем его особенность?

Наиболее распространенные ошибки в работе веб-разработчика: ТОП-7

Наиболее распространенные ошибки в работе веб-разработчика: ТОП-7

15 крутых Android UI библиотек для ваших программ

15 крутых Android UI библиотек для ваших программ

5 советов для начинающих программистов

5 советов для начинающих программистов

8 способов стать лучшим программистом

Эстер Шиндлер пишет о технологиях с 1992 года, переводя язык технарей на привычный английский. За годы работы в IT она вынесла несколько советов, которые могут стать руководством к обучению программированию. Приводим для вас перевод её статьи.

Настало время серьезно улучшить ваши навыки программирования. Давайте сделаем это!

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

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

1. Напоминайте себе, как много вам нужно выучить

Первый шаг в обучении программированию — понять, что вы ничего не знаете. Это звучит очевидно, но опытные программисты знают, как долго можно преодолевать это заблуждение. Слишком многие студенты выпускаются с высокомерной установкой «Я лучше знаю» уверенные в том, что знают всё и должны доказать это каждому новому коллеге. Другими словами, позиция «Я знаю, что делаю!», может встать на пути изучения чего-то нового.

2. Перестаньте пытаться доказать свою правоту

Чтобы стать не просто хорошим, а отличным, вам нужно учиться на опыте. Но будьте осторожны, опыт может научить нас повторять жалкое поведение и создавать плохие привычки. Мы все встречали программистов с восемью годами опыта… точнее, всего с годом опыта, но о котором они говорят в восемь раз чаще. Чтобы избежать этого синдрома, посмотрите на всё, что вы делаете и спросите себя: «Как я могу сделать это лучше?».

Неопытные разработчики (как и слишком много опытных) смотрят на свой код, чтобы восхититься его великолепием. Они пишут тесты, чтобы доказать, что их код работает, вместо того, чтобы попытаться найти уязвимости. Действительно отличные программисты активно ищут свою неправоту, потому что знают, что обычно пользователи находят дефекты, которые упускают кодеры.

3. «Код работает» — это не конец, а начало

Да, ваш первый шаг — написать качественную программу, которая соответствует спецификации. Средние программисты на этом успокоятся и пойдут заниматься другим делом.

Но останавливаться на этом — это сделать моментальный снимок и ожидать, что он будет предметом искусства. Отличные программисты знают, что первая версия — это первая версия. Она работает (поздравляю!), но это ещё не все. Теперь улучшайте её.

Часть этого процесса — понять, что значит «улучшить». Нужно сделать её быстрее? Проще документируемой? Используемой повторно? Более надежной? Ответ меняется с каждым приложением, но сам процесс не меняется.

4. Напишите его три раза

Хорошие программисты создают работающие программы. Отличные — программы, которые работают безукоризненно. Это редко случается с первого раза. Лучшее программное обеспечение обычно написано три раза:

  1. В первый раз вы пишете программу, чтобы доказать себе (или клиенту), что решение возможно. Кто-то может не понимать, что это просто опытный образец, но не вы.
  2. Во второй раз вы заставляете программу работать.
  3. В третий раз вы заставляете её работать правильно.

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

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

5. Читайте код. Читайте много кода.

Вы, вероятно, ожидали от меня этот совет, и это наиболее общая и наиболее ценная рекомендация для совершенствования навыков программирования. Менее очевидны причины, по которым чтение чужого кода так важно.

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

  • Как бы я написал этот блок? Что бы вы сделали по-другому, видите ли вы другое решение?
  • Чему я научился? Как я могу применить этот метод к коду, который я писал ранее?
  • Как я могу улучшить этот код? И если это open source источник и вы уверены, что ваше решение лучше, сделайте это.

Напишите код в стиле автора. Такая практика поможет вам попасть в голову человека, который писал программу. Это может улучшить вашу эмпатию.

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

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

6. Пишите код, а не выполняйте задания

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

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

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

7. Работайте один на один с другими разработчиками всегда, когда есть возможность

Слушать других людей — полезно. Это может быть совместное программирование, хакатон или группа программистов. Когда вы вносите вклад в проект с открытым исходным кодом, обращайте внимание на обратную связь от пользователей и других разработчиков. Что общего вы видите в их критике?

Возможно, вам повезет и вы найдете ментора, которому сможете доверить всё: от методов кодинга до карьерных решений. Не упустите такую возможность.

8. Изучайте методы, а не инструменты

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

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *