Программирование мне не чуждо. Сначала я начал делать разметку (HTML, теперь, пожалуйста, не смейтесь надо мной), когда мне было 12 лет, и немного Бейсика, когда мне было 13 лет (я много знал о блок-схемах, псевдокодах на данный момент), но затем меня предупредили Биология в старшей школе и, следовательно, упущена на «реальных» знаниях программирования таких языков, как C, Java и так далее. Я взял CS для моего UG BE (похож на BS, но более теоретический). Я выучил C & C ++ (в меньшей степени) самостоятельно (мой проф был полной болью, и класс был заполнен кодами (кто-то уже изучал его в школе, и, следовательно, не обращал внимания на класс и не делал этого) пусть меньшие смертные, такие как я, тоже обращают внимание на класс)) и могут создать потрясающую программу сложения или умножения (те, которые теперь даже садоводы для детей)
Моя главная проблема заключается в том, что я всегда чувствовал себя неадекватным и задушенным моими ограниченными навыками программирования и принижаемым шутками кода (поверьте мне, я сталкивался с этим сайтом давным-давно, но мог только сейчас набраться смелости, чтобы действительно постить вопрос), и время от времени даже был подавлен из-за указанной неспособности. Большинство людей говорят, что программирование - это не обязательно язык, а состояние души и методы, которые они используют для решения проблем. Я согласен с такими чувствами, но могу ли я когда-либо приобрести такое «состояние ума», и если да, то как мне подойти к «Программированию / Кодированию», и если есть какие-то установленные пути и шаги, которые наиболее часто проходят, чтобы достичь «дзен» кодирования ". Как мне это сделать? Кроме того, не мешало бы, если бы какой-нибудь Святой хотел наставить этот забитый кусок $ #! ^.
PS Я всегда был бы благодарен любому человеку, который считает меня стоящим своего времени, и в качестве бонуса назвал бы мою первую часть программного обеспечения, которую я отправляю после них. (Если я когда-нибудь отправлю один, т.е.)
TL; DR: никогда не изучал "Программирование / Кодирование", не могу решить проблемы, даже если я попытаюсь. Помоги мне!
Ответы:
Я бы сказал, что лучший способ - просто тратить на это больше времени (поиск правила 10000 часов). Найдите то, что вы хотите сделать, и отправляйтесь на это. Выберите что-то, что выходит за рамки ваших текущих возможностей, но не настолько далеко, чтобы вы не смогли закончить в разумные сроки. Если вам действительно это нравится, вы обнаружите, что повторяете это до тех пор, пока у вас это не получится. Если вам не нравится это, то, возможно, это не то, что вам нужно. Попробуйте бросить вызов себе, хотя, вам, вероятно, понравится.
источник
Корабельные вещи . Это единственный способ. Готово На работе ваши собственные проекты, проекты с открытым исходным кодом. Начните отправлять вещи. Это могут быть очень маленькие вещи, такие как исправление ошибки или минимальная рыночная особенность. Просто начните отправлять вещи . Нет ничего более удовлетворяющего или укрепляющего доверие, чем успех.
Изменить: Вы должны прочитать Ship It . Здорово.
Отредактируйте снова: опыт, делающий что-либо кроме доставки, просто испытывает неудачу. Я видел много «старших» разработчиков, чей основной опыт не заключался в отправке вещей (и поиске оправданий, чтобы не отправлять их). Корабли настоящих художников .
источник
«проблема», «неадекватный», «задушенный», «ограниченные навыки Х», «приниженный», «подавленный», «неспособность» в одном предложении - все, что направлено на вас, наводит меня на мысль о неисцеленных ранениях из прошлого, которые все еще болят ты. Если вы найдете способы преодолеть это, программирование или любое другое искусство / ремесло будет очень легко освоить. Возможно, чтение об устойчивости других людей поможет здесь. Каждый переживает тяжелые времена в своей жизни. Если бы эти раны / раны не были исцелены, их успехи не были бы достигнуты. Заживи свою рану сначала. Программирование может подождать позже.
Что касается навыков программирования, то, как я изучаю новый язык и начинаю думать, как и другие, кто уже программирует на этом языке, это, во-первых, прочитать все, на что я могу опираться, что связано с этим языком. Затем, когда я прочитал достаточно, начните писать небольшие программы.
источник
Несколько вещей, которые вам понадобятся, чтобы начать работу:
Упорство: для того, чтобы стать хорошим программистом, нужно время на практику. Вам нужно написать много плохого кода перед тем, как писать хороший код - много плохого кода. К счастью, у вас есть такие ресурсы, как этот сайт, чтобы помочь вам. Если вы продолжите учиться программировать, вы сможете собрать простые игры и утилиты в кратчайшие сроки!
Цели: Поставьте себе цели. Скажем, научимся использовать STL в C ++ за две недели. Посмотрите, как хорошо вы делаете. Если вы займете больше времени, следите за тем, как долго, это поможет вам добиться большего успеха в будущем. Я узнал этот трюк от коллеги; до сегодняшнего дня он мог оценить, сколько времени займет почти любое задание. Это помогло мне следить за тем, сколько времени я трачу на личные проекты, и помогает не допустить их раздувания (управление областью, как они это называют).
Любопытство: Вы должны быть заинтересованы и помолвлены. Если вы не относитесь к тому типу людей, которые не подходят к проблемам с желанием найти решение, начать программирование сначала будет сложно, а отладка может оказаться кошмарной. Но это не должно быть так. Если у вас есть проблема, спросите на сайтах, подобных этому, Google свою ошибку. Если вы не можете понять, как что-то реализовать, спросите! Всегда есть люди, которые готовы помочь!
Уверенность: будьте уверены в том, что вы хотите сделать, и достаточно уверены, чтобы задавать вопросы. Если кто-то показывает вам другой способ сделать что-то, не будьте оборонительными или обижайтесь на себя, думая, что вы сделали это неправильно; Думайте об этом, поскольку вас учат другому подходу к решению вашей проблемы!
Прежде всего, сохраняйте позитивный прогноз, читайте много уроков и задавайте много вопросов, и вы станете счастливым программистом! Еще один совет, который я должен дать, это выбрать язык, придерживаться его, пока вы не станете более уверенным. У вас есть много времени, чтобы выучить целый ряд языков, но когда вы только начинаете, просто работайте с одним.
Удачи! И помните, это должно быть весело! = D
источник
В разработке кажется, что парадокс «чем больше знаешь, тем больше знаешь, чего не знаешь» остается в силе.
Если вы вдумчивый, честный человек, вам нужно принять этот факт и научиться с ним справляться.
Уверенность, в смысле, подразумеваемом вопросом, является очень личной вещью, которая действительно не имеет никакого отношения к определенному набору навыков или методологии.
На более мелкой ноте, настроение, описанное в http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ (раздел: Вы радикально переоцениваете средний навык соревнования из-за толпа, с которой ты слоняешься) всегда помогала мне.
Я бы посоветовал вам научиться быть более уверенным в работе, которую вы проделали, а не укреплять уверенность в своих навыках в целом. Единственный лучший способ сделать это - написать повторяющиеся тесты для всего вашего кода. Это будет творить чудеса в вашей психике.
источник
WhiteFang34 совершенно прав. Как биолог, я обнаружил, что единственный способ научиться программировать - это просто начать заниматься этим. Прочитайте несколько книг, всегда держите под рукой Google и SO и просто делайте это. Ваши программы будут очень простыми, плохо закодированными и с ошибками в начале, и со временем вы будете становиться все лучше и лучше. У меня нет времени брать уроки программирования, но я трачу много времени на программирование (потому что это интересно).
Выберите язык, который позволит вам больше думать о том, что вы хотите сделать, и меньше, как это делать. с не очень хороший пример этого. Попробуйте языки более высокого уровня, такие как java или c #, потому что они позволят вам делать больше, и вы наберетесь смелости попробовать все больше и больше.
(Это, конечно, при условии, что вы не занимаетесь карьерой профессионального программиста, и в этом случае я бы просто сказал вернуться в школу ...)
Удачи и счастливого кодирования
PS: О, и вам понадобится много лени, нетерпения и высокомерия
http://c2.com/cgi/wiki?LazinessImpatienceHubris
источник
Забавная вещь это:
Речь идет о понимании тонкостей реального мира, взаимодействия между вещами. Умение мыслить абстрактно . Умение замечать вещи и запоминать их. Это неизбежно приводит к хорошему решению проблем.
Реализация, сам код приходит только после этого - после того, как Вы успешно
решили данную проблему в своем уме.
источник
Уверенность - это не то, что вы должны пытаться чувствовать в своих навыках Уверенность плохо (вероятно, даже отрицательно) коррелирует с фактическим навыком. Вы должны работать над улучшением своего профессионального (или ценного хобби) набора навыков, независимо от того, что вы думаете о своем текущем уровне квалификации.
Уверенность - это то, что другие люди, те, кого вы считаете компетентными, должны почувствовать ваши навыки после работы с вами или наблюдения за вашей работой.
источник
Это очень просто: быть заинтересованным в этом ! Кажется, вы уже нашли, поэтому найдите что-то, что, по вашему мнению, было бы здорово сделать, а затем сделайте это, задавая любые вопросы, которые вам нужны, по пути, используя все возможные ресурсы, чтобы собрать проект именно так, как вы хочу это. Прополощите и повторите, и вы обнаружите, что вы отличный программист, даже не прилагая особых усилий, так как это было интересно / забавно.
Кроме того, соблюдайте хороший баланс между выяснением вещей и заданием множества вопросов. В начале, особенно, очень важно, чтобы другие сказали вам, где вы идете не так, чтобы помочь вам в первой части кривой обучения. Оттуда, попытайтесь выяснить вещи самостоятельно, и если вы застряли через некоторое время, тогда задайте вопрос об этом. Что я часто делаю, так это пишу вопрос на SO, а затем ищу ответ, время от времени проверяя SO. Иногда я сначала нахожу ответ, иногда он находит меня первым.
Не беспокойтесь о том, какая технология, хотя было бы действительно интересно создавать графику с HTML5 + JavaScript + тегом canvas, поскольку его довольно легко настроить, вознаграждения мгновенные, и вы можете поделиться ими.
источник
Подход к программированию с более позитивным отношением к ученикам. Никто не знает всего. Во-вторых, выясните, почему вы интересуетесь программированием, если вам это нравится:
Когда вы знаете, что вам нравится в программировании, вы можете сосредоточить свои усилия в этом направлении. Я тинкер / решатель проблем. Это делает меня чрезвычайно прагматичным. Алгоритмы и структуры данных, теория информатики вообще усыпляют меня.
Мой фон похож на ваш. Начал строить компьютеры в 10 лет. Немного HTML / C ++ в моем возрасте ... надоело это ... бросил в течение нескольких лет. Я никогда не переставал играть с компьютером, хотя.
Теперь я люблю программировать. Так что изменилось? Я нашел свою мотивацию. Я начал работать, где мне дали множество проблем, которые нужно решить. Поиск умных, простых решений сложных проблем действительно зажигает мой огонь.
Наконец, не беспокойтесь о том, как другие кодируют, или "правильно", или нет. Это правильно, если он делает то, что вы хотите. Как только вы начинаете работать в команде, стандарты становятся важными. Это во многом связано с тем, что другие люди должны будут иметь возможность интерпретировать и изменять вашу работу. Стандарты проектирования - это не то, чем должен заниматься новый программист.
источник
Там всегда инерция, чтобы преодолеть при изучении новых вещей. Любопытные программисты, которых я знал, изо всех сил пытаются найти мотивацию продолжать изучать новые языки и парадигмы. Они скажут: «Мне нужен проект, чтобы опробовать X». для того, чтобы выучить X. Некоторые действительно найдут / придумают этот проект.
Имейте в виду, что карьера в программировании будет пожизненным процессом разочарования, учебы, экспериментов и борьбы с ветряными мельницами. Пока ИИ не возьмут на себя все.
Если вы все еще занимаетесь настоящей наукой, тогда вы сможете представить какой-то проект / потребность. Например, объединение данных из нескольких источников в Интернете или вне его. Это может вдохновить вас на изучение javascript или R или даже Excel / VBA. Если вы можете соединить некоторые точки для других в своей области, вы получите признание, и вуаля, вы будете программистом.
Используйте, но будьте осторожны с наставниками. Вопрос авторитета.
И, кстати, «кодирование дзен» - оксюморон.
источник
Вы никогда не будете уверены в своих навыках программирования.
То, как вы описываете свои навыки, указывает на мышление, где вы никогда не будете удовлетворены своими навыками. Вы освоили C ++? Подождите, есть Java! Вы освоили Java? Подождите, пока есть параллельное программирование. Вы освоили параллельное программирование на C ++ и Java? Подождите, есть SOA! Есть ООД! И MVC! SOLID! Функциональное программирование! Веб-программирование! Облачное программирование! Мобильное программирование!
Дело не в том, чтобы чувствовать себя подавленным из-за этого. Вам нужно нажать несколько кнопок в своей голове: ваши сомнения в ваших навыках - чистое топливо. Скорее всего, вы никогда не достигнете достаточного уровня навыков программирования. Пока это так, вы будете двигаться вперед. Самое сложное - это осознать это и сделать что-то против этого, хотя цели никогда не будет. Чем дольше вы можете вынести это, тем выше будет ваш уровень мастерства.
источник
Раньше я чувствовал то же самое, и именно сайты Stack Exchange помогли мне обрести уверенность.
Я начал использовать StackOverflow, чтобы найти ответы на свои вопросы, и однажды я увидел ответ, на который я знал. Я опубликовал ответ, получил некоторые положительные отзывы и комментарий о том, что это хороший ответ, и это побудило меня поискать другие вопросы, на которые я мог ответить.
Вскоре он перерос в мою зависимость, находя без ответа вопросы, которые я мог бы решить, и со временем я начал обретать уверенность в своих ответах. Мне больше не нужно было говорить «я думаю, это потому, что…» или «это должно вызывать ...», но вместо этого я мог с уверенностью сказать, что «это потому, что ...» или «это вызывает ...»
Мне нравятся головоломки, и для меня такие вопросы были похожи на головоломки мини-программирования, с дополнительным преимуществом получения некоторой положительной обратной связи, если я получу правильный ответ. Если я получил неправильный ответ, я просто удалил его и узнал, что другие люди решают ту же проблему.
Поэтому я бы порекомендовал пойти на SO и просмотреть вопросы в любом интересующем вас теге и найти те, на которые, по вашему мнению, вы можете найти ответы. Нет ничего лучше, чем люди, которые говорят вам, что ваши ответы на программы полезны / хороши, чтобы дать вам уверенность в своих возможностях программирования :)
источник
Твой мозг не любит работать слишком усердно. Учитывая выбор, он предпочитает выбрать легкий путь. Вот почему легко расстаться с вещами, когда вы пытаетесь заняться чем-то слишком амбициозным - слишком много, чтобы учиться, слишком много непростых деталей, чтобы разобраться, слишком много бритья.
Есть несколько вещей, которые вы можете сделать, чтобы бороться с этим. Прежде всего это энергия. Старайтесь заниматься, когда вы хорошо отдохнули и сыт, или у вашего мозга буквально не хватит топлива для сложных абстрактных мыслей. Второй трюк - это интерес или важность. Если вы сможете убедить свой мозг в том, что знание мэйвена жизненно важно для того, чтобы избежать преследования тигра, вы научитесь и сохраните больше, чем когда ваш мозг думает, что это бессмысленная побочная задача на пути к тому, чего вы действительно хотите. Третий важный фактор - это растянуть, не переусердствовав. Некоторое усилие даст вам этот гул от достижений и поможет сформировать новые умственные пути, не будучи недостижимым.
Также есть что сказать о повторной практике. Вы хотите, чтобы вариации были достаточно новыми, но достаточно сходства, чтобы вы могли выполнять те же действия и привлекать их.
Еще один момент заключается в том, что вы должны попытаться засучить рукава и запачкать руки. Легко тратить много времени на размышления об альтернативных подходах или идеальном решении, если вы никогда не начинаете. Это пример того, как ваш мозг пытается выбрать более легкий путь. Попытайтесь понять, когда это происходит с вами, и избегайте этого, пытаясь начать. Даже тест или эксперимент это хорошо. Это также имеет побочную выгоду, заставляя ваш мозг хотеть прекращения выполнения задачи или поиска лучшего решения.
источник
Три вещи для рассмотрения: (или нет, конечно.)
источник
Здесь есть много хороших комментариев о практике, это действительно имеет значение.
Вам следует меньше беспокоиться о «взломах кода» и прислушиваться к их советам или комментариям. Если с ними трудно иметь дело в потоке, с ними, вероятно, трудно иметь дело и в реальной жизни; и действительно, у кого есть время беспокоиться об их социальной неумелости?
Конечным результатом является то, что есть тысячи способов решения задач программирования. Многое сводится к личным предпочтениям. Я, например, ненавижу читать код с тенарными операторами. Другие любят их. Думаю, они правы или нет? .. на самом деле, ни то, ни другое. Это личное предпочтение, хотя по этой теме будет много горячих споров.
Если кто-то ругает ваш код из-за того, что вы взяли 25 строк вместо 20, я бы просто проигнорировал их, если они не нашли фактический недостаток в логике. Иногда в реальном мире нам просто нужно сделать что-то (и кто действительно хочет послушать кого-то, кто задыхается от того, насколько сложно ... э-э, изящно, им удалось создать кусок кода, который должен был быть сделан за 10 минут) , Можете ли вы чему-то научиться из бесконечных философских дебатов о том, как далеко абстрагироваться? Конечно ... но есть неуловимая отдача в том, чтобы впитываться в постоянную 100% элегантность. Это нереально все время, так как мы хотели бы притворяться, что это так. Некоторые из моих наименее изящных кодов, которыми я бы стыдился поделиться с кем-либо (которые я написал в начале своей карьеры), сэкономили людям время за неделей время,
Есть отличный пост в блоге Джоэла Спольски, который называется «Программатор воздуховодов». Это отличное чтиво, и IMO ставит перед вами некоторые ваши страхи.
http://www.joelonsoftware.com/items/2009/09/23.html
Я не говорю о том, чтобы писать дерьмовый код и игнорировать лучшие практики, а берутся за ненормальные программисты.
источник
Спросите себя, почему вы на самом деле чувствуете недостаток уверенности. Я думаю, это потому, что тебе все равно, что думают твои сверстники, и это совершенно понятно. Но чтобы быть по-настоящему дзенским, вам нужно прояснить такие мысли и со временем сравнивать себя с самим собой. Руководствуйтесь своим интересом, учитесь и усердно работайте, и вы станете хорошим программистом без всякой психики.
Вам не нужна уверенность, это меньше шума на вашем пути прогресса.
источник