Пользователь
0,0
рейтинг
23 августа 2012 в 14:24

Разработка → Как я сам научился программировать за 8 недель из песочницы

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

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

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

Получение начального понимания языка программирования Python и общих методов программирования (2 выходных дня):


  • Learn Python the Hard Way. Несмотря на название, это довольно простой способ, он делает изучение основных понятий очень легким, и большинство уроков займет менее 10 минут. Тем не менее, я обнаружил, что данный способ не работает для некоторых, более сложных тем, так что я рекомендую остановиться после урока 42 и двигаться дальше.
  • Google’s python class. Читайте заметки и / или смотрите видео и делайте все упражнения, пока вы не будете выполнять их правильно — не подсматривая в ответы. Борясь с упражнениями, которые я постоянно делал неправильно было очень полезным для меня в качестве полученного опыта, и я узнал бы гораздо меньше, если бы я просто посмотрел на ответы и пытался убедить себя, что я понял упражнение.


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

Получение начального понимания веб-фреймворка Django (1 выходной):


  • Пройдите Django учебник.
  • Удалите весь код, который вы создали в процессе выполнения шагов из учебника.
  • Пройдите учебник еще раз, заново.

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

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

Получение более глубокого понимания Python / общих концепций программирования (4-8 выходных дня):




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

Практика построения простых веб-приложений (2 выходных дня):


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


Создайте свой прототип (2 выходных дня):




Вот и все. 8 недель (или меньше) и вы ушли от ничего не зная о разработке программного обеспечения до рабочего прототипа. Не так уж и сложно, так ведь?

Следующие шаги:


Само собой разумеется, что существует огромная разница между относительно беглым объемом знаний, необходимого для создания простого прототипа (в разрезе данного поста) и объемом знаний и опыта, необходимые, для того чтобы стать действительно квалифицированным инженером-программистом.

P.S. Ниже приведены несколько другие потенциально полезные ресурсы — пожалуйста, оставьте ссылки в комментариях, если у вас есть предложения по другим ресурсам, которые обучают программированию:



