• Как распределить время при обучении программированию?

    @suslik2015
    Современное прикладное и веб программирование низового уровня - типичное рутинное ремесло. И как в любом ремесле самое ценное -опыт. В своей работе программист использует большое количество инструментов - ide, редакторы, дебагеры, сборщики, svn и т.д. Программисту нужны навыки чтения кода, юнит тестирования, использования актуальных фреймворков и api, знания протоколов, форматов хранения и передачи данных, конвенций оформления и документирования кода.
    Получить опыт и развить навыки можно только одним путем - написание кода. Идеально участие в опенсорс проектах или что-то свое. Сначала будет говнокод - это факт. Clean code, по терминологии упоминаемого вами Мартина Р. , приходит с опытом работы в проектах, в постоянном сравнении и оптимизации того или иного кода, тех или иных практик.
    Ответ написан
    Комментировать
  • Как распределить время при обучении программированию?

    Jeiwan
    @Jeiwan
    Никто вам точно не ответит. Никто не знает ваших обстоятельств, способностей, желания учиться. Никто не знает насколько глубоко вы будете изучать эти темы и насколько тщательно прорабатывать их. Дать точные сроки вам смогут, только если вы будете следовать какой-то отработанной учебной программе. И то даже после таких программ люди выходят с разным уровнем знаний и умений. Все зависит от вас. Да и не нужно знать все эти темы для того, чтобы начать работать.
    Главная ваша проблема (и проблема других таких же людей, которые решили научиться программировать) заключается в том, что вы почему-то считаете, что сможете обучиться программированию по книгам. Прочитал книжки и стал программистом! Это обманчивый путь, так как программирование — это чистая практика. Теория тут нужна только тогда, когда нужно решить какую-то практическую трудность. Чтобы читать книжки по алгоритмам, ООП и базам данных, нужен уже какой-то опыт, иначе всё, что там написано, пройдет мимо и забудется.
    Еще часто бывает, что задачи, с которыми сталкиваешься, не описаны в книжках, которые ты прочитал или хотел бы прочитать. Довольно часто решение задачи находится в интернете, а не в книгах. Это я к тому, что нужно начинать с практики и прорабатывать теорию под конкретные задачи. Вот вы написали что-то, вот застряли в каком-то моменте с БД, не знаете, как правильно сделать. Ищете в интернете или в книге, как решается эта проблема и решаете её. В итоге получаете и знание, и опыт, который это знание закрепляет.
    Если вы знаете, куда хотите пойти работать, узнайте, какие там задачи решают и цельтесь сразу туда: составьте себе список таких задач и попытайтесь решить их самостоятельно. И заодно сузите теоретический минимум. Умение решать конкретные задачи намного важнее горы теоретических знаний.
    Ответ написан
    2 комментария
  • Как распределить время при обучении программированию?

    @danSamara
    Мой ответ будет несколько груб и не типичен, однако: "Станьте говнокодером!"
    Я не шучу - берите реальные задачи и решайте их как можете - по наитию, по кривым советам из гугла и stackoverflow, но главное - делайте законченные решения, получайте результат который работает.
    Любую задачу сначала решайте сами - нужно сделать сортировку - пишите алгоритм и радуйтесь, что он работает. А уже потом - читайте как надо сделать, и только после этого (если почувствуете потребность!) - читайте теорию.
    Все книги что вы написали безусловно волшебны и необходимы для отличного программиста, однако без практики они - пыль, которая развеется спустя неделю после прочтения. Поверьте мне, я их все читал :)
    Кстати Кнута я бы вычеркнул без раздумий - для его чтения и понимания нужен очень хороший мат-базис и опыт в программировании. Если случиться, что вы будете писать оптимизированные библиотеки для обработки данных на С - тогда и начинайте его читать, очень пригодится, отвечаю )
    Пример обучения:
    1. Ставим задачу. Пример - написать приложение, которое выводит топ-10 вопросов на Тостере.
    2. Разбиваем задачу на проблемы которые надо решить. Пример - развернуть рабочее окружение, понять как сделать "Hi world", как работать с сетью, как парсить HTML
    3. Решаем проблемы. В лоб. Задание - на скорость, всё должно быть решено в кратчайшие скроки. Для каждой проблемы используем любое решение которое попалось под руку. Буквально - первое, это важно! То есть реально ковнокодим, забивая на всё - на красоту кода, на оформление, на скорость, лишь бы работало! Девиз этого этапа - херак, херак и в продакшен! Результат этапа - рабочее приложение.
    4. Делаем поверхностный анализ. Задача решена? Есть ли косяки которые уже не нравятся? Как их можно решить, исходя из минимального опыта? Локализуем проблемные участки исходя из собственных взглядов. Результат этапа - опыт самостоятельного анализа кода.
    5. Делаем глубокий анализ. Пытаемся для каждой задачи подобрать лучшее решение из тех что есть. Читаем теорию о том, как надо делать на самом деле. Изучаем и внедряем паттерны, пытаемся сделать код, который можно переносить в другой проект. Важно не менять условия задачи, вроде "а можно же ещё вывести ответы на вопросы". Не можно, задача должна оставаться прежней. Результат этапа - хороший код и выявленные пробелы в знаниях.
    6. Отдыхаем, читая теорию в рамках решённых задача и около них. Результат - теория, подкреплённая практикой.
    7. GOTO 1.
    Ответ написан
    2 комментария
  • План обучения Python и дальнейшие перспективы. Кто подскажет?

    un1t
    @un1t
    4. Если хочешь заняться веб разработкой, желательно знать HTML, CSS, JavaScript. Основы HTML, CSS можно выучить за пару дней, а дальше уже по желанию, это желательное, но не обязательное. Я знаю программистов у которых очень плохо с версткой, хотя какие-то основые они конечно знают.
    Что касается Джанги, если речь о веб разработке, то да конечно учи Джангу, она самая востребованная.
    Еще желательно знать git, если будет время изучи, хотя для джуниора думаю можно это уже в процессе работы выучить. И еще тебе понадобиться знать реляционную базу данных MySQL или Postgres.

    6. Сделай практическую задачу напиши свой сайт, блог, интернет магазин, форум, мини аналог твитера, инстаграмма или чего угодно. Постарайся приблизить задачу к практике, желательно чтобы самому было интересно.
    Ответ написан
    5 комментариев
  • Какую книгу выбрать для изучения Python?

    GreatBOND
    @GreatBOND
    Начинающий программист
    Я учу по Доусону и могу сказать одно:"книга просто класс!".
    Ответ написан
    Комментировать
  • Какую книгу выбрать для изучения Python?

    Gabs
    @Gabs
    Лутца прочитал после курса на codeacademy, много он мне не дал. Вообще читать книги это не самый короткий путь к программированию, лучше практикуйтесь. Постов типа "Как научиться писать на питон?" сотни, один из них мой и везде выдвигается одна идея - практика, практика, практика. Минимум чтения и больше кода, когда станете более менее опытным программистом, можно уже и книги почитывать параллельно, чтобы повышать качество кода.

    P.S я гуманитарий, программирование меня совсем не занимает, но даже я осилил питон(до джанги дотянул пока что =D), так что мой путь начался с codeacademy, продолжился Лутцем и закончился джанго. Удачи вам
    Ответ написан
    3 комментария
  • Java или .NET - выбор с перспективой (не холивар)?

    gadfi
    @gadfi
    https://gamega.org
    И .NET и Java довольно таки ентерпрайзные вещи, в этом бизнесе спешку не любят ─ раньше чем через 5/10 лет .NET на линукс никто ставить не будет (я не про энтузиастов ) собирать баги новой технологии на своей шкуре когда это может стоить миллионы мертвых енотов никто не хочет.
    По трудоустройству примерно равны, да и сами технологии похожи
    Учите то что больше нравится, если хочется мобильного то java (вход для android сильно ниже java ee за год вполне сможете работать )
    Ответ написан
    3 комментария
  • Java или .NET - выбор с перспективой (не холивар)?

    DVamp1r3
    @DVamp1r3
    Java/PHP программист
    По .NET вакансий больше в СНГ. И для Java, если они есть, то как правило это EE с некоторым количеством смежных технологий (Hybernate и т.д.) и 3+ опыта работа. На сегодняшний день работу в .NET найти проще. Да и средства разработки наиболее удобные. По окладу одинаковые должности имеют примерно одинаковые суммы. Языки схожи, но C# развивается быстрее, Java более консервативна в этом плане (что с определенной точки зрения хорошо).
    За рубежом может ситуация по вакансиям отличается, но среди заказов .NET опять же мелькает чаще. Складывается впечатление, что Java это либо Android (но на высоких окладах требуют много чего другого), либо глубокий-глубокий commerce.
    Ответ написан
    8 комментариев