Какой проект написать для проверки и закрепления теоретических знаний?

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

Александр Горный, директор по информационным технологиям, руководитель департамента внутренней информационной разработки Mail.Ru Group

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

Павел Емельянов, архитектор в департаменте серверной виртуализации Parallels

Проект? Целый проект уже вряд ли имеет смысл, их понаписано великое множество, писать с нуля новый почти наверняка означает выкинуть его. Кроме того, время мелких проектов уже, можно сказать, прошло. Написать что-то даже просто интересное (не то что бы полезное) в одиночку можно, но это будет не совсем проект, а скорее этюд. Я бы посоветовал ввязаться в существующий проект (с открытыми исходниками, разумеется) на подходящую тему и попытаться что-то в нём улучшить. Или починить 🙂

Сергей Зефиров, программист с широким опытом работы, энтузиаст и евангелист языка Haskell

Выберите проект, который вам интересен.

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

Чем не проект? А вычислительная биология полезна и интересна.

Михаил Кечинов, сооснователь студии Михаила Кечинова

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

Александр Садыков, директор отдела тестирования Acronis

Напишите любой достаточно простой проект, который придет вам в голову. Можно выбрать что-то из тех, которые уже многократно реализованы более опытными коллегами и которыми вы сами часто пользуетесь. Не нужно изобретать что-то гениальное: если проект ещё не реализован на конкурентном рынке, то, скорей всего, он никому не нужен; а если реализован, то, наверняка, лучше и в бо́льшем объёме.

Обычно начинающие веб-разработчики пишут свою CMS (Content Management System) или блог-движок. Для более продвинутых хороший вариант — написать свой интернет-магазин. Можно написать систему знакомств по примеру Badoo, общий чат вроде WhatsApp или социальную сеть, похожую на Facebook. Любой проект, к которому лежит душа — это самое важное. Не сто́ит расстраиваться, если им никто не будет пользоваться: главное, чтобы он работал. Не сто́ит также включать в проект спорные технологии типа MongoDB — не все оценят и поймут; лучше используйте классику (MySQL, PgSQL, Memcache, etc).
Как только с начальными уровнем будет покончено (хватит пары-другой месяцев), примкните к реальному проекту в open source community или в реальной ИТ-компании: например, стажером. Ни в коем случае нельзя «вариться в собственном соку» в отрыве от отрасли. Разработка ПО — это командная работа, одиночки здесь неэффективны, а навыки работы в команде зачастую по важности наравне с навыками программирования.

Антон Пискунов, основатель и генеральный директор BeastGaming

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

Мануэль Маццара, профессор, заместитель заведующего лаборатории программной инженерии и верификации программ Университета Иннополис

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

Василий Кобзарь, преподаватель GeekBrains, специализируется на администрировании Linux

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

Андрей Ситник, веб-разработчик в Evil Martians

На мой взгляд, лучше всего исправить какой-нибудь средний опенсорс-проект. Задач всегда очень много — загляните в Issue на Гитхабе или спросите по почте автора проекта. Опенсорс лучше личного проекта «в стол» по двум причинам. Во-первых, вы увидите хороший код. Во-вторых, вы познакомитесь в другими разработчиками, а связи очень важны даже в программировании.

Василий Журавский, tech lead FutureLab, RuGadget

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

Владимир Глебов, Ruby-разработчик в AT Consulting

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

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

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