Как вы изучаете стандартную структуру языка / API / функциональность? [закрыто]


14

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

Моя проблема в том, что я никогда не чувствую, что этого достаточно. Я чувствую, что знаю только небольшую часть стандартной библиотеки моего языка, и что, пока я не пойму все это, по крайней мере, мимоходом, я не имею права даже пытаться устроиться на работу, используя ее. Я только что закончила колледж (Community / Junior / Whathaveyou), и мои друзья получают работу в индустрии, но я все еще чувствую себя подделкой или проблемой, и я просто недостаточно хорош.

Есть ли приличный маркер для «Я знаю достаточно», который я мог бы использовать, чтобы убедиться, что я могу кодировать? Должен ли я принять тот факт, что я, по крайней мере, способен кодировать FizzBuzz как индикатор того, что можно подавать заявку на вещи? Как я могу относительно легко узнать больше об этих стандартных библиотеках, платформах и / или API? Я регулярно пишу код, читаю книги, но мои знания все еще кажутся такими поверхностными.

ПОМОГИТЕ!


3
чем больше вы узнаете, тем больше понимаете, как мало вы знаете. +1 за очень хороший вопрос.
devnull

Я не уверен, что этот материал стоит запомнить. В конце концов, у вас есть документация с возможностью поиска, интеллектуальные IDE и так далее. Намного лучше использовать свой мозг для важных вещей, для фундаментальных знаний, сохраняя все эти изменчивые API снаружи.
SK-logic

I feel like I only know a small portion of the standard library of my languageэто предложение должно быть официальным девизом C ++ .
ZJR

Ответы:


8

Моя рекомендация, приятель:

перестаньте думать двоично (0/1, не зная / не зная, неграмотный / грамотный) и начните думать нечетко (я знаю в некоторой степени). Все мы знаем что-то и в какой-то степени. Знание - это континуум, и каждый находится где-то между самым неграмотным человеком и самым знающим, искушенным парнем. Вы можете сделать работу, но на вашем уровне и под этим . Это правило. Не бойся Не ждите того дня, когда вы узнаете все о своей структуре, и ИМХО этот день не наступит никогда. Даже разработчики с 20-летним опытом все еще читают, чтобы узнать что-то новое. Программирование настолько широко по своей природе, что вы не должны (или не можете) схватить все это.

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

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

Удачи


Я понимаю, что все это нечеткие знания и некоторое JIT-изучение деталей. Я просто не знаю, как убедить себя, что у меня даже есть нечеткое понимание основ. Я волнуюсь, что я упускаю некоторые действительно важные вещи полностью.
Throwaway

2

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

Прекратите широко сравнивать себя с другими

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

Учиться учиться

Кроме того, лучший подход к тому, чтобы стать лучшим программистом и учеником в целом, заключается не в обучении конкретным вещам или понимании по памяти. ИМО, запоминание наизусть - самая низкая форма обучения. Это похоже на программу, которая пропускает критически важный этап «обработки» в Input-> Process-> Output. Учите себя понятиям, подобным тем, которые вы упомянули в своем вопросе. Широкое понимание программирования - это то, где вы предоставляете наибольшую ценность. Изучение нового языка в парадигмах, с которыми вы знакомы, - это легкая прогулка по сравнению с изучением того, как решать проблемы.

А теперь, за какой-то плохой совет от кого-то, только немного старше тебя

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

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

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


2

«Я знаю достаточно» и «Я хорош для этой работы» совершенно разные.

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

(это не значит, что они будут нанимать вас, если вам понадобится, например, 1-2 месяца для изучения: писать / читать в файлах XML. Надеюсь, вы понимаете, о чем я.)

Кроме того, я не думаю, что какой-либо программист когда-либо скажет: «Я знаю достаточно». (может быть, «достаточно, чтобы получить работу», «достаточно, чтобы разбогатеть», «достаточно, чтобы ...», но не «достаточно» :))

РЕДАКТИРОВАТЬ: Когда я говорю "основы", я имею в виду

  1. Основы программирования (бит, байт, переменные, функции, параметры, циклы, условия, рекурсия)
  2. Основы языка программирования, с которым вы будете работать (как скомпилировать программу, как отладить программу; как использовать IDE; 90% ключевых слов и знать, что они делают, когда использовать, как их использовать; переменная типы; как использовать вещи из 1 в языке; наиболее полезные библиотеки; обработка ошибок)
  3. «Соедините 1 и 2 своей кровью» :)

(Возможно, вам нужно будет использовать 2-3 языка на работе)

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


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

1

У тебя отличное отношение! Один из фундаментальных факторов успеха - никогда не быть довольным. Никогда не решить. Никогда не скомпрометируйте себя. Тем не менее, очень трудно понять, как именно это сделать (например, знание «наилучшей практики» для выполнения задачи X не так просто, как поиск в Google, потому что у каждого свое мнение).

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


Благодарю. Я не думаю, что понял, сколько мне нужно было услышать такую ​​похвалу.
Throwaway

0

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

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

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


[Копирование / вставка из моего комментария к комментарию @ e-MEE выше]. Мне не потребовалось бы месяца, чтобы читать и писать XML-файлы, хотя я все еще думаю, что это, вероятно, займет у меня день. Можете ли вы уточнить "основы"? Это основной смысл моего вопроса, так как я не знаю, что знаю основы. Я определенно знаю некоторые из основ, но я действительно волнуюсь, что я пропускаю некоторые действительно фундаментальные пробелы.
Throwaway

0

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

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

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

Если что-то, что вы чувствуете, вы еще не совсем поняли, не волнуйтесь. Вскоре вы сможете получить картину.

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.