Меня попросили взять в нашем ИТ-отделе человека, который не имеет опыта программирования, но является умным и способным человеком и помогает ему перейти в программирование, скажем, для разработчика начального уровня, поддерживающего существующие приложения .Net. Я определенно верю, что этот человек может сделать это, но я ищу самый быстрый способ заставить его ускориться. У меня есть куча идей, но я хотел посмотреть, что думают другие. Я знаю, что это также сильно зависит от того, как он учится, но я говорю в целом.
Итак, вопрос: как вы думаете, как лучше всего ускорить процесс разработки (не в данном случае .Net)?
Ответы:
Я обычно прописываю ту же последовательность для тех, кто хочет изучать программирование. Это очень теоретически, но это закладывает хорошую основу. Это займет три или четыре месяца полного обучения, но программирование - это не то, что вы изучаете за одну ночь.
Если вы не можете пройти через эту последовательность, вы не сможете программировать, так что вы можете сдаться.
Мое правило: пробирайся сквозь эти три книги только силой, если это необходимо. Задайте любые вопросы, которые у вас есть, но только после того, как изо всех сил, чтобы понять это самостоятельно Если вы можете пройти через эти три книги, поздравляю, вы - программист, теперь я могу выбросить вас из PERL через 15 МИНУТ или любой другой мусор в книжном магазине в Большом Книжном Шкафу Java, и вы справитесь. Если ты не сможешь пройти через эти три книги, сдавайся, иди домой, ты никогда не получишь это.
Я не думаю, что вам нужно изучать C и Scheme, если честно. Они просто основа для будущего обучения. Эти две довольно простые книги на первый взгляд очень просты (C и Scheme - суперлегкие языки), но они очень глубоко разбираются в реальном искусстве программирования, не тратя время на запутанный синтаксис, поэтому они отлично подходят для начала повторного соединения Ваш мозг, чтобы быть хорошим программистом.
Попытки использовать ярлык и перейти непосредственно к изучению того, что вы хотите изучить прямо сейчас (например, начиная с C # и ASP.NET), обречены.
источник
up to speed quickly
стороны.Лучший способ быстро освоить не-разработчика - вдохновить их !
Чтобы добиться успеха, кандидат должен быть, по крайней мере, заинтересован, если не увлечен , программированием (независимо от платформы).
Хотя я согласен с Джоэлом в случае идеального кандидата, я бы постарался не впихнуть слишком много теории в слабый ум - это только оттолкнет их. Если они вдохновлены, любопытны и, надеюсь, страстны, они захотят понять теорию после того, как увидят магию.
Я полностью согласен с @karudzo - самореализация, и конструктивный обзор может быть очень вдохновляющим.
источник
Самый быстрый способ - дать ему время , которое может потребоваться, хотя это может быть год или два.
Конечно, кажется простым научить его простому языку (C #, если он занимается .NET), но изучение языка - это не обучение программированию.
Если он никогда не программировал, то, кроме синтаксиса и библиотеки хотя бы одного языка, ему придется изучать массивы, связанные списки, модель компиляции любого языка, который он изучает, модульность, управление ресурсами, парадигмы, шаблоны, О-нотация ... - вся энчилада. Это много вещей, которые нужно пахать, и большинству из нас потребовалось несколько лет, чтобы изучить эти основы, и даже больше, чтобы стать настоящим профессиональным программистом.
Там есть материал, который охватывает большую часть этого (например , новейшая книга Страуструпа, которая учит программированию с использованием C ++, а не обучению языку C ++), но не очень много и ничего, что охватывает все это. Поэтому парень должен быть готов учиться и читать много книг и статей.
Что касается того, как это сделать: у меня нет полноценной учебной программы, которую можно вставить здесь. (Извините.)
Однако я бы порекомендовал начать с обучения его одному языку программирования, чтобы у него была возможность быстро добиться начального прогресса и получить обнадеживающие результаты. Там довольно много книг для обучения таким языкам, выберите ту, с которой вы знакомы. Если в книге много упражнений, и он готов их выполнять, будьте готовы потратить много времени, помогая ему с этим. Если в книге нет (m), начните придумывать свои собственные заранее, но будьте готовы адаптировать их к своему уровню / скорости понимания.
Если этот первый язык не был C или C ++, IMO, он должен изучить один из следующих. K & R хорош для этого, как и TCPL Страуструпа или, если он может (с вашей помощью) справиться с крутой кривой обучения, Кениг / Му. Причина, по которой я бы порекомендовал это, состоит в том, что, когда вы знаете C или (предпочтительно IMO) C ++, сравнительно легко выбрать любой из этих производных C, таких как C #, Java, ObjC ...
В остальном обеспечьте его постоянным потоком хороших книг и статей. Я не думаю, что это будет очень полезно, если мы предложим слишком много из них, так как 1) это должно соответствовать культуре вашей компании, и 2) вы должны чувствовать себя комфортно, рассказывая ему, чтобы он изучал эти вещи.
источник
Я бы не стал запускать их на .NET. Я делал эту ошибку слишком много раз. Не позволяйте работодателю заставлять вас создавать некомпетентного программиста из-за времени. .NET может быть быстрой платформой разработки, но она не заставляет разработчиков изучать программирование. Только в C # вы обнаружите, что разработчик застрял на ссылочных типах, времени жизни объектов, они оставят огромные утечки памяти (да, это возможно в .NET) и будут иметь плохой дизайн. Было бы намного лучше запустить их на C или C ++ (возможно, на c ++, поскольку им нужно будет использовать концепции ООП), а затем сказать что-то вроде: «Теперь было бы неплохо, если бы ваша память управлялась для вас, каждая вещь была объектной -ориентированы, а вам не приходилось иметь дело со всеми этими мерзкими указателями? " Вот C # и JAVA. Если они освоили c ++, они победят как через неделю, так и две. Я рекомендую полк Джоэла. Это был список, который дал мне мой учитель по CS 101, и я почувствовал себя намного лучше, когда приступил к численному анализу. Это также позволит вам узнать ранее, будет ли кандидат нарезать горчицу или нет. Кроме того, как только вы получите c и c ++, вы автоматически поймете c # и java после прочтения введения в книги. Вы не только поймете их, но и поймете их лучше, чем те, кто не знает c и c ++.
источник
hWND
80-х, верно? Очевидно, что вместо этого вы используете хорошую абстракцию (какая абстракция - совершенно другая дискуссия). Конечно, хорошо знать, как это работает под капотом, но вам не нужен C # .NET для абстракцииДайте им что-нибудь простое, но полезное для решения. Позвольте им немного покопаться и помочь им отшлифовать. Нет ничего лучше, чем небольшое достижение, которое поможет им (хотя кто-то не интересуется программированием
источник
Парное программирование. Позвольте им скрывать вас, пока вы пишете свой собственный код - любой код. Через несколько часов они попросят вас ввести ваш код, а вы скажете им, что делать, нажимая клавишу, даже если это необходимо. Ответьте на несколько их вопросов, но не настолько, чтобы вы сильно замедлились - просто дайте им впитать все это. Они также обнаружат ваши опечатки и больше ваших ошибок, чем вы думаете. Через несколько дней они смогут начать «навигацию», сообщая, какой код вводить для задач, аналогичных тем, которые они видели ранее.
Я узнал многое из того, что я знаю как разработчик, в течение месяца, и научил таким образом нескольких других новых разработчиков, один из которых смог занять место меня как ведущего разработчика при запуске через несколько месяцев. Когда мы впервые начали работать вместе, он никогда не писал ни единой строчки кода.
источник
Дайте ему хорошую идею (визуальные студии, экспресс все еще хорош). Обучите его общепринятым 60% синтаксиса (пропустите yield, linq, перечисления, атрибуты и т. Д., Проведите занятия, виртуальные и переопределите). Потратьте время на отладчик (особенно на стек вызовов). Затем скажите ему, чтобы он гуглял "msdn functionanme" всякий раз, когда ему нужна помощь, и это должно помочь ему быстро начать работу.
Также научите его никогда не ловить и не глотать исключения. Скажите ему, что он должен сбросить или записать это!
Бонус: научите его, как сериализовать данные JSON, чтобы он мог легко читать / записывать в файл. БД является излишним и слишком многим для изучения, и вы не хотите, чтобы он писал пользовательские форматы файлов, хотя я могу разрешить проходить по одной записи на каждый тип строки, чтобы сохранить / загрузить массив строк как приемлемый.
источник
Я знаю, что многие люди говорили о языках и книгах для этих языков. Я отличаюсь
Программирование - это научиться мыслить аналитически. Прежде всего, человек должен уметь думать и придумывать алгоритм на листе бумаги, чтобы понять, в чем проблема. Вы должны направлять их, чтобы они получили правильную технику мышления.
Далее идут основы языка. Начните их на выбранном языке. Дайте задачу программе.
После того, как это первое сокращение закончено, заставьте их выполнять основы CS и шаблоны проектирования.
Теперь заставьте их перепрограммировать ранее возникшую проблему с помощью этих новых концепций.
источник
Начните его с основ: переменные, циклы, циклы, для циклов, массивов, научите его основам, печатайте на экране, выполняйте простую математику. Перейдите к методам и основам ООП, например, вот как создать класс, покажите ему, почему, а не просто как.
Язык не имеет значения, но выберите что-то, что вы знаете, и это очень абстрактно (java, python и т. Д.), Так что ему не нужно беспокоиться о таких вещах, как управление памятью, указатели и т. Д. Научите основам рекурсия, башни ханио или рекурсивно ищущие каталоги.
Научитесь программировать - хороший бесплатный ресурс по программированию на Ruby. Сделайте это забавным, легким и интересным.
источник
Дайте ему несколько задач и попросите его научиться находить ресурсы для решения проблемы самостоятельно.
Если вы научите его находить ответы и быть самодостаточным, он, естественно, научится хорошо программировать. Критическое мышление и находчивость - два ключевых навыка для программиста.
В конце концов, страсть / интерес определенно будет ключевым фактором того, насколько успешно они будут быстро его изучать. Если он не имеет или не поймает «ошибку», это может быть медленным и / или болезненным процессом. Если он поймает ошибку, он опоздает на кодирование, в нерабочее время, проведя время своей жизни.
источник