Как стать программистом мирового уровня за 3 года?
- Никак.
Так звучит самый пессимистичный ответ на вопрос, заданный студентом-второкурсником на 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. Все языки ограничены (как и английский), но постоянно развиваются.Не останавливайте как развитие своих продуктов, так и свое собственное.
Автор: Ольга Землякова
Как начать путь? Выбрать престижную профессию «Веб-разработчик».