Как мне стать более автономным и самодостаточным программистом? [закрыто]

13

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

acconrad
источник
1
Может быть, это просто культурно-языковая вещь ... но с чего вы взяли, что вы когда-нибудь станете звездным разработчиком? Что делает вас намного лучше, чем 99% других новых разработчиков?
Стивен С.
5
Я не один сейчас, но я хочу быть. Я всегда стремлюсь учиться и совершенствоваться. Большинство людей боятся даже признать, что у них есть проблемы. Я хочу найти свои проблемы, признать их и решить их. Лучшие в любой области стремятся к постоянному совершенствованию, и я стремлюсь к тому же.
Acconrad

Ответы:

24

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

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

"Misapplication of standard tools...is the new standard."

В мире просто не хватает времени, чтобы изучить все инструменты разработки.

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

Да, это нормально. Я все еще волнуюсь из-за того, что мне мешает.

Что можно сделать?

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

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

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

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

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

P.Brian.Mackey
источник
2
+1 работай над этим, пока не сдашься. Иногда я тратил 2-3 дня на решение одной проблемы. Что касается взлома: попробуйте TDD или хотя бы написание юнит-тестов.
ashes999
12

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

Вероятно, лучшая тактика будет:

  • Узнайте, как исследовать в Google. Вы можете найти ответы почти на все с небольшой следственной работы. Переполнение стека творит чудеса для тех трудно решаемых проблем.
  • Узнайте, как отлаживать. Я потратил часы на то, чтобы разобраться в причудливом глубоком корпоративном коде, но обнаружил, что переменная X равна 3 вместо 7. Возможность читать код и отлаживать - это, вероятно, единственный лучший способ стать автономным.
ashes999
источник
Не то чтобы я особенный цветок, но мои проблемы не в языках. Дело не в том, как делать вещи на моем языке. Большинство моих вопросов очень ориентированы на компанию: они касаются того, как сделать что-то в области, специфичной для нашей среды, на нашем рабочем месте. Это те вещи, которые вы не можете Google, если хотите.
Acconrad
3
Я полностью понимаю; Я был в такой же ситуации три года. Пункт № 2 является ответом: научиться отлаживать. Люди не часто помнят детали; отладка является ключом.
ashes999
1
Я согласен. Продолжайте задавать вопросы, пока вы не узнаете больше ответов, чем окружающие вас люди. Выйдите и поговорите с командой QA, пока вы не обнаружите ошибки и не исправите их. Google - ваш экспертный друг; использовать его широко. Однажды вы обнаружите, что отправили вопросительное письмо и нашли ответ самостоятельно, прежде чем ответ вернется.
Энди Кэнфилд,
5

Не бойтесь задавать вопросы "большой картины"

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

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

Дайте себе время ожидания

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

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

Выбрасывать некоторые черновики

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

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

Карл Билефельдт
источник
1

Самодостаточность придет с

  • Увеличение опыта и экспозиции в домене.
  • Повышенные навыки наблюдения и аналитические навыки, чтобы понять существующие системы и их поведение, зависимости.

Часто задавая вопросы, вы рискуете показать, что вам не хватает обоих.

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

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

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

Быть осторожным - это хорошо. Но лучше всего вы начинаете определять природу своих вопросов. Лучше всего, если вы запишите его на бумаге и изучите его трудность / ценность.

  1. Это то, что вы можете выяснить с помощью Google / форумы или работать над этим в течение более длительного времени
  2. Это то, что вы можете избежать или исправить без особых затрат, если вы все испортите?
Адитья П
источник
0

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

Вы БУДЕТЕ делать ошибки , и те , бесценны. Изучите все, что можете, у них, когда они произойдут, потому что они - то, что заставит вас лучше работать в следующий раз.

Как только вы освоитесь с небольшими решениями, начните принимать более крупные. Вам нужно будет решить, как далеко продвинуться в этом, основываясь на вашем проекте / среде / команде.

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

Если у вас есть технические знания, остальное - это мудрость и уверенность, а те приходят с опытом.

Дейв Уайз
источник
0

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

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

shanusmagnus
источник