Помню тот далекий день, примерно в 2005-2006 году, когда я будучи школьником, методом “проб и ошибок” пытался заставить работать свой первый скрипт. В конце-концов мне это удалось и я ощутил приятную радость и воодушевление. Так начинался мой путь разработчика. Весь этот путь я прошел практически один, у меня не было наставника или учителя, многое приходилось постигать самому, ошибаясь, осознавая это и возвращаясь обратно, пробуя пойти другим путём. Глядя на этот путь, я сформулировал некоторые важные вехи на этом пути и хочу поделиться ими.
1. Не изобретайте велосипед
В современном мире идея открытого софта (Open-source) распространена достаточно широко. Не пользоваться этим богатым опытом других разработчиков весьма глупо.
Первое время, когда вы начинаете изучать что-то новое, реализовать все самому кажется хорошей идеей. Это действительно может быть полезно в образовательных целях. Однако, однажды вы можете столкнуться с неким вопросом, который поставит вас в тупик, и хорошим решением будет поискать ответ у других – быть может кто-то уже решил этот вопрос ранее?
Сфокусируйтесь на реализации бизнес-логики вашей программы. Если вы хотите распарсить json-файл, не надо писать парсер с нуля – поищите сторонние библиотеки
2. Выбирайте библиотеки разумно
В продолжение предыдущего пункта, обязательно надо упомянуть о том, что хотя сегодня и существует огромное множество бесплатных библиотек на github, это ещё не значит что все они хорошего качества.
Обязательно проверяйте количество звезд, посмотрите другие проекты автора, убедитесь, что они тоже достойного качества, посмотрите тикеты (issues), как открытые, так и закрытые. Убедитесь в стабильности работы этого кода и обязательно загляните “под капот”, посмотрите сам код: как он написан, эффективен ли он, можно ли доверять ему?
3. Расслабьтесь, выдохните, заварите чаю и читайте больше кода
Программисты тратят много времени не на написание кода, а на его чтение. Если вы ещё не делаете так, то начните это делать!
Лучший способ научится хорошему коду – смотреть код лучших разработчиков. Постоянно изучайте чужую работу, посмотрите код ваших коллег, изучите их библиотеки. Возможно, вы найдёте и подчерпнете что-то новое для себя.
Этот совет особенно подходит для Open-source проектов, где весь код является полностью открытым и вы можете изучить всё до каждой мелочи. Погрузитесь в код, посмотрите как автор реализовал тот или иной функционал.
4. Придерживайтесь стандартов и стилей
Каждый программист имеет свой уникальный “почерк”, однако сегодня редко встретишь проекты, которые полностью созданы одним человеком и для одного человека. Скорее всего ваш код будут использовать другие люди. Сделайте его лёгким для прочтения и понимания. Позаботьтесь об удобстве не только других, но и о своём собственном. Ведь вернувшись к своему коду после долгого перерыва вы будете осваиваться в нём практически с нуля! Ваш код должен читаться легко, как поэма. Позвольте людям наслаждаться при чтении вашего кода.
5. Думайте о безопасности с самого начала
Некоторые программисты погружаются в проект с головой и начинают первым делом реализовывать бизнес-логику, при этом абсолютно не задумываясь о безопасности, потенциальных проблемах и возможных дырах. Этот процесс обычно откладывается на потом: “подумаю, об этом завтра!”. Однако, залатывать дыры и рефракторить код потом может быть очень затратным занятием. Думайте о безопасности программного обеспечения с первых строк.
6. Продумайте архитектуру
Как и вопросы безопасности вашего ПО, так и вопрос архитектуры является первостепенным. Вы будете бесконечно благодарны сами себе, если выберете верную архитектуру.
Разделяйте внешнее представление от логики, логику от данных. Применяйте методы SOLID и другие техники программирования для улучшения структуры проекта. Кто знает какие правки и какие добавки вы захотите сделать позже? Добавлять что-то в корявую структуру может быть невыносимо трудным занятием.
7. Пользовательскому интерфейсу – особое внимание
Пользовательский интерфейс – это как шутка, если вам приходится его объяснять, это плохо!
Неизвестный автор
Если вы работаете в команде, то возможно у вас есть отдельный человек, в чью ответственность входит забота о UI\UX . Но если вы разработчик-одиночка, то не забывайте уделять внимание не только коду, но и дизайну.
Продумайте дизайн, зарисуйте его или в крайнем случае держите его в голове. Делайте простой, красивый и понятный интерфейс, который приятен глазу. Вы должны думать не как разработчик, а как простой пользователь, который будет использовать ваше ПО.
8. Тестируйте, тестируйте и ещё раз тестируйте!
Нет ничего более важного, чем тестирование! Тестируйте ваше ПО настолько тщательно, насколько это возможно. Потратьте время и разработайте обширные автотесты. Реализуйте различные стрессовые ситуации и посмотрите выживет ли ваша программа.
Вы можете сделать прекрасное ПО, но представьте, что пользователь в предвкушении запускает вашу программу, он в полном восторге от её эксплуатации и бац, программа вылетает с критической ошибкой. Ничего так не портит общее впечатление о программе и вашу репутацию как разработчика, как внезапные фатальные ошибки.
Не спешите делать релиз, не будучи уверенным в стабильности ПО. Потратьте дополнительный день, два, неделю, необходимое количество времени на тесты, чтобы убедится в стабильности вашего ПО.
9. Начните использовать Git прямо сейчас!
Если вы ещё не используете Git или любую другую систему контроля версий, то начните их использовать прямо сейчас!
Делать архивы вашего проекта и бэкапы, всякий раз, когда вы собираетесь внести изменения весьма занудно. Вы можете запросто забыть это сделать. А если вы внесли несколько изменений, весьма масштабных, и что-то стало работать не так. Как узнать об изменениях, внесённых в программу? Git позволит вам следить за изменениями в коде и в случае неприятностей откатиться назад.
10. Не гонитесь за новинками
Все любят современное и мощное оборудование. Будучи разработчиком помните, что не все ваши пользователи могут быть счастливыми обладателями мощных и современных компьютеров, технологий. В такой ситуации, ваше ПО, которое прекрасно себя ведет на новинках из мира ПО и железа, может быть абсолютно непригодным для использования в старых версиях ОС, фреймворков или на слабом железе.
11. Изучите шаблоны проектирования
Разрабатывая сложный и крупный проект вы будете сталкиваться лицом к лицу с некоторыми распространёнными проблемами, которые уже были решены до вас кем-то другим, более компетентным и эти типовые решения – получили названия шаблоны проектирования (design patterns).
Изучив их, вы заметите, что многие проблемы архитектуры имеют то самое типовое решение, описываемое одним из шаблонов. Поэтому потратьте своё время на их изучение!
Это инвестиция, которая будет давать вам “дивиденды” вечно!
12. Настало время отдавать!
На пути программиста мы часто сталкиваемся с какими-либо проблемами и находим решение в сети Интернет. Пришло время возвращать!
Однажды, создавая сложный проект, вы заходите на Gtihub и находите несколько библиотек, которые решают многие из ваших проблем, и позволяют вам сосредоточится на самом главном, сэкономить время и силы. Это стало возможным благодаря чужому труду, благодаря тому, что кто-то создал данный инструмент, скомпилировал его, протестировал и опубликовал для дальнейшего распространения, чтобы сделать сообщество лучше!
Вспомните тот день, когда вы наглухо застряли с каким-либо багом или проблемой, или ввязались во что-то новое и не знаете куда двигаться дальше. Что происходит в таком случае? Вы идёте в поисковую систему и находите чей-то пример, проект, пост в блоге, который помогает вам преодолеть трудности здесь и сейчас. Это стало возможным благодаря тому, что кто-то отложил свои дела, вечерний просмотр фильма или встречу с друзьями в выходной день, чтобы написать тот или иной пост в блог.
Настало и ваше время, отдавать на благо сообщества. Чем больше вы отдадите, тем больше получите обратно. Все мы очень заняты и погружены в работу, что очень трудно найти свободную минутку, чтобы сделать что-то для других. Но постарайтесь найти свободный час хотя-бы раз в неделю, чтобы поделиться своим опытом или наработками и сделать сообщество программистов богаче!
В этой статье я попытался собраться мыслями и сформулировать некие советы для разработчиков разного ранга. Кто-то нашел здесь что-то новое для себя, а кому-то статья напомнит о чем-то давно известном, но временно вылетевшим из головы, кто-то сможет чем-то дополнить эту статью и поделиться своим опытом. Я продолжаю свой путь, продолжаю развитие и изучение, и буду продолжать делиться своим опытом. Я надеюсь, что этот пост сделал чью-то жизнь чуточку легче.