• Как побороть боязнь чистого листа?

    @larionov_n
    1) Начните с простого изучения языка на CodeAcademy.com. Java - слишком сильно завязан на ООП. Выбирайте - Python, он проще для начала. Пройдите все задания на академии.
    2) Изучите мат.часть и принцип работы встроенных в язык базовых функций и конструкций (Идеально желательно).
    3) Попробуйте сфокусировать свое мышление не на результат (Готовая программа, игра, редактор), а на последовательность действий с помощью которых вы напишите одну функцию (Но она будет идеально выполнять свою единственную задачу).
    4) Необходимо понимать, что у нас есть данные и методы работы с данными. Для этого вам нужно изучить структуры данных и лучшие практики по работе с ними. (В помощь школьный PASCAL - Олимпиадные задачи, к примеру реализация алгоритма быстрого поиска, найти меньший элемент, наибольший). - Советую на это потратить больше всего сил. При реализации какого либо алгоритма, советую на бумажке подставлять значения вместо переменных и самому его проигрывать в голове.
    5) Изучите основные алгоритмы - Только после того как вы будете готовы работать со структурами данных и будете уверенны в знании выбранного языка. Советую перед этим прочитать книги по множествам, вспомнить базовую алгебру, четко самому вывести понятие конечной суммы в математике, логарифма. - Как минимум. Начинайте читать Вирта. (Это тяжело но помогает научиться думать как следует).
    6) Читайте SourceCode, это самый интересный и самый полезный вариант для получения представления о структуре программ. С библиотек не советую начинать. Когда будет сами уже писать маленькие программы без нужды заходить в гугл или stackoverflow. Можете переходить на библиотеки. Зарегистрироваться в GitHub и читать открытый код. Когда поймете, что это помогло. Можете стать контрибутором одной из любимых библиотек. (Любой работодатель это ценит).
    7) ООП - После всех пунктов, можете почитать Буча и попробовать труды Банды четырех. Шаблоны проектирования, Мартин Фаулер (Рефакторинг, Шаблоны корпоративных приложений).
    8) БД (Проектирование, выборки, нормализация, SQL язык).
    9) Полет вниз (Переходите на C, потом на C++). Реализуете уже написанные map, reduce, изучаете более подробно структуры данных, алгоритмы, понимаете указатели, работаете с памятью, высчитываете эффективность алгоритмов. Напишите большую программу на C/C++ - которая будет выполнять 20 разных функций (Смотреть API вконтакте, выводить в окно информацию с АПИ, реагировать на кнопки и прочее). Можете попробовать GameDev.
    10) Функциональное программирование.
    11) Параллельное программирование.
    12) Системное программирование (Unix, напишите свой интерпретатор, почитайте книгу драконов, посмотрите как работают различные компиляторы с вашим кодом).
    13) Завалите все кто вас обидел в этом посте.

    Удачи!
    Ответ написан
    1 комментарий