Обучение C#

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

4 совета от профи

4 совета для программистов от Лауреата Нобелевской премии Джона Стейнбека о том, как сделать процесс написания программ максимально плодотворным.

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

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

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

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

На самом деле Джон Стейнбек свои советы давал писателям.

Я взял на себя смелость модифицировать их для программстов, потому что полностью разделяю их суть, в истинности советов не раз убеждался на личном примере.



Как одному написать сложную программу

Эпиграф: Разделяй и Повторяй.

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

Однако, выход есть, и его название я вынес в эпиграф. Лучше всего это правило продемонстрировать на примере. Например, вы хотите написать программу для решения судоку. Чтобы навёл камерой на журнал судоку - и сразу увидел ответ.
Круто? Было бы классно.

Как написать такую программу?
Сначала нужно разделить её на множество подзадач, как технических, так и алгоритмических.
  • Как получить фото с камеры?
  • Как его сделать чёрно-белым?
  • Как выделить область с судоку?
  • Как распознать цифры?
  • Как решить головоломку?
  • Как показать результат?
  • Как запустить это всё на телефоне?


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

Когда все части реализованы, начинается самое интересное - создание полной программы.

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


На данном этапе не стоит отвлекаться на оптимизацию, проверку данных, универсальность.

Твоя задача состоит в том, чтобы сделать так, чтобы программа могла отработать от начала до конца под твоим контролем.

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

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

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

И вот теперь можно в самом деле начать её создавать.
Да, снова "с нуля", используя все былые наработки.

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

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

Зачем начинать сначала? Чтобы избежать "монстров" и "колосов", которые могут обрушиться, когда уже не ясно, как оно работает.

Программисты любят создавать своё, а не разбираться в старом. И это прекрасно, если только позволяет бюджет :)

Разделяй и повторяй, и будет тебе счастье :)

Автор: Евгений Волосатов

Написать комментарий:

9913. --
vip
vip
ответить
# Статьи / Как одному написать сложную программу / 2018-10-18 10:05

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



16018. --
Andrej Gladkov
Andrej Gladkov
ответить
# Статьи / Как одному написать сложную программу / 2018-02-28 20:56

Спасибо, очень понравились эти мысли. Применю на практике


13353. --
Дмитрий
Дмитрий
ответить
# Статьи / Как создавать сложные проекты / 2017-06-02 12:06

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


5649. --
Максим Лапшинов
Максим Лапшинов
ответить
→  Евгений Волосатов  # Статьи / Как создавать сложные проекты / 2016-08-02 14:26

Тогда нестроить забыть об этом а то деньги нужны на материалы. То из воздуха дом непостроишь.


10558. --
Иван Воронин
Иван Воронин
ответить
# Статьи / Как создавать сложные проекты / 2016-08-02 13:24

отличная идея, есть пара вопросов, но я думаю их лучше будет задать на вебинаре, чтобы потом в записи остались ответы, по 2 урока в день отлично, уже сейчас хочется обрушить кучу вопросов, так как интересуют нюансы системы и её симбиоз с текущим положением дел


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  Максим Лапшинов  # Статьи / Как создавать сложные проекты / 2016-08-02 12:45

А если тебе быстро надо построить на даче дом, но у тебя нет ни знаний, ни денег, как тогда?


5649. --
Максим Лапшинов
Максим Лапшинов
ответить
# Статьи / Как создавать сложные проекты / 2016-07-13 19:24

А вот если надо все сразу ? и если не будит времени на переделки? на работе так сделал запустил работает нормально но код не нравится или сделан так что трудно изменения вносить. хоть на стадии проектирования все ситуации прорабатывал какие в голову пришли. а потом когда сделал скажем через месяц просят быстро что то добавить. Ну как то так






Пора создать свою программу



Авторская методика



Личная «Книга жалоб» программиста



Начинаем практику по языку C#





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

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.