• Как лечится кризис начинающего программиста?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    ММмммммм, вы определили для себя конкретную цель?
    Вы просто хотите научиться программировать или хотите научиться программировать для работы и карьеры, зарабатывания денег и решения задач?
    Какова ваша главная мотивация? От этого то все и зависит! Если просто для себя - это все быстро проходит, если нету жуткострашного интереса.
    Но и он должен быть чем-то все равно постоянно подпитан и подкреплен, хотя бы любопытством: " а что будет, если я сделаю вот так?"
    Если же у вас мотив научиться программировать для зарабатывания на жизнь, развития и построения своей карьеры в этом деле, то одной книги вам явно мало. Тем более Шилдта, тем более только по Си. Накачайте или купите или возьмите популярные книги по программированию, основам информатики, основам математики и алгебры, постарайтесь разобраться во всем, прорабатывайте каждый алгоритм, его решение. Пробуйте разные книги, каждую главу, теорию, подкрепляйте практикой.
    Придумывайте себе задачи для автоматизации, для программирования, для решения. Пытайтесь решить. Ставте перед собой сложные и нерешаемые задачи, но которые хотелось бы решить. Ищите ответы, в интернете, в книгах, в форумах. В сложностях рождается истина познания, которая хорошо усваивается и главное запоминается. В этом и будет ваша ценность учебы программированию, а не просто теория. Лично сам сталкивался, теория быстро забывается. И раз по одной книге не получается либо скучно, попробуйте по другой. По языку программирования Си и его диалектам и прообразам за всю историю насобирал кучу книг, как в электронном так и в бумажном виде. Комбинируя их, сочетая с блогами профессиональных программистов, используя и обозревая чужие исходники с гитхаба, читая профессиональные журналы, идеи, статьи, видеоконференции вы будете подкреплены достаточным багажом интереса и стремления все это охватить. И не забывайте про математику, теорию алгоритмов, структуры данных, статистику, теорию вероятностей, алгебру, любите и цените, изучайте и повторяйте основополагающие вещи. В мире программирования они встречаются часто.
    Сжимайте всю эту солянку воедино и будет хорошая основа для обучения и понимания, привыкания, осваивания профессии программист.
    Кризис начинающего программиста лечиться еще большим программированием и постановкой все новых и новых СЛОЖНЫХ задач и проблем, в решении которых ваше будущее!
    Ответ написан
    Комментировать
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

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

    Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
    Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.

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

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий
  • Хочу научиться программированию. Что изучить??

    Taekun
    @Taekun
    asm, С++, C#, Java, Python, Dart,...... все что угодно. Было бы желание. Но как сказано выше: ставь перед собой задачи! Мой пример (когда учился: сделал себе музыкальный плеер, видео плеер, файловый менеджер, и т.д. вообщем все что хотел то и делал.) не бойся создать очередной велосипед, бойся ничего не сделать!
    Ответ написан
    Комментировать
  • Хочу научиться программированию. Что изучить??

    Tyranron
    @Tyranron
    Без практики ничего не изучите. Ставьте себе реальные задачи и пытайтесь их сделать. Всё. Всё остальное приложится со временем.
    Программирование - достаточно широкое понятие. Ваша позиция не сильно отличается от позиции "хочу понять физику". Что конкретно Вы хотите понять? Термодинамику, квантовую физику, или общую методику постановки экспериментов?
    Так и здесь. Вам нужно определиться чем бы Вы хотели заниматься как программист. Возможно, написать игру? Возможно, программировать микроконтроллеры? Или высоконагруженные системы на серверах? Или...?
    Когда ответите для себя на этот вопрос, хотя бы примерно, сразу же появится набор языков которые можно изучать, чтобы применять в этой области.
    Дальше - ставите себе задачу: реализовать такой-то проект в этой сфере с таким то функционалом. И начинаете делать, попутно узнавая у Google и в рекомендованных книгах как это делать и как это сделать лучше. Главное - дожать свой мелкий проект до конца. Во время реализации Вы как минимум изучите все базовые знания в выбранной области.
    Сделали - хорошо. Смотрим где у нас пробелы, чего недопонимаем, и исходя из этой информации ставим себе следующее задание, более сложное. И опять - дожать до конца.
    И так ступенька за ступенькой Вы освоите всё что пожелаете. И ни в коем случае не надо бояться, не маленькие же в самом деле. В голове ничего не перемешается, если Вы сядете и добросовестно всё для себя систематизируете, изучите и разложите по полочкам, и главное - попытаетесь применить.

    Также, помимо выбранной области, есть общие знания, которыми желательно владеть каждому программисту. Они относятся к алгоритмике, структурам данных, проектированию ПО, написанию вменяемого кода и другим аспектам. Потому параллельно всегда нужно повышать свой общеобразовательный уровень за чтением книг об высоких материях и абстрактных вещах (а потом пытаться их применять на практике).
    Все эти книги легко гугляться и можно найти в предыдущих ответах на данном ресурсе (Совершенный код, книга банды четырех и другие...).
    Дополнительно рекомендуется читать блоги/статьи умных людей. Это всё тоже гуглится в зависимости от интересов.
    Ну и практические примеры кода всегда можно черпать из открытых исходников различных проектов, github Вам в помощь.
    Главное - постоянно что-то программировать (чтобы закреплять новые знания), не бояться экспериментировать, никогда не останавливаться в развитии и двигаться вперед.
    Ответ написан
    Комментировать
  • Какие книги читать и изучать, чтобы стать настоящим программистом, а не кодером?

    @veitmen
    Добрый день.

    К сожалению нет "серебряной" книги. Нет четкого пути.

    Обязательно почитайте статью, с хабра, которую Вам скинули. И пропустите все через себя. Советы хороши, но Вы должны понимать, что все люди уникальны и путь становления у всех разный. Также все зависит от того, кем Вы хотите стать. Например я, как человек разрабатывающий Enterprise приложения, не очень любит "олимпиадников". Но это я, у других людей свое мнение.

    Стать хорошим программистом можно разными путями. Почитайте главу про личные качества программиста из книги "Совершенный код" Макконела. Сравните себя с описанием. Очень интересно. :)

    Быдлокодер - перестает быть быдлокодером, лишь тогда, когда начинает понимать каждую строчку кода, знает что скрыто за каждым вызовом любой функции. После этого, человек начинает понимать что хорошо, что плохо. Это только опыт. Со временем Вы начнете отличать хороший код от плохого. Просто Вы будете знать что если писать так, то будет "бобо" потом. :) Конечно можно и нужно читать книги. Если Вы хотите писать красивый код, то читаете "Совершенный код" Макконела и "Рефакторинг" Фаулера. Этого достаточно для понимания того, какой код хороший, какой плохой. Но это ничего не даст, пока сами не увидите. :) Для проектирования систем тоже нужно читать книги, но в первую очередь смотреть на решения. Разбираться почему сделали так, а не иначе. Почему в этом приложении так, а другом иначе? Как лучше? Когда именно так лучше? И т.д. Изучайте и разбирайтесь. Пробуйте использовать эти решения в своих приложениях.

    Советы в стиле делай то, что тебе нравится правильные. Т.к. именно делая то, что Вам нравится, Вы будете искать пути улучшения этого.

    Ищите более опытных товарищей. Это самое-самое главное. Без наставников очень сложно. НО выбирайте с умом, а то потом будете академическим "быдлокодером". :)

    Найдите работу.

    Не заморачивайтесь. Если Вам нравится программировать, то просто читайте и пишите код. Вы и так станете хорошим проггером. Не бойтесь критики, особенно от самых злых и беспощадных критиков. Приветствуйте любые советы по улучшению. Но никогда не верьте на слово. :) Все перепроверяйте. "Быдлокодеры" есть и они хотят утянуть всех на свою сторону, что-бы не выделяться. :) :)
    Ответ написан
    1 комментарий
  • Какие книги читать и изучать, чтобы стать настоящим программистом, а не кодером?

    JSinga
    @JSinga
    основная проблема в том, что вы, скорее всего, особо и не кодили, а уже ищете книги которые сделают ваш код "батьковским".
    Не на то отвлекаетесь.
    Сколько вы набрали рейтинга в TopCoder, CodeForce?
    В скольких проектах поучаствовали на GitHub?
    Почему вы решили что вы достаточно покодили?

    Хотите читать книги и мечтать что код станет шикарен сам собой?
    http://пиши-код-блять.рф/
    Ответ написан
    2 комментария
  • Чем хорош Ruby?

    @Masterme
    Это как слепому объяснить, чем радуга лучше полутени.
    Как вы хотите чтобы вам это объяснили? Привели примеры из жизни, где питон берёт в рот, а руби справляется на отличненько? Такие примеры, конечно, есть, например, лямбды, но вы всё равно не въедете, если до сих пор не поняли, что такое семантика языка и почему она важна. Вы могли взять питон, взять руби, изучить каждый из них пару недель и сделать выводы. Вместо этого вы ждёте пока вам в мозг положат готовое решение. Этого не произойдет. Вам скорее хуй в рот положат, так же как если бы вы были слепы - вам не стали бы объяснять разницу между радугой и полутенью, а дали бы под дых и отобрали бы мелочь.
    Вы, тупицы, думаете, что познание языков программирования - это нечто внешнее, что можно повторить, сымитировать. Вам сказали - вы повторили - и вроде как знаете тот или иной ЯП. В действительности же, познание языков программирования - это большая внутренняя работа, которую человек проделывает с абстракциями в своей голове. И только если человек способен к абстрактному мышлению - только тогда он, помножив эту способность на знание языков, может понять разницу между ними. Для остальных порог вхождения высок, и, честно говоря, я этому рад.
    Ответ написан
    9 комментариев
  • Как правильно учить Javascript?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Вы наверное слышали, что каждый уважающий себя программист обязан написать несколько велосипедов? И JavaScript-программисты тоже так делают и еще как! Так вот в этом нет ничего плохого, это отличное самообучение.

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

    Не пытайтесь брать сразу сложные вещи, начинайте с малого. Как заметили выше, не смотрите пока что на очень сложные книжки, их читать сейчас почти бесполезно.
    Ответ написан
    6 комментариев
  • Самые странные вопросы на собеседовании, которые вам задавали?

    int22h
    @int22h
    — Спроектируйте мусорный бак для Ирака (при условии что там военное положение).

    В самом начале карьеры проходил собеседование в it-отдел, компания была по профилю не айтишная, но отчасти занимались разработкой различных проектов. Общаясь с начальником it-отдела понял что плохое место для старта.
    Ответ написан
    2 комментария