Проекты для программистов – Идеи для проектов для практики навыков программирования

Содержание

Идеи для проектов для практики навыков программирования

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

Найти число пи до n-й цифры после запятой

Введите число, и программа начнет генерировать число пи. Поставьте определенный предел, до которого программа должна дойти. Реализации:
Python №1, Python №2, Haskell, PHP, JavaScript, Go

Последовательность Фибоначчи

Введите число, и программа сгенерирует последовательность Фибоначчи до этого числа или до N-го числа. Реализации: Python №1, Python №2, Python №3, Bash, Haskell, PHP, JavaScript, Java, Go, Python №4, Python №6

Разложение на произведение простых чисел

Пользователь вводит число и находит, программа раскладывает на произведение простых чисел с их степенями. Реализации: Python №1, Python №2, Haskell, JavaScript, Java, C++, Python №3

Следующее простое число

Программа находит простые числа до тех пор, пока пользователь перестанет спрашивать. Реализации: Python №1, Haskell, JavaScript, Java, Go, Python №2

Калькулятор для ипотеки

Вычислить месячные выплаты фиксированного срока в течение заданных N сроков с заданной процентной ставкой. Реализации: Go

Обмен-возврат

Пользователь вводит стоимость и количество денег. Программа рассчитывает сдачу и количество мелких монет, необходимых для сдачи. Python, Java, Go

Перевод из двоичной системы в десятичную и обратно

Реализации: Python

Калькулятор

Сначала простой с базовыми операциями, потом можно добавить фичи. Реализации: Python, Haskell

Конвертер температуры, валюты, масс и т.д.

Реализации: Python

Будильник

Простые часы, которые играют звук после некоторого числа минут или часов или в определенное время.
Python, Java

Расстояние между городами

Вычисляет расстояние между двумя городами и позволяет пользователю выбрать размерность расстояния. Эта программа может потребовать информацию о городах, такую как долготу и широту. Реализации: Haskell, Python

Валидатор кредитной карты

Берет номер кредитной карты от производителя (Visa, MasterCard, American Express, Discover) и проверяет на правильность номер (разберитесь, как кредитные карты используют контрольную сумму). Реализации: Haskell, Python, Java, Go

Факториал числа

Решить с помощью циклов и отдельно с помощью рекурсии. n! = n * (n-1) * … * 1, 0! = 1. Реализации: Haskell, Python, Go

Алгебра комплексных чисел

Показать сумму, умножение, сопряжение, отрицание в отдельных функциях (разность и деление могут быть сделаны путем использования нескольких уже написанных функций). Реализация: Haskell

Счастливые числа

Счастливое число определено следующим процессом. Начиная с некоторого положительного целого числа, замените число суммой квадратов его цифр и повторяйте процесс до тех пор, пока число не будет равным одному(на чем все и остановится) или оно будет циклиться бесконечно. Если цикл конечен, то изначальное число называется счастливым. Найдите первые 8 счастливых чисел. Реализации: Python, Haskell, Java, C++

Названия чисел

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

По желанию: поддержка отрицательных чисел, нуля, чисел с плавающей запятой Реализации: Haskell, Python, Go, C++

Симуляция подбрасывания монеты

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

Гипотеза Коллатца

Найдите число шагов, за которые получится единица, используя следующий процесс: берём любое натуральное число n больше единицы. Если оно чётное, то делим его на 2, а если нечётное, то умножаем на 3 и прибавляем 1. Реализации:
Python №1, Java, JavaScript, Java №2, Go, Java №3,

Сортировка

Реализовать два типа сортировочных алгоритмов: сортировка слиянием и сортировка простыми обменами. Реализации: C, Python, Go, C++

Задача ближайшей пары

Задача ближайшей пары точек или задача ближайшей пары — это задача вычислительной геометрии: дается n точек в метрическом пространстве, найти пару точек, расстояние между которыми наименьшее. Реализации: Python №1, Python №2

Решето Эратосфена

Решето Эратосфена — один из самых эффективных способов нахождения всех небольших простых чисел (ниже 10 миллионов). Реализации:
Python №1,
JavaScript,
Python №2, Go, Java,
C++

Граф из связей

Напишите программу, которая будет создавать граф или сеть из ряда связей между вершинами. Реализация:
Python

Эйлеров путь

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

Python

Соединенный граф

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

Алгоритм Дейкстры

Напишите программу, которая будет находить короткий путь в графе, используя его вершины. Реализации:
Python

Инвертированный индекс

Инвертированный индекс — это структура данных, используемая для поиска во всем тексте. Дается ряд текстовых файлов, реализуйте программу для создания инвертированного индекса. Также создайте пользовательский интерфейс для поиска, использующего инвертированный индекс, который возвращает список файлов, содержащих выражения или выражения из запроса. Память может содержать поисковой индекс. Реализация: Java

Перевернуть строку

Вводится строка, и программа ее переворачивает и распечатывает на экран. Реализации:
Python №1,
Python №2, Java №1,
Haskell,
Python №3,
Java №2,
Go,
JavaScript №1,
Java №3,
Python №4,
JavaScript №2

Поросячья латынь

Это «тайный язык», представляющий собой зашифрованный английский. Чтобы сделать поросяче-латинское слово из английского, нужно первые согласные звуки в слове переместить в конец и прибавить ay (Например: «banana» превращается в anana-bay). Подробнее о правилах читайте в Википедии. Реализации:

Python №1,
Python №2,
Java №1,
Java №2,
Go,
Java №3,
Python №3

Счетчик гласных

Вводится строка, и программа считает количество гласных в тексте. Для усложнения задачи можно генерировать отчет о том, сколько раз какая гласная была найдена. Реализации:
Python №1,
Python №2,
Haskell,
Java №1,
Go,
Java №2,
Python №3

Проверка на палиндром

Программа проверяет на то, что введенная строка является палиндромом (то есть читается слева направо так же, как и справа налево). Реализации:

