Учитесь программировать
Прежде чем Вы начнете
В программировании одну и ту же вещь можно сделать по-разному.
Попытка, еще попытка, ошибка, удача... Отвергаем одно решение в пользу другого.
Рано или поздно мы захотим вернуться назад или использовать что-то из ранее отвергнутого и поймем, что можем лишь смутно вспомнить, что, когда, как было раньше сделано. Конечно если мы не используем контроль версий.
Если Вы уже используете git, дальнейшее можете пропустить.
Если Вы еще не используете git, начните прямо сейчас.
Я не могу сказать, что git - наилучшая система контроля версий для любого случая. Моей первой такой системой был ClearCase, и теперь с git мне не хватает ClearCase-овских удобств. Я ненавижу git, агрессивно портящий мои файлы в бесплодной попытке соединить то, что он соединять не умеет...
Но если Вы только начинаете - начинайте с git.
Он одинаково хорош для малого и огромного. Вы можете начать использовать его в несколько минут и совершенствоваться в процессе использования.
Вы можете использовать его для себя, даже локально, или завести бесплатного пользователя в одной из компаний, предоставляющих git-хостинг.
GitHub - крупнейшая из них с большим сообществом пользователей и средствами обучения.
GitLab ориентирована прежде всего на корпоративных клиентов, но и она предоставляет бесплатные аккаунты.
Есть и другие провайдеры хостинга удаленных git-репозиториев.
Git это распределенная система контроля версий.
Это значит, что каждая локальная копия содержит репозиторий целиком, обновляемый всякий раз, как Вы делаете pull.
Если возникает проблема с репозиторием на сервере, его можно восстановить из наиболее свежей локальной копии.
Контроль версий приложим к любому типу файлов. Хотя большинство инструментов для сравнения и слияния файлов ( Meld нравится мне больше всех ) ориентированы на текст и имеют дополнительные возможности для сравнения кода, но есть такие инструменты и для сравнения изображений и других типов файлов.
Контроль версий позволяет Вам свободно пробовать новые идеи и сохранять все свои результаты легко доступными для дальнейшего использования,
независимо от того, какие из них Вы захотите включить в конкретную версию конкретного продукта.
Вы всегда можете передумать и вернуть любой файл, любое число файлов или даже весь проект к любой из его предыдущих версий.
Вам легко увидеть, что, кем и когда было изменено.
Думаю, я уже привела достаточно оснований начать использовать git.
Его даже можно построить из исходного кода: git - строю из исходника на CentOS 6
Любое целенаправленное действие начинается с обдумывания.
Обдумывая, программист движется от что к как.
Да, я знаю про 5W1H.
Все эти зачем, кто,
что, когда и где
легко превращаются в Что:
Что мой код должен делать?
После этого можно начинать думать, как написать его 😉
Берем это большое Что и делим его.
Деление должно быть естественным, как вышелушивание горошин из боба.

Горошинами может быть все, что угодно: объекты, функции etc., но лучше, если горошины из одного боба будут одного типа.
Горошины в бобах, бобы в мешках, мешки в ...
Мы делим и делим до тех пор, пока что превращается в как.
К примеру, если нужно читать из файла, следующим вопросом будет "Как читать из файла?"
Шаг стал достаточно маленьким, чтобы сделать его без дальнейшего деления.
Когда все разделено и реализовано шаг за шагом, полезно посмотреть на своё что еще раз и попытаться разделить его снова как-нибудь совсем иначе и все же логично и естественно. Попытайтесь делать это по крайней мере пока учитесь и есть время упражняться...
- Мне известно 3 основных способа абстрактного деления задачи:
- Структуры и процедуры - чтобы упорядочить помещаем данные в структуры
и обрабатываем их с помощью процедур.
Как, например, простейший клиентский JavaScript манипулирует данными DOM. - Агенты - объединяем струкруты данных с процедурами в объекты, выполняющие работу им одним известным способом.
- Трубопровод - у нас есть исходные данные и мы превращаем их в интересующую нас информацию, пользуясь исключительно этими данными и неким набором правил преобразования.
Эти 3 способа называют процедурным, объектно-ориентированным и функциональным
программированием.
Даже языки программирования делят на процедурные, объектно-ориентированные и функциональные, хотя
и очевидно, что хороший язык программирования общего назначения должен поддерживать все 3 стиля, позволяя программисту выбрать
наиболее подходящий для конкретной задачи.
Делая свои мелкие проекты, я записываю свои мысли в разделе "От ЧТО к КАК".
Чтобы научиться программировать, нужно программировать
Язык программирования всего лишь язык.
Когда Вы учитесь писать, Вы:
- Копируете. Не злоупотребляйте копи-пейстом. Перепишите копируемое.
- Пишите диктанты. Не стоит слепо выполнять туториалы. Немного измените код и посмотрите, что получится.
- Пишите изложения. Встретили описание алгоритма или псевдокод - напишите код и протестируйте его.
Я поместила некоторые свои примеры в "Дайджесте". - После всего вышеизложенного Вы готовы приступить к собственным сочинениям.
Желаю Вам удовольствия от программирования!