Важно знать каждому разработчику: 5 шагов к решению любых задач в программировании.

Как избежать «велосипеда» в коде и перестать писать код для рубрики «bad practice»?

Помните, как вы впервые написали «Hello, World!»? Эта фраза для будущего программиста, как первое слово у младенца. Как минимум, улыбка должна была появиться на вашем лице, когда у вас скопмилился код и выдал именно то, что вы от него хотели. 

 

 

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

 

 

Основная работа любого программиста —  решать задачи для бизнеса. Иногда от строчки кода зависит жизнь человека, а, может, не одного. Так почему же мы слишком часто видим подобные картинки в сети?

 

 

Смешно — да. Но так смешно, что плакать хочется.  

Почему же так происходит? Кто виновен в том, что Бизнес видит идею в одном, менеджер проекта описывает ее по-своему, а программист кодит «чтобы работало»?

 

Мы считаем, что главная ошибка —  неумение вести диалог. И так как наша площадка JuJa отвечает за то, чтобы наши ученики стали хорошими программистами, мы предлагаем рассмотреть путь из 5 шагов  — как решать задачи в программировании.  

 

Любую техническую задачу можно решить за 5 шагов:

 

Шаг 1.  Обязательно задайте вопросы. 

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

 

Примеры вопросов:  

— какие типы данных используются? 

— с каким объемом информации (данных) все должно работать? 

— кто пользователь программы?

Просите подробное описание, которое можно проверить через тесты. 

 

 

Шаг 2. Разработайте алгоритм

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

— сколько памяти и времени необходимо для реализации этого алгоритма? 

— что будет, если данных будет больше, чем запланировано? 

— какие проблемы могут возникнуть в процессе работы алгоритма? 

— есть ли другие варианты решения? Какие у них преимущества / недостатки? 

— достаточно ли входящей информации для решения алгоритма?

 

Если нет, возвращаемся на Шаг назад — добывать информацию. 

 

 

Шаг 3.  Псевдокод. 

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

 

Шаг 4. Код.

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

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

Запомните!

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

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

В этом Шаге уместна поговорка — краткость сестра таланта. Не пишите длинный код. Развивайте в себе талант. 

 

Шаг 5.  Проверка. 

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

Вы программист. Ваш ценный конечный продукт (ЦКП) — рабочий код, программа, которая выполняет то, что от нее требуется. Но не просто работает, а не вредит «другим»: не забирает лишней памяти, например. 

Если вы отдаете на проверку кому-то нерабочий код, это значит, что вы дали не ценный не конечный продукт. За это не платят деньги. Вы — не ценный программист. 

Все пишут код с ошибками. Сами программисты пишут ошибки.  В первую очередь обратите внимание на следующие моменты: 

• экстремальные случаи – 0, отрицательное значение, null, максимумы, минимумы; 

• ошибки пользователя – что случится, если пользователь передаст null или отрицательное значение; 

• общие случаи – протестируйте типовое поведение программы. 

Если алгоритм кода сложный, тестируйте его по ходу написания, а не в конце. 

Если вы находите ошибки (а они будут), то не торопитесь их исправлять – попытайтесь найти причину их возникновения. Вы можете исправить ошибку в конкретном месте, и не задуматься о том, не породит ли исправление новые. 
Работая над ошибками, задумайтесь, почему код перестал работать. Это поможет написать красивый и чистый код намного быстрее. 

 

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

Разрабатывайте ЦКП всегда и становитесь ценными разработчиками!

Учитесь и развивайтесь вместе с JuJa.