Оригинал: How I Taught Myself to Code in 8 Weeks
Андрей @amakhnach
карма
14,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (92)

  • +25
    • Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. (Фредерик Брукс)


    И снова в очередной success story ни слова об отладке.
    То есть, программистом получившегося клепальщика кода назвать нельзя.
  • +32
    Просто что-то сделать, и сделать что-то профессионально — две ОЧЕНЬ разные вещи
    • +1
      Расскажите, а как можно стать профессионалом? В чем собственно разница?
      • +11
        Разница, видимо, в опыте
        • +2
          Может в результате?
          • +9
            В его прогнозируемости.
      • +1
        Изучать досконально, с самых базовых основ, вместе с тем работать, набираться опыта, стараться не просто решать возникающие задачи, а исследовать и находить оптимальный способ их решения.
      • +6
        Профессионал знает тысячи нюансов и нюансиков, зачастую не связанных с конкретным языком программирования и конкретной реализацией. Это еще и environment, в котором работает софт, особенности операционной системы, особенности деплоя приложения на конкретных системах, особенности хранилищ, протоколов и транспортов.
        Знание всего этого и, самое главное, учитывание этих знаний в своем коде и отличают профессионала от «выучил пайтон за 8 недель»
        • 0
          Однозначно! А еще предметную область стоило бы упомянуть.
      • –3
        Разница в том, что профессионал получает за свою работу деньги, только и всего.
        • 0
          Скорее немного по-другому. Профессионал — тот, кто владеет профессией. Имеет высшее образование. Профессиональный футболист — человек, который закончил футбольную школу.
      • 0
        Присоединяюсь ко всему выше сказанному. Писать программу можно научиться и за 2 недели. А вот проектировать — это не ремесло, это искусство. Для этого мало знать одного python. Нужно изучать и др. языки c,c++,c#,java,… Нужно подмечать как в них реализуются те или иные концепции. Необходимо изучать технологии. Нужно изучать ту среду в которой выполняется ПО т.е. ОС, аппаратную составляющую, сетевые технологии,… Зачем это нужно — спросите. Отвечу: для того что бы уметь построить грамотную архитектуру. Которая будет готова к изменению и расширению, а не к очередному переписыванию говнокода.
        • +1
          По-моему, вы говорите об инженерах-программистах, но программирование это не только их прерогатива.
          • 0
            И все же я считаю, что к программе нужно подходить как к проекту. И применять инженерные методы. Да, естественно в крупных проекта участвуют не только инженеры. Дизайнеры проектируют GUI, кто-то пишет help… Более того, каждый инженер проходит стадии своего становления, каждый состоявшийся программист писал говнокод. Гугу не рождаются, ими становятся. Но нельзя прочитать книгу «C++ за 21 день» и сказать «Я — крутой программист». Я не говорю что удел создания программ только профессионалов. Я призываю стремиться быть профи, развиваться, работать над собой. Каково Ваше мнение по данному поводу?
            • +1
              Есть программисты, инженерами не являющиеся. В официальной номенклатуре это, как минимум, «техник-программист» и «программист» — выпускники техникумов или колледжей. Часов изучения именно программирования у них как бы не больше чем у инженеров или бакалавров по той же специальности, плюс несравнимое число часов практики. Инженер-программист — это скорее рост вширь, овладение процессами решения бизнес-задач, а не чисто техническими навыками и инструментами вглубь. Самый простой пример — от программиста никто не потребует (в теории) технико-экономического обоснования предлагаемых им изменений в проекте, техническое могут, экономическое — не его компетенция. А с необходимостью развиваться и работать над собой я не спорю. Но в какую сторону каждый выбирает сам — одному интересно писать идеальный код, другому знать что его пусть и не идеальный код решает реальную задачу, и не просто решает, но и решение «хотелок» заказчика найдено самостоятельно.
              • +1
                >В официальной номенклатуре это, как минимум, «техник-программист» и «программист» — выпускники >техникумов или колледжей. Часов изучения именно программирования у них как бы не больше чем у >инженеров или бакалавров по той же специальности, плюс несравнимое число часов практики.

                И как, много вы знаете/видели/слышали о таких колледжах?

                Мне интересно, откуда пошло поверие, что на практикующего среднего программиста (или кодера, как это любят называть склонные к элитизму супермегагуру) надо идти учиться в колледж/техникум. Сужу по колледжам родного Зажопинска и по отзывам выпускников колледжей из других городов — ловить там нечего. Совсем. Ну то есть, вообще.
                • 0
                  Например ncti.ru/ или www.ci.nsu.ru/ На хабре время от времени проскакивают вопросы типа «какой первый язык давать студентам колледжа — Java или Python?» — тоже значит где-то учат не только в ворде работать.

                  Вообще это как должно быть. К сожалению система среднего профессионального образования была сильно разрушена в 90-е. С другой стороны, думаю, и во многих вузах особо ловить нечего. Но если почитать программы «программистских» специальностей ССО и представить, что выпускники всё это знают и умеют, то, думаю, многие работодатели были бы счастливы иметь таких работников. Например, в память запало, что выпускник с квалификацией «программист» должен уметь участвовать в ревьюировании кода. Много выпускников вуза это могут?
                • 0
                  >> Мне интересно, откуда пошло поверие, что на практикующего среднего программиста (или кодера, как это любят называть склонные к элитизму супермегагуру) надо идти учиться в колледж/техникум.

                  Да, не воспринимайте это серьезно, это прото интернет-мулька типа «быдлопрограммистишек надо учить в быдлопту». Реально, конечно, все развитые страны учат программистов в институтах. Вот подсмотрел данные по США — доля Software Developer'ов, не дошедших в своем образовании до института — меньше 15%.
      • 0
        Одно из определений, которое мне нравится: профессионал умеет примерно то же, что и любитель, но способен делать это в гораздо более широком диапазоне (неблагоприятных) внешних условий.
      • 0
        Нужно прочитать книгу дядюшки Роберта Мартина «Идеальный программист» называется. Думаю, она даст Вам правильное направление по нелегкому пути становления профессионалом!
    • +10
      Всегда надо с чего-то начинать. Ни один профессионал не родился профессионалом.
      • –1
        Нет, но становление может быть по разным путям. И некоторые из них — неправильные.
        • 0
          Извините, что нет?)
          • +1
            «Нет», конечно, не родился :) Но сделался постепенно.
        • +5
          Что значит «неправильные»? Если стал профи, значит путь был правильный.
  • +1
    Интересно — как он считал недели — в абсолютном выражении(количество дней),
    или в относительном(день = 24 часа) — из расчета, что больше 4х-6ти часов активно думать в день он не может чисто физически?
    Т.е. от метода подсчета количества дней очень сильно разнится реальное количество дней, которое он потратил…
    Во втором случае мы имеем от 224 до 300+ дней, то есть почти год. :)
    • +2
      Если строго по тексту, то набегает 11-15 выходных, или 5-8 недель. Если принять за основу, что самообучением можно заниматься исключительно на выходных.
  • +11
    Изучить язык != научиться программировать.
    • НЛО прилетело и опубликовало эту надпись здесь
      • +3
        Если создан какой-никакой, но работающий прототип, то речь явно идёт не только об освоении синтаксиса, а ещё, как минимум, умению выражать свои «хотелки» через этот синтаксис.
        • +1
          И «программировать» != «в промышленных масштабах создавать программные продукты». Не случайно даже в официальной российской номенклатуре профессий и должностей есть такие градации как «техник-программист», «программист» и «инженер-программист», подразумевающие не столько разный уровень знания языков и библиотек, сколько разные уровни абстрагирования от них.
    • +2
      Как и изучить фреймворк != изучить язык.
  • +54
    «Как я убедил себя, что научился программировать за 8 недель».
  • +6
    Нужно провести эксперимент.
  • +15
    Работаю программистом только 3-й год и понимаю все больше и больше, что я вообще ничего не знаю.
    Хотя тоже считал, что научился программировать спустя первые 8 недель.
    • +13
      12-й год.
      Пока всего я ещё не знаю, и есть смутные сомнения…
      • +1
        Я тоже «умел» программировать, когда только начинал (написал игру «Кто хочет стать миллионером» на qBasic'е).
        Сейчас уже 7 лет «в теме» и понимаю теперь точно, — чем больше я знаю, тем меньше я знаю (с)
      • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    startupquote.com/post/855482768 — милая голова =)

    1. Собрать ссылки с примерами рабочего кода
    2. Выучить код примеров
    3. Воспроизводить выученный код самостоятельно
    4. Профит

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

    • 0
      чтения == после чтения)
  • +2
    Спасибо за статью.

    Помойму, человек четко и доступно пояснил идею и возможно кому-то это поможет сделать первые шаги в изучени программирования.
    • +18
      Во-во. А по остальным комментариям создается впечатление, как будто кто-то написал пост «как выучить английский за 8 недель», и тут же набежали носители языка с понтами «а ты Шекспира прочитал?», «а поддержать беседу на два часа об отличиях библии короля Якова от более поздних переводов слабо?», «изучить грамматику и сойти за местного — две очень разные вещи», «третий год перевожу фильмы про негров и мафию — и все больше понимаю, что английский я не знаю»…

      Народ! Пост не об этом. Даже сравнивать смешно того, кто за восемь недель разобрался с азами питона и вас всех, кто много лег зарабатывает программированием себе на хлеб с маслом.

      Возвращаясь к аналогии с языком — это про то, как «выучить английский за 8 недель», чтобы уметь спросить где вокзал и знать, как заказать себе пинту эля. Тоже хорошее дело, кому-то, наверно, может быть полезно. И уж по-любому, осилившему такое есть чем гордиться.
      • 0
        Ну а в комментариях речь идёт о том, что, пользуясь вашей аналогией, некорректно называть изучение минимально необходимого для общения подмножества английского языка «изучением английского языка за 8 недель».
  • –1
    Программирование с синтаксисом языка моло общего имеет. Это математика, алгоритмы — этому годами учатся и многие так и не могут научиться. Потом еще много интересного всплывает.
    • +1
      Программирование — это очень много разных вещей, объединенных одним словом. От «одноразовых» скриптов в шелле или Excel до разработки встраиваемых ОС или распределенных высоконагруженных систем реального времени.
  • +6
    Самое сложное в любом деле — сдвинуться с мертвой точки.
  • +4
    В оригинале статья зовется более правильно — «how I taught myself to code»
    Еще правильнее было бы «how I taught myself to write code». Тогда вполне честно — человек научился за 8 недель писать код, а не программировать.
  • +4
    Собственно вводные курсы программирования от юдасити, MIT и стэнфорда очень далеки от «просто изучения синтаксиса». Не знаю насколько реально начать так учиться вообще не имея бэкграунда, но это действительно внятная программа, которая может сделать из, допустим, первокурсника или непрофильного специалиста очень толкового джуниора, которого захотят многие компании за короткий срок.
    И, да, он, конечно же уже будет программистом, как ни больно это осознавать некоторым людям.
    • –1
      Очень наивно. Никакой вводной курс не сделает из нуба программиста, как и художника, музыканта и т.п. Дело не столько в опыте, сколько в чётком понимании того, что делаешь и зачем. А по-вашему, можно и человека, который только научился строить собачьи будки, называть строителем.
      • +1
        Зависит от понимания термина «программист», на «бытовом» уровне это человек, который умеет писать программы, выдающие нужный результат, как для меня музыкант любой человек, который может сыграть что-нибудь похожее на Цоя или Хоя на гитаре. Он себя может не считать музыкантом, другие музыканты могут не считать его музыкантом, но для меня он музыкант.
      • +5
        >> Никакой вводной курс не сделает из нуба программиста

        Полагаю, слово «программист» здесь нужно произносить с придыханием и писать с большой буквы.
        Представил себе чувака, выговаривающего первокурснику, осилившему SICP: «Э-э-э, дружок, пока что ты нуб, а не программист. Мой хрустальный шар показывает, что ты не понимаешь, что и зачем ты делаешь. А вот Вася, который уже 6 лет копипастит код 1С из окошка в окошко и изучил все нюансы работы комбинации клавиш контрлц-контролв по виндовс ХР — он понимает, что делает. Он Программист».
        • 0
          Я считаю вводным курсом первые три главы SICP. Главы Metalinguistic Abstraction и Computing with Register Machines как-то странно называть частью вводного курса, не находите? Какое-то хардкорное введение получается — похлеще, чем в порно.
          • +2
            В самом MIT'е преподают курс вместе с ними и еще с некоторыми дополнениями. Курс вводный, для первокурсников. Самые основы.
  • 0
    несколько месяцев назад читал подобную статью-мотиватор для быстрого старта в этом же направлении.
  • +3
    Сколько я уже повидал ребят, которые говорят "какой-то язык программирования? Да я за 2 дня его выучил...", а потом за этими отличными-ребятами приходится всё заново переписывать…
  • 0
    Вы научитесь программировать когда вы не просто научитесь клепать код, а когда его почувствуете. Что-то мне подсказывает что вы вряд ли умеете строит архитектуру на основе шаблонов проектирования…

    Вы научились писать и собирать код — это не «программировать».
  • +2
    Интересно, получится ли обойтись без «той самой картинки».
  • +17
    • –4
      Длинновато, но забавно :)
      • +5
        Классика же.
    • +1
      True story. Я по этой книге учил C++. Книгу первый раз я прочитал, не отрываясь, за 2 дня. Остальные несколько лет ушли на понимание того, как C++ правильно использовать. Причём, даже после нескольких лет изучения мне как минимум два раза попадались книги, взрывающие мозг — Jeff Alger/«C++ for real programmers» и Andrei Alexandrescu/«C++ modern design». Так что за 21 день можно изучить разве что синтаксис.
      • +1
        Имхо, можно научиться программировать за «21 день». Другое дело, что чтобы научиться программировать правильно жизни не хватит.
  • +8
    Я вот считаю, что это слово «научиться», чисто лингвистически-логически не подходит к программированию. Программирование — процесс, а не цель. Можно учиться программировать, т.е. можно и слово то само «учиться» опустить, смысл тот же. Нельзя же сказать, что я научился думать… Можно сказать, что я теперь думаю более структурированно и т.п.
    Но негатива к статье тоже не испытываю, просто так сложилась практика наименования статей и книг по этой тематике.
    Я сам не программист, но потихоньку начинаю осваивать синтаксис. Такие статьи помогают с подбором материала. Но лично мне, как я уже понял, гораздо полезнее было бы поочитать статью: «Как решить судоку с помощью программирования на python, без опыта программирования за 8 недель» — вот тут и цель и процесс :)
    • +2
      Считайте, что «научиться программировать» значит «научиться использовать процесс программирования для решения конкретных задач». Ну как «научиться водить машину» значит «научиться использовать процесс вождения машины для перемещения людей и грузов».
      • –1
        Боюсь, что по-достоинству оценить Ваш комментарий я смогу только после полного осмысления принципов ООП :)
  • 0
    Таких «программистов» у нас пол-страны, ничего удивительного.
    • 0
      Судя по собеседованиям процентов 90 =)
  • 0
    A little knowledge is a dangerous thing!
    Alexander Pope (1688 — 1744)
  • +6
    Автор в конце подводит итог «Вот и все. 8 недель (или меньше) и вы ушли от ничего не зная о разработке программного обеспечения до рабочего прототипа. Не так уж и сложно, так ведь?»
    Где слова, что он стал программистом? Зачем, все эти попытки унизить его достижение? Ну да, вы программисты, вы учились годами и годами набирались опыта. Теперь нужно гнобить всех новичков?
    • +2
      Да :)
      • 0
        Мастер Йода, вам можно :)
    • 0
      Эти слова — в заголовке статьи. Странно, что вы их не заметили, несмотря на относительно крупный шрифт.
      • +1
        Извините за википедию, но все же.
        Программи́рование — в обычном понимании, это процесс создания компьютерных программ.
        В узком смысле (так называемое кодирование) под программированием понимается написание инструкций — программ — на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи).
        Этого достаточно? Тем более оригинал именно так и звучит — How I Taught Myself to Code in 8 Weeks
      • +1
        Научился программировать != стал профессиональным программистом.
  • 0
    Спасибо за ссылки на онлайн курсы.
    Я на codecademy прошел 58% питоньего курса и застрял из за бага, который они не исправляют (зато добавили к названию курса бирочку «Beta»).
    Мне, как начинающему, сейчас не хватает знания алгоритмов и опыта практической реализации задуманного, а синтаксис можно всегда посмотреть в многочисленных книгах.
    • +1
      Учите алгоритмы, чем раньше — тем лучше.
      На Coursera.org как раз сейчас Роберт Седжвик (известный специалист в области алгоритмов, выпустивший довольно популярную книгу) читает курс.
  • –3
    Не могу взять в толк одного: почему те, кто пробежались галопом по европам внезапно решают научить глупых людей истине, которую они познали внезапно, а те, кто собаку съел на своем деле и являются доками, на вопросы новичков все больше хмурятся и молчат?
  • –2
    Ну программирование не ограничивается одним лишь Python-ом. Советовал бы погонять C для начала, со всеми его указателями и прочими фишками которые позволяют отстрелить ноги и руки. Чтобы прочувствовать что-ли…
  • +1
    А я считаю, что автор молодец :-) В сравнении со многими новичками, которые пытаются безсистемно чему-то научиться, автор поставил четкую цель и выработал методологию.
  • +2
    Вполне себе хорошая подборка уроков и задан нормальный темп для сроков обучения.
    Многие тут пишут мол выучил язык не значит что стал программистом…
    А что если он уже программист на другом языке и просто решил изучить python и до кучи django?
    Кто-то пишет про профессионалов которые все знают, умеют, предвидят, а разве эти профессионалы не могли выучить python за 8 недель до того как стать профессионалами и получили драгоценный опыт итд и стали этими самыми профессионалами?
    Мне кажется вполне себе все хорошо сделано. Поставлена цель, хорошо подобраны уроки итд,.
    Я бы если только сейчас с нуля(не зная вообще никаких языков) начинал учится, то добавил бы кучу уроков по TDD. Может что-нить типа этого раз уж про django речь.
  • +1
    В Codecademy прошел 100% уроков по питону и никому не рекомендую, даже новичкам.
    Там сейчас куча багов и курс рассчитан на новичков, которые не знают что такое if, while.
    В задания нет даже циклов!

    Намного продуктивней запустить питон в консольном режиме и делать примеры из книги
    www.amazon.com/Quick-Python-Book-Second-Edition/dp/193518220X/ref=sr_1_1?ie=UTF8&qid=1345739570&sr=8-1&keywords=The+Quick+Python+Book
    После php питон просто магия
  • –2
    Спрашиваю не для себя: а что бы вы порекомендовали плохо понимающему английский человеку, желающему освоить Java самостоятельно хотя бы на уровне быдлокодера? Ну, помимо убийства о стену.
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Окей, спасибо. Беда в том, что у меня аж три друга, которые хотели бы научиться (из них, правда, только у одного проблемы с английским), и как-то ни один из них не берётся самостоятельно за дело, а мне их координировать несколько влом, потому как сам я учиться не собираюсь.
    • +3
      Учить английский, это без вариантов или не связываться с IT. Сам очень долго пытался заниматься IT без английского ибо у меня дисграфия поэтому все языки даются очень тяжело, в пришел к выводу что нужно колоться, жрать кактус, но учить инглишь без этого некуда, в процессе понимаю насколько все теперь легче воспринимается с хоть какимто знанием языка.

      Без английского можно заниматься математикой, моделированием и т.д. но не IT.
  • –1
    нельзя так просто взять, и самостоятельно научиться программировать за 8 недель
    • НЛО прилетело и опубликовало эту надпись здесь
  • НЛО прилетело и опубликовало эту надпись здесь
    • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    coursera хороший ресурс

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