Python №1,
Python №2, Java,
Haskell,
Python №3,
Go,
Java

Счетчик слов в строке

Посчитать число слов в строке. Для усложнения задачи считать эти строчки и сгенерировать отчет. Реализации:
Python №1,
Python №2, Java,
Haskell

Текстовый редактор

Приложение в стиле блокнота, способное открыть, редактировать и сохранять текстовые документы. По желанию: добавить подсветку синтаксиса и другие фичи. Реализации:
Python,
С++/QT

Генератор RSS ленты

Дается ссыка на ленту RSS/atom, извлечь все посты и распечатать на экран. Реализация:
Python

Стикеры

Программа, в которой вы можете добавить текстовые напоминания и вывесить их.

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

Проверка показателей индексов фондовой биржи

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

Гостевая книга / журнал

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

По желанию: запустите приложение на такой облачной платформе как Google App Engine или Heroku или любой другой(если возможно).

Гороскоп

Программа проверяет ваш гороскоп на разных сайтах, посвященных этому и соединяет все прогнозы воедино для каждого дня. Реализации:
Python

Шифр Винежера / Вернама / Цезаря

Функции для шифрования и расшифровывания сообщения с данными. Затем отправьте их другу. Реализации:
Python,
Java

Предложения для любого подарка

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

По желанию: предложить место, где их можно приобрести (возможно, ссылку на страницу в сервисе Amazon).

Конвертер из языка разметки Markdown в HTML

Переводит текст, отформатированный с помощью Markdown в файл HTML. Реализовать базовые теги такие, как p, strong, em и так далее. По желанию: реализовать все теги из документации к синтаксису Markdown. Реализация:
Python

Инструмент для обработки запросов в виде регулярных выражений

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

Программа FTP

Программа, осуществляющая пересылку файлов туда и обратно из удаленного веб-сервера. Реализация:

C

Монитор трафика

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

Сканер портов

Введите IP адрес и диапазон портов, в которых программа попробует найти открытые порты на данном компьютеров путем соединения с каждым из ним. При успешном соединении программа должна пометить порт как открытый. Реализации:
Python №1,
Python №2, Python №3,
Python №4

Проверка электронной почты (POP3 / IMAP)

Пользователь вводит различную информацию своего аккаунта, включая веб-сервер и IP, тип протокола (POP3 или IMAP) и приложение будет автоматически проверять почту каждый заданный интервал времени. Реализация:
Java

 

Инструмент поиска для сетевого протокола Whois

Пользователь вводит IP и адрес хоста и программа просматривает информацию через сетевой протокол Whois и выводит регистрационные данные. Реализация:
Python

Проверка сайта в установленное время

Приложение пробует соединиться с сайтом или сервером периодически с заданным интервалом или просто через некоторое время и проверяет, есть ли неполадки с подключением. Если сайт или сервер не работают, программа оповестит по электронной почте или вышлет уведомление на экран. Реализация:
Python

Продуктовый инвентарь

Создайте приложение, которое позволяет вести учет инвентаря продуктов. Создайте класс Product, элементами класса будут цена, номер, количество. Затем создайте класс Inventory, ведущий учет различных продуктов и который считает общую стоимость инвентаря. Реализации:
Python №1,
Ruby,
JavaScript,
Go,
Python №2

Система бронирования отелей / авиабилетов

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

Bank Account Manager

Создайте класс Account, который будет абстрактным классом для трех классов CheckingAccount(контокоррентный счет), SavingsAccount (сберегательный вклад) и BusinessAccount (счет, возникающий при создании бизнеса). Управляйте кредитами и дебитами с этих счетов в стиле программы для банкомата. Реализация:
Python

Расписание приема врача

Создайте класс Patient и класс Doctor. Пусть доктор может принять несколько пациентов, установите расписание того, как доктор будет принимать 16 пациентов в течение 8 часового рабочего дня.

Менеджер рецептов

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

Галерея изображений

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

Площадь и периметр фигуры

Создайте абстрактный класс Shape и затем создайте производные классы, такие как бриллиант, прямоугольник, круг, треугольник и так далее. Затем происходит перекрытие имен функций, ищущих площадь и периметр для каждого типа фигуры. Реализации:
Java,
Python

Цветочный магазин с возможностью заказа

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

Создание древа семьи

Напишите класс Person, в котором будет элемент имя, дата рождения и, если есть, смерти. Программа позволяет пользователям создавать классы Person и помещать их в семейное древо. Программа печатает древо на экран. Реализация:
C++

Создание индикатора процесса загрузки

Создайте индикатор состояния для приложений, которые могут отслеживать процесс загрузки. Индикатор состояния должен находиться в отдельной ветке и сообщаться с главной веткой с помощью делегатов. Реализации:
Go

Программа для массового создания эскизов для предварительного просмотра изображений

Обработка изображений может занимать достаточно долгое время. Особенно если изображение большого размера. Создайте программу обработки изображений, которая может взять сотню изображений и сконвертировать их до нужного размера в фоновом режиме. В качестве более сложного задания выделите одну ветку для изменения размера изображения, другую — для массового переименования эскизов и т.д. Реализации:
Java

Индексатор веб-страницы

Создайте приложение, которое соединяется с веб-сайтом, забирает оттуда все ссылки или изображения и сохраняет их в качестве списка. *По желанию: Организуйте проиндексированную информацию, удалите дублирующиеся данные. Залейте результаты в индекс-файл. * Реализации:
Python

Веб-браузер с вкладками

Создайте небольшой веб-браузер, который сможет просматривать материалы сети в разных вкладках, позволяющих просматривать несколько веб-страниц одновременно. Для упрощения задачи не думайте об исполняемом Javascript и другом коде с клиентской стороны.

Доска для рисования онлайн

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

Получить атомное время из интернет-часов

Эта программа будет получить сведения об атомном международном времени из интернета. Используйте любые атомные часы, которые найдёте в поиске Google. Реализации:
Go,
Java

Получить текущие данные о погоде

Получите актуальные погодные данные по почтовому индексу. По желанию: Попробуйте определить местоположение пользователя автоматически. Реализация:
Python

Авто-логин и автоматические действия по таймеру

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

Генератор электронных открыток

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

Система контент-менеджмента

Создайте собственную систему управления контентом (CMS) наподобие Joomla, Drupal, PHP Nuke и т.д. Начните с малого. По желанию: Разрешите добавление модулей/аддонов.

Доска объявлений (Форум)

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

CAPTCHA-генератор

Когда-нибудь видели изображения с цифрами и буквами, которые нужно ввести в форму регистрации на каком-нибудь онлайн-сервисе? Это нужно для фильтрации автоматической регистрации ботами и предотвращения спама. Попробуйте создать собственную капчу для онлайн-форм.

Создание викторины

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

Файловый проводник

Создайте собственный небольшой файловый проводник для Windows. Добавьте ту функциональность, которую вам не хватало в обычном проводнике Windows или в Finder на Mac OS.

Утилита для сортировки Excel/CSV файлов

Читает записи в файле, сортирует их и записывает их обратно в файл. Позволяет выбрать различные варианты сортировки и сортировку по конкретному полю. Реализация:
Python

Создайте Zip-архиватор

Пользователь добавляет файлы из различных директорий, а программа архивирует их в zip-файл. По желанию: применить Примените современные алгоритмы сжатия. Начните с кода Хаффмана. Реализация:
Java

Генератор PDF файлов

Приложение, которое может читать текстовый файл, файл HTML или какой-либо другой файл и генерировать из него PDF. Отлично подходит для онлайн конвертеров, где пользователь загружает файл и программа возвращает PDF файл По желанию: запустить приложение в облачных сервисах, таких как Google App Engine или Heroku, если возможно.

Программа для теггирования Mp3

Изменяет и добавляет ID3v1-теги в MP3-файлы. Можете попробовать добавить обложку альбома в хедер MP3-файла, или другие ID3v2-теги.

Менеджер кода

Ещё одна утилита, которая позволяет программистам сохранить функции, классы и другие элементы кода для последующего использования. Данные организованы по типу элемента или по языку, чтобы программист смог легко найти нужный элемент. По желанию: В качестве дополнительного упражнения попробуйте добавить выделение синтаксических конструкций в зависимости от используемого языка.

Анализатор SQL-запросов

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

Инструмент удалённого соединения с SQL-сервером

Утилита, которая может выполнять запросы на удалённые сервера с локального компьютера посредством сети интернет. Утилита должна воспринимать удалённый хост, имя и пароль пользователя, выполнить запрос и вернуть результаты. Реализация:
Python

Генератор отчётов

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

Планировщик событий и календарь

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

Домашняя бухгалтерия

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

Адресная книга

Содержит контакты, включая номера, адреса электронной почты и небольшие заметки о них. Реализация:
Python

Программа для отслеживания ТВ-серий

Не хотите пропустить любимый сериал? Нет записывающего устройства или хотите найти серию и записать её позднее? Создайте приложение, которое будет осуществлять поиск по сайтам телевизионных передач, определять названия/время/каналы и добавлять их в базу данных. База данных/веб-сайт затем могут посылать вам email-уведомления о начале сериала и о канале трансляции. Реализация:
Python

Система планирования путешествий

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

Слайд-шоу

Создайте приложение, которое показывает картинки в формате слайд-шоу. По желанию: добавьте эффекты, например, различные переходы (в виде звезды, круга, жалюзи и т.д.)

Проигрыватель онлайн-видео

Попробуйте создать собственный проигрыватель онлайн-видеороликов.

Mp3 Плеер

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

Проигрыватель онлайн-музыки

Попробуйте создать собственный проигрыватель онлайн-музыкальных треков. Реализация:
PHP

Приложение для создания ватермарков

Хотите защитить авторские права на некоторые изображения? Добавьте своё лого или текст на изображение, чтобы никто не мог украсть графику с вашего сайта. Создайте программу, накладывающую ватермарк на изображение. *По желанию: Используйте многопоточность для одновременной обработки нескольких изображений. * Реализация:
Python

Черепашья графика

Стандартный проект, в котором вы создаёте плоскость из квадратов 20х20. С помощью различных команд вы управляете черепахой, которая рисует линию на плоскости. Вы можете двигать её вперёд, назад, двигать влево и вправо, поднимать и опускать перо и т.д. Подробную информацию ищите в Google по запросу “черепашья графика”. По желанию: добавьте в программу возможность считывать список команд из файла

Шифр Цезаря

Реализуйте шифр Цезаря, как шифрование, так и дешифрование. Ключом является целое число от 1 до 25. Этот ключ сдвигает буквы алфавита (от A до Z). При шифровании каждая буква алфавита заменяется буквой, находящейся на выбранное количество позиций дальше (алфавит закольцовывается). Таким образом, при использовании ключа 2 “HI” становится “JK”, а при использовании ключа 20 “HI” превращается в “BC”. Это простое моноалфавитное шифрование легко взламывается, поскольку злоумышленник, у которого на руках есть зашифрованное послание, может использовать частотный анализ, или просто попробовать все 25 ключей. Реализации:
Python №1,
Python №2,
Java

Изучаем алгоритмы и структуры данных правильно

Источник: Github

proglib.io

9 учебных проектов для бэкендера / Habr


источник КДПВ

Ранее на Хабре публиковался перевод статьи с Medium’а с подборкой из 8 проектов, которые можно реализовать, изучая новый язык или фреймворк. На мой взгляд, подборка очень неплохая. Проблема в том, что рассчитана она только на фронтендеров и мобильных разработчиков. А я из другого лагеря.

Покопавшись в своих заметках, я собрал для вас подборку идей на тот случай, если чешутся руки сделать что-нибудь своё. Все эти «проекты» уже существуют в том или ином виде, но, иногда интересно написать свой бэкенд-велосипед и проехать на нем по граблям.

1. Движок блога


Да, свой «топ» я решил начать именно с блога. На мой взгляд, это один из простейших вариантов, чтобы изучить тонкости нового ЯП или фреймворка. Посмотрите внимательно на существующие решения и подумайте, что вы бы сделали лучше. Откройте исходники WordPress’а и перечислите, что в нём не так (всё в нем не так…).

Естественно, не стоит пытаться выкатить сразу готовый продукт с кучей фич. Опишите MVP, превратите его в сhecklist и вперёд! Кстати, этот совет относится и ко всем остальным пунктам.

2. IO-игра


картинка взята отсюда

Если вы хотите вникнуть в реактивное программирование, веб-сокеты и вот это всё, а чат писать слишком скучно, можно попробовать реализовать бэкенд для: крестиков-ноликов 15×15, морского боя или, даже, гомоку. Плюс перечисленных игр в том, что клиент к ним можно создать даже с минимальными знаниями JS.

Бонусом придется подумать над алгоритмом валидации игрового поля, что тоже не так просто, как кажется.

3. Парсер формата файла


Это тот случай, когда вы можете сделать что-то действительно полезное для сообщества вашего любимого языка программирования. Посмотрите, с какими файлами (медиа, документы, данные, и т.д.) вы регулярно работаете и сделайте для них библиотеку на вашем ЯП. Только не пишите обёртку над существующим расширением, а изучите спецификацию файла. И руками, по хардкору.

Как пример приведу библиотеку на PHP для работы с 3d-моделями формата STL. Описание этого формата есть в интернете. Но, еще 4 года назад в сети была только одна рабочая библиотека, которая умела возвращать габариты и объем модели. Ее продавали по 10$ за копию. И она пользовалась большим спросом.

Если же придумать что-то новое не получается, стоит попробовать сделать свою реализацию уже существующего. Например, на сколько мне известно, до сих пор нету ни одной библиотеки на PHP, которая переварила бы >1GB XML-файл, не съев всю ОЗУ. Хотя, есть мнение, что stream piping, SPL и немного упорства должны решить эту задачу.

4. Telegram, Skype, Slack любой другой-бот



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

Пусть каждый из них уже кем-то создан. Но, мы ведь с вами хотим научиться чему-то новому и добавить «веса» своему резюме. Не так ли?

5. Движок форума


Плюсы тут те же, что и у первого пункта.
Если вам это кажется банальным и ненужным, почитайте статью о том, как человек написал форум на ассемблере. Зачем? Просто потому что может. Зато теперь он может подтвердить свои знания ссылкой на интересную статью и репозиторий к ней. Это ли не мотивация?

6. Клон 10 Minute Mail

Наверное, всем известен прекрасный сервис 10minutemail. Он позволяет не светить свою почту при регистрации на неизвестных сайтах. Просто получите уникальный email на 10 минут и вводите его везде, не опасаясь навязчивых рассылок.

Если хочется написать что-то небольшое и несложное — это отличный вариант.

7. Генератор изображений с текстом



Очень часто в социальных сетях объявления публикуют в виде скриншота экрана телефона с открытым приложением заметок.
Можно сделать для этих людей сервис для генерации изображений из текста. В гугле я нашел подобное решение, но, на мой взгляд, здесь слишком много лишнего функционала. Достаточно формы для ввода текста и кнопки: «сделать хорошо!».

Кстати, начинающим фронтендерам предлагаю эту задачу для реализации без сервера.

8. Pomodoro



картинка взята отсюда
Метод «Помидора» — техника управления временем, предложенная Франческо Чирилло в конце 1980-х. Техника предполагает разбиение задач на 25-минутные периоды, называемые «помидоры», сопровождаемые короткими перерывами. — Википедия

Если кратко, то 2 часа работы делятся на 4 отрезка («помидора») по 25 минут, с перерывами в 5 минут. Дабы не засекать все вручную, в интернете есть куча приложений «Pomodoro».

И, я знаю, что этот проект можно создать без сервера. Но я предлагаю сделать это ради фана. И вообще, статья для начинающих бэкендеров, так что, логику пишите на сервере. И прикрутите push-уведомления! И Telegram-бота не забудьте!

9. Пишите свой блог


Нет, не движок блога, а именно технический блог. Один из лучших способов закрепить новые знания — попытаться объяснить их другому. Изучите что-то новое и перескажите это максимально простым и понятным вам языком. Это помогает структурировать в голове новые знания. К тому же, ваша статья может оказаться для кого-то полезной.

Вместо заключения


Когда-то я сам искал подобный список. Надеюсь, что хоть кого-то он вдохновит на написание чего-то свежего и своего. Также, буду рад увидеть продолжение списка в комментариях.

habr.com

8 учебных проектов / Edison corporate blog / Habr

«Мастер совершает больше ошибок, чем новичок — попыток»

Предлагаем 8 вариантов проектов, которые можно сделать «по фану», дабы получить реальный опыт разработки.

Проект 1. Клон Trello


Клон Trello от Indrek Lasn .

Что вы освоите:

  • Организация маршрутов обработки запросов (Routing).
  • Drag and drop.
  • Как создавать новые объекты (доски, списки, карточки).
  • Обработка и проверка входных данных.
  • Со стороны клиента: как использовать локальное хранилище, как сохранять данные в локальном хранилище, как читать данные из локального хранилища.
  • Со стороны сервера: как использовать базы данных, как сохранять данных в базе, как читать данные из базы.

Тут пример репозитория, сделанного на React+Redux.

Проект 2. Панель админа



Github Repository.

Простенькое CRUD приложение, идеально подходит для изучения основ. Научимся:

  • Создать пользователей, управлять пользователями.
  • Взаимодействовать с базой данных — создавать, читать, редактировать, удалять пользователей.
  • Проверка ввода и работа с формами.

Проект 3. Трекер криптовалют (нативное мобильное приложение)



Github repository.

На чем угодно: Swift, Objective-C, React Native, Java, Kotlin.

Изучим:

  • Как работают нативные приложения.
  • Как извлекать данные из API.
  • Как работают нативные макеты страниц.
  • Как работать с мобильными симуляторами.

Попробуйте вот это API. Найдете лучше — напишите в комментах.

Если интересно, вот тут туториал.

Проект 4. Настроить собственный конфиг webpack с нуля



Технически, это не приложение, но очень полезная задача, чтобы понять как работает webpack изнутри. Теперь это будет не «черный ящик», а понятный инструмент.

Требования:

  • Компилировать es7 в es5 (основы).
  • Компилировать jsx в js  — или  -  .vue в .js (придется выучить загрузчики)
  • Настроить webpack dev server и hot module reloading. (vue-cli and create-react-app use both)
  • Использовать Heroku, now.sh или Github, научиться развертывать webpack проекты.
  • Настроить свой любимый препроцессор, чтобы компилировать css  —  scss, less, stylus.
  • Изучить как использовать изображения и svgs с webpack.

Тут потрясный ресурс для полных новичков.

Проект 5. Клон Hackernews



Каждый джедай обязан сделать свой собственный Hackernews.

Что вы освоите по дороге:

  • Как взаимодействовать с hackernews API.
  • Как создать одностраничное приложение.
  • Как реализовать такие фичи, как просмотр комментариев, отдельных комментариев, профилей.
  • Организация маршрутов обработки запросов (Routing).

Проект 6. Тудушечка



TodoMVC.

Серьезно? Тудушка? Их же тысячи. Но поверьте, есть причина такой популярности.
Туду-приложение — это отличный способ удостовериться, что понимаешь основы. Попробуйте написать одно приложение на ванильном Javascript и одно на своем любимом фрэймворке.

Научитесь:

  • Создавать новые задачи.
  • Проверять заполнение полей.
  • Фильтровать задачи (завершена, активна, все). Используйте filter и reduce.
  • Понимать основы Javascript.

Проект 7. Сортируемый drag and drop список



Github repository.

Очень полезно, чтобы понять drag and drop api.

Научимся:

  • Drag and drop API
  • Создавать rich UIs

Проект 8. Клон мессенджера (нативное приложение)



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

Что изучим:

  • Web sockets (мгновенные сообщения)
  • Как работают нативные приложения.
  • Как работают шаблоны в нативных приложениях.
  • Организация маршрутов обработки запросов в нативных приложениях.

Этого вам хватит на месяц-другой.

Перевод выполнен при поддержке компании EDISON Software, которая профессионально занимается разработкой приложений и сайтов на PHP для крупных заказчиков, а так же разработкой облачных сервисов и мобильных приложений на Java.

habr.com

6 open-source проектов для практики новичка

Практика в open-source проектах поможет при составлении портфолио для трудоустройства. В статье приведены рекомендации по изучению этой тематики.

Прежде чем вы начнете…

…стоит прослушать эту лекцию. На ней вы узнаете все необходимое, если совсем ничего не знали об этой области IT-сферы. Также есть хорошая серия книг «Архитектура опенсорных приложений», которая расскажет читателю о том, как устроена архитектура огромных приложений, написанных очень опытными разработчиками, и позволит не совершать распространенных ошибок. Более того, в этой книге описаны основные компоненты этих приложений и как они взаимодействуют между собой.


OpenStack – бесплатная open-source платформа для облачных вычислений, в основном развернутая по модели обслуживания Инфраструктура-как-услуга (IaaS). Начало проекту было положено NASA и RackSpace еще в 2010, однако с тех пор к проекту присоединилось более 500 компаний, включая гиганты Кремниевой долины. Чтобы сделать свой вклад в проект, вам достаточно ознакомиться с этой страницей. К каждому из проектов есть подробная документация. Для принятия участия могут потребоваться знания C++, Python и веб-фреймворка Django.

Ava – JavaScript-библиотека для тестирования, работающая быстрее многих своих конкурентов. Её преимущество в том, что она запускает тесты параллельно, что делает её использование особенно выгодным для нагрузочных тестов на поток ввода/вывода. Помимо этого, файлы с тестами запускаются параллельно в отдельных процессах, таким образом, тестирование происходит намного быстрее, чем, к примеру, с использованием библиотеки Mocha. В issues репозитории можно обнаружить задания для начинающих по правки библиотеки.

Если кто не знал, DuckDuckGo – поисковая система, не собирающая информацию о пользователях. Мгновенные ответы — фича, которая позволяет получать ответы без необходимости открывать сайт. Сотни людей успели принять участие в разработке этой фичи, много идей для разработки лежит на этой странице. Также DuckDuckGo предоставляет хорошую документацию и рекомендует новым пользователям создавать шпаргалки для сервиса. Чтобы посмотреть, как выглядят такие шпаргалки, достаточно вбить в поисковик фразу «wordpress cheat sheet». Если у вас возникли трудности, есть канал в Slack и вики-страница в Github-репозитории.

Habitica – приложение для формирования привычек, позволяющее пользователям в игровой форме принимать те или иные жизненные решения, получая «награды» и «наказания». Если вы хотите помочь команде в его разработке, то самое время зайти на их репозиторий в Github и присмотреться к задачам с пометкой «для новичков».

Вне сомнений, Mozilla – одна из лидирующих организаций по количеству open-source проектов. Делать свой вклад в развитие проектов Mozilla может показаться не очень простым на первый взгляд, поскольку сложно найти задачи, помеченные как «для новичков», из-за того, что в целом задач много. К счастью, был создан отдельный сайт, где можно фильтровать задачи в зависимости от своих интересов. Новичку стоит обратить внимание на фильтр simple bugs внизу в секции фильтров!

Pinax – это открытая опенсорсная платформа, сделанная с использованием веб-фреймворка Django. Это экосистема для повторно используемых приложений на Django, тем, шаблонов для нового проекта. В их репозитории на Github в разделе Issues есть задачи для новичков, помеченные first-timers-only. Они аккуратно задокументированы, таким образом, чтобы вы знали, что вам следует делать.

Я хочу еще проектов, что делать?

  • Ищите по меткам в интересующих вас репозиториях. Наверняка там будет какая-нибудь задача в issues, которая помечена как легко решаемая.
  • Зайдите на следующие ресурсы:
    • @yourfirstpr: аккаунт в Твиттере, в котором постоянно добавляются ссылки на задачи из issues для начинающих;
    • OpenHatch: ресурс для связи с разработчиками, нуждающимися в том, чтобы пользователи сделали вклад в развитие их проектов;
    • Up For Grabs: список проектов, в котором указываются задачи, созданные специально для новых контрибьюторов.
    • CodeTriage: выбирайте свои любимые репозитории и будете ежедневно получать е-майл с задачами в issues.
    • Awesome for beginners: репозитории для новичков

 

 

proglib.io

5 идей проектов для практики программирования

Многим нравится писать код для себя, но иногда не хватает идей. Предлагаем 5 вариантов проектов для практики программирования.

GraphQL – это язык описания запросов для клиент-серверных приложений, он позиционируется как альтернатива REST API. Если вам часто приходится обрабатывать массивы данных, на его изучение точно стоит потратить время.

Этот курс поможет освоиться с GraphQL:

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

  • Запросить имя пользователя, обработать (например, развернуть) и вернуть результат.
  • Показывать математические выражения и получать от пользователя решение.

Здесь можно ознакомиться с основами написания приложений для терминала на JavaScript.

Electron позволяет создавать десктопные приложения на основе web-технологий. Вы используете для создания логики и интерфейса привычные инструменты, вроде HTML, CSS и JavaScript, а на выходе получаете программу, которую можно запустить как нативное приложение.

Некоторые известные ПО созданы на основе Electron, среди них Visual Studio Code, Slack и Webtorrent.io.

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

Инстаграм – не самое простое приложение, и воссоздание его архитектуры многому вас научит. Вот некоторые вещи, которые вы постигните в процессе:

  • Создание сложных сеток (попробуйте сделать все только с помощью CSS).
  • Обработка большого количества разнообразных данных от пользователей и API.
  • Создание сложных приложений, уже показавших себя в реальном мире.

D3 расшифровывается как Data-Driven-Documents, и сейчас это одна из самых используемых библиотек для построения графиков.

Попробуйте визуализировать набор данных с помощью D3. Для примера можно взять один из бесплатных датасетов с GitHub.

proglib.io

IT — проект со школьниками: несколько рекомендаций / Habr


За последние 5 лет мне удалось создать десяток учебных проектов вместе со школьниками 8-11 классов в сфере информационных технологий. И вот я решил поделиться своим опытом в этой статье, надеясь на конструктивную беседу по такой актуальной теме. В статье я попытаюсь раскрыть технологию реализации IT — проекта как способа обучения, а также затронуть технические аспекты, которые помогут вашей команде достигнуть результата.

Давайте, в первую очередь, определимся, что же такое проект. Кстати, о проектной деятельности в сфере образования сегодня очень много говорят и пытаются ввести этот метод обучения в образовательный процесс, что я лично крайне поддерживаю. Почему? Да все просто: в сжатые сроки вместе с командой вы создаете продукт, а ваши подопечные одновременно с этим изучают что-то новое.

Вы найдете огромное количество определений понятия «проект», но я попробую дать свое. Проект со школьниками — это некий процесс реализации конечного продукта, направленный на изучение новых инструментов командной работы, создание работающего прототипа или первого варианта продукта, изучение технологий, выходящих за рамки школьной программы.

Ключевыми словами в такой трактовке я считаю “процесс” и “продукт”. Многие проекты, которые я видел, являются исследовательскими, т.е. доказывающими или опровергающими какую-то гипотезу. Результаты таких проектов обычно — презентация и доклад. Многие проекты являются информационными, т.е. направленными на сбор и систематизацию информации об объекте, проблеме, явлении. Результат такого проекта — опять же презентация, доклад, дискуссия.

Я бы хотел, все же, сделать акцент на слове “продукт” и говорить о том, что конечной целью проекта в сфере IT должна быть демонстрация чего-то материального, созданного в процессе реализации проекта. Причем, я ни в коем случае не отрицаю, а наоборот, подчеркиваю важность научно — исследовательских проектов, которые направлены на создание прорывных технологий и разработку новых концепций в сфере информационных технологий. Просто наукой и исследованиями могут заниматься единицы, и, скорее всего, это удел, все-таки, высшего образования.

Идея и продукт


Отнеситесь к выбору темы своего проекта внимательно и тщательно. Зачем тратить впустую ближайшие несколько месяцев, верно? Цели могут быть совершенно разные: улучшить мир, выиграть конкурс, заработать денег, но вся ваша команда должна четко понимать, зачем вы тратите силы и ресурсы, создавая что-то новое.

Еще один неочевидный момент: когда вы создаете что-то осязаемое, гораздо выше вероятность того, что проект будет реализован. Очень часто случается так, что, загоревшись идеей, команда не доводит дело до конца, просто четко не понимая, а что же мы делаем?

Итак, первая мысль пришла в голову, вы с этой мыслью походили и решили, что вот оно! Посмотрите аналоги, сделайте подробный поиск уже существующих решений. Может случиться так, что до вас уже все реализовали. Не отчаивайтесь, если вы не хотите менять тему проекта — сделайте подобное, но по-другому, добавьте функций или измените дизайн. Но лучше, все-таки, создать что-то свое.

Темы проектов могут быть очень разными, и очень большую роль здесь играет наставник. Школьник в силу отсутствия опыта просто может не понимать значимость (или отсутствие таковой) той или иной темы. Школьник может делать что-то только ради процесса, не отдавая отчет в бессмысленности создаваемого. Например, давайте сделаем так, чтобы свет в комнате включался по хлопку ладонями? Интересная идея, но спросите себя, а зачем, кому это будет нужно, если таких решений уже пруд пруди. Ради изучения чего-то нового? Да, такую цель тоже можно достигать проектной деятельностью, но она не самая главная. Главное, на мой взгляд, — научить ребят творить и создавать что-то нужное. Анализировать, аргументировать, убеждать и отстаивать свою точку зрения. Искать варианты улучшения существующего, создавать новое. Людей, которые могут придумывать, не так много, и ценность подобных специалистов возрастает с каждым годом.

Итак, что же может быть продуктом учебного проекта в сфере информационных технологий? Выделим основные очевидные варианты.

Сайт


Это некий интернет — сервис, реализующий что-то новое или дополняющий уже созданную концепцию. Обратите внимание, что вы можете взять уже готовое решение и, не занимаясь плагиатом, а вдохновившись идеей, разработать что-то другое, более совершенное или просто с другим функционалом. Например, можно создать новый сервис для проведения тестирования или анкетирования. Какие технологии изучат ребята? Дизайн сайтов, верстка, программирование. Немало, на самом деле.

Мобильное приложение


Еще интереснее и сложнее, чем сайт. Поле для фантазии не ограничено, причем, всплывает такой интересный момент: вы можете заниматься созданием проекта озеленения территории вашего микрорайона, но оформить результат как мобильное VR — приложение с возможностью “прогуляться” по создаваемой территории для более полного погружения в реализуемую концепцию. Что мы изучаем? Современные тенденции дизайна, объектно — ориентированное программирование. И, конечно, новые инструментальные средства разработки. А заодно и ландшафтный дизайн.

Компьютерная игра


Этот продукт принимается к реализации ребятами без каких-либо лишних объяснений и обычно доводится до логического конца. Игру можно делать для малышей, игру можно делать обучающую. Можно сделать многопользовательскую браузерную игру, можно сделать игру для смартфонов и планшетов. Что изучают ребята? Приемы и методы геймификации, дизайн элементов компьютерной игры, объектно — ориентированное программирование.

Программа


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

Еще один отличный метод — создавать что-то для себя. Вы анализируете, а чего вам не хватает в вашей деятельности или повседневной жизни? Гарантированно такой продукт будет популярным, так как если вы создадите решение, автоматизирующее вашу потребность, найдется круг людей, у кого потребность та же. Например, мне недавно надо было при публикации материалов на сайте добавлять подписи по разным шаблонам. Постоянно форматировать разные подписи — утомительно, вот я и написал плагин под WordPress, позволяющий этот процесс частично автоматизировать. Сделал для себя, но выложу в открытый доступ потом.

Фильм, плакат, журнал, трехмерная визуализация — все это может стать результатом вашего проекта.

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

Формулировка концепции


Придумали идею — запишите ее. Сформулируйте актуальность проекта, цели, которые вы хотите достичь, опишите простыми словами конечный результат вашего проекта, конечный продукт.

Общие папки


Обязательно создайте для своего проекта облачное хранилище с совместным доступом участников. Если это Google Диск или Облако Mail.ru, то создайте общие папки. В одном проекте у нас их было 8: “Модели”, “Текстуры”, “База данных”, “Фоны”, “Картинки”, “Скрипты”, “Настройки”, “Общее”. Можно использовать, наверное, более продвинутые инструменты, например, Битрикс24, я не пробовал. Надо, кстати, обратить на это внимание. Наверняка, есть еще инструменты совместного ведения проектной деятельности.

План реализации


Важный документ, потратьте на него побольше времени. В этом документе вам надо разбить ваш проект на маленькие этапы с описанием результата по окончании каждого. Только так вы дойдете до конца. Разрезав слона, мы сможем его съесть целиком. Школьник должен постоянно ощущать, что время было проведено не зря, что маленькая цель достигнута, скоро будет реализована основная концепция. Такой документ можно назвать план — графиком работ. Причем, когда вы будете его создавать, всплывет масса полезных мелочей, которые надо будет реализовать.

Нарисуйте результат


Все, что есть в голове, должно быть скинуто на бумагу. Делаете программу — рисуйте окна. Делаете сайт — рисуйте страницы. Делаете приложение — рисуйте все views. Делаете игру — рисуйте процесс и графические элементы. На обычных листах обычной ручкой или карандашом. Все зарисовки сохраняйте, ничего не выкидывайте. Схемы, идеи, кнопки, окна, рожицы и палочки — все сохраняйте! Вообще, должна быть общая папка, куда будут складываться все бумажные полезности для проекта.

Назовите команду


Обязательно дайте название своей команде! Это сплотит участников. По возможности, выберите логотип, хотя бы из бесплатных, и создайте лозунг, девиз. Пусть вы будете “IT гуру” или “Кодята”, но название команды даже из двух человек может стать началом целой истории. Обязательно придумайте название вашего конечного продукта, пусть оно будет емким и хлестким. “Газонокосилка 2.0”, “Веб заметки” или “Погода в кармане”. Да, обязательно разделите функции внутри вашей команды: пусть кто-то создает дизайн, а кто-то пишет код, кто-то ищет аналоги и тексты, а кто-то подбирает фотографии или звуковые файлы.

Добавляем экономику


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

Выбираем инструменты


План есть, эскизы есть, теперь самое время выбрать программные средства для реализации проекта. Почитайте, что сегодня используется в реальной разработке, что в тренде, что пригодится участникам проекта потом. Попробуйте различные IDE и редакторы, но не зацикливайтесь на учебной программе, выйдите за ее рамки. Обратите внимание, что многие разработчики идут навстречу образовательным организациям, просите у них бесплатные версии их продуктов. Так делает Autodesk и JetBrains, например. Посоветуйтесь с экспертами. Делайте учебный проект правильными инструментальными средствами.

Версионный контроль


Если будет код, то обязательно создайте репозиторий для версионного контроля. Это сэкономит кучу времени, и ребята приучатся к этой технологии. Как-то я заметил, что переход на систему версионного контроля кода изменило мое отношение к тому, что я пишу. Код стал для меня очень важным и ценным, что ли. Каждое изменение стало более обдуманным. Удаление кода тем более. Более ценным становится и время на разработку. Храните все файлы удаленно и в совместном доступе.

Создаем прототип


Первый самый большой результат проекта должен быть минимально работающим. Т.е. это должно быть что-то запускающееся и выполняющее основные функции, что-то, реализующее основную идею.

Тестируем


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

Доделываем


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

Презентуем


Все готово, отведите время на создание доклада и презентации. Рекомендую придерживаться вот таких разделов в презентации:
  • Введение: рассказываем основные положения, назначение проекта, рассказываем о команде;
  • Актуальность: говорим о том, насколько проект полезен и что достигаем, меняем, улучшаем его реализацией;
  • Цели: тут рассказываем аудитории, а какие же цели были или будут достигнуты реализацией проекта;
  • Задачи: показываем те задачи, которые были выполнены во время работы над проектом;
  • Обзор аналогов и прототипов: показываем уже существующие решения и говорим о том, чем ваше отличается от остальных;
  • Выбор инструментальных средств: в этом разделе презентации обосновываем свой выбор инструментов разработки;
  • Экономическая часть: немного говорим о деньгах, чтобы аудитория оценила степень реализуемости проекта;
  • Целевая аудитория: рассказываем о вашем потребителе;
  • Показываем продукт: тут надо отвести время для демонстрации работы созданного решения;
  • Планы развития: рассказываем о том, чем будем заниматься дальше. Можно планы разбить на несколько очередей.

Все, проект готов!

Шарик-то сдувается


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

Вторая проблема — контроль. Чтобы шарик не сдулся, его надо все время надувать. Я столкнулся с тем, что ребята быстро начинают, но, самое страшное, быстро заканчивают, не доводя дело до конца. Тут без постоянного вмешательства наставника никак, надо напоминать, тянуть за руку, просить результаты. Повторюсь, проект должен быть разделен на малые части, пусть ребята что-то делают дома и присылают результаты или складывают в общий репозиторий.

И третья проблема — что дальше? Создайте сайт проекта, постарайтесь сделать так, чтобы на него обратили внимание, попробуйте доделать проект до конца. Сам, честно говоря, почти все проекты складывал в стол, решая только сиюминутные задачи и не развивая дальше. Вот написал эти строчки и решил к некоторым историям вернуться, может, они выльются во что-то большее.

Проектная деятельность — эффективнейший инструмент изучения нового, помимо уроков. Проект может помочь выявить скрытые таланты у детей. Кто-то научится публично выступать и защищаться, кто-то программировать, кто-то создавать графику, а кто-то станет в дальнейшем менеджером проектов. Побольше нам удачных и интересных проектов!

habr.com

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

Господин начинающий, у Вас извращенный подход к программированию в целом.
Программа — это способ более эффективно решить какую-то задачу… способ достижения какой-то заданной цели с меньшим количеством ресурсов.

Возьмем, как пример, тот же бух.учет на предприятии. Как Вы думаете, почему 1С Бухгалтерия так широко распространилась в РФ и СНГ? Эта программа позволяет бухгалтеру в 2-3 клика мышки сформировать отчет для регулятора(ФНС, ПФР и т.д.), вместо того чтобы человеку сидеть руками искать платежные поручения, вычислять налоги и т.п. Софт просто подтягивает выписку из банка, анализирует ее и выдает готовую для печати бумажку, что экономит бухгалтеру сильно много времени. Расчет заплатанный налогов и отчеты в соц.фонды это вообще красота — 8 кликов мышкой и все готово 🙂

Что я описал выше? Это способ решения одной конкретной задачи с гораздо меньшим количеством ресурсов, в данном случае — времени. Эта программа экономит время на подготовку бумаг, на расчеты сумм налогов, снижает вероятность ошибки и т.д. Это ее основная ценность, которую несут ее создатели обществу

И вот, далее Вы для себя определитесь, какая Ваша основная цель? Какой Ваш основной посыл обществу?

Личной мой посыл — «Я помогаю людям экономить: время, деньги, нервы и т.д.».

Как я это делаю?
У меня сначала был маленький интернет-магазин по продаже катализаторов для бензина(в поиск «кондиционеры метала для а/м»). При соблюдении определенных условий, расход топлива на малометражках снижался от 20% до 45%
Вторым моим проектам было небольшое мобильное приложение для отслеживания хода исполнительного производства в ФССП(для взыскательней, уже сдохло). Мне и моим знакомым(не юристы) это экономило достаточно много времени на ругань с приставами, чего они должны делать и т.д. Кто сталкивался с этой службой должен знать эффективность и оперативность их работы, особенно в регионах…
Сейчас я пишу небольшой конструктор сайтов, который поможет одной дружественной мне веб-студии сильно оптимизировать процесс создания низкобюджетных сайтов визиток

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

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

Если говорить о чисто практических инструментах(функции стандартной библиотеки, фреймворки и т.д.)… Лично я могу считать себя профессионалом в какой бы то ни было технологии, ни когда я прочитал 1-2 книги и/или написал 1,5 задачи оттуда же. С таким уровнем я не могу сказать что я знаю язык/технологию в принципе, просто знаком — да, но я ее не знаю. Считать себя профессионалом я могу после того как решу не менее сотни задач, используя эту технологию и написал не менее 1 млн строк кода, именно написал, а не сгенерировал rake/gii/artisan или чем-то там еще.

Вам же я желаю не останавливаться, развивайтесь. Мастерство приходит с опытом.

P.S.: от холиваров на тему 1С прошу всех воздержаться

toster.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *