Привет!
Я - Артем Коротенко, и, возможно, вы слышали о том что в первом семестре в Белке проходит мой открытый курс геймдева (@gamedevkpi). В этом семестре мы совместно с Георгием Исаченко, которого вы знаете по лекциям по защиты информации (@softwareanddatasecurity) попробуем провести еще один курс совместно с кафедрой ВТ ФИВТа - Software Architecture & Development.
Почему архитектура?
По-моему опыту, именно знания в этой сфере часто проседают у студентов компьютерных направлений. Языку или фреймворку можно научиться, но с какой стороны подходить к разработке большого продукта, как научиться планировать его развитие, с учетом жизненного цикла в месяцы а то и годы (и чем это отличается от прототипной разработки), как вообще спокойно подходить к технологиям не скатываясь в холивары - все эти вопросы требуют внимания.
Чем будем заниматься?
Учиться проектировать приложения, смотреть на задачи с инженерной точки зрения, думать в категориях шире чем языки программирования и фреймворки. Будем говорить в большей части об архитектуре, частично - об организационной стороне процесса (про всякие аджайлы с точки зрения технических специалистов)
Какой порог входа?
Хорошее понимание основ программирования, минимальный опыт работы с ООП и\или ФП языками. Мы будем затрагивать многие вещи повторно, поэтому если курсы архитектуры или шаблонов проектирования у вас были, но совсем не усвоились или не оставили понимания как их применять - приходите.
Когда начинаем?
По субботам, в Белке, в 10:30. 23 числа будет первое, вводное занятие где мы детально рассмотрим проблемы, которые подталкивают к созданию такого курса, план на будущие ~10 лекций и общий набор скилов, который мы планируем немного прокачать за это время
Лекции будут открытыми, с записью на видео, если вам интересно - подписывайтесь на канал @softwarearchanddev и чат @softwarearchanddev_chat, ближе к субботе будет еще один анонс
Я - Артем Коротенко, и, возможно, вы слышали о том что в первом семестре в Белке проходит мой открытый курс геймдева (@gamedevkpi). В этом семестре мы совместно с Георгием Исаченко, которого вы знаете по лекциям по защиты информации (@softwareanddatasecurity) попробуем провести еще один курс совместно с кафедрой ВТ ФИВТа - Software Architecture & Development.
Почему архитектура?
По-моему опыту, именно знания в этой сфере часто проседают у студентов компьютерных направлений. Языку или фреймворку можно научиться, но с какой стороны подходить к разработке большого продукта, как научиться планировать его развитие, с учетом жизненного цикла в месяцы а то и годы (и чем это отличается от прототипной разработки), как вообще спокойно подходить к технологиям не скатываясь в холивары - все эти вопросы требуют внимания.
Чем будем заниматься?
Учиться проектировать приложения, смотреть на задачи с инженерной точки зрения, думать в категориях шире чем языки программирования и фреймворки. Будем говорить в большей части об архитектуре, частично - об организационной стороне процесса (про всякие аджайлы с точки зрения технических специалистов)
Какой порог входа?
Хорошее понимание основ программирования, минимальный опыт работы с ООП и\или ФП языками. Мы будем затрагивать многие вещи повторно, поэтому если курсы архитектуры или шаблонов проектирования у вас были, но совсем не усвоились или не оставили понимания как их применять - приходите.
Когда начинаем?
По субботам, в Белке, в 10:30. 23 числа будет первое, вводное занятие где мы детально рассмотрим проблемы, которые подталкивают к созданию такого курса, план на будущие ~10 лекций и общий набор скилов, который мы планируем немного прокачать за это время
Лекции будут открытыми, с записью на видео, если вам интересно - подписывайтесь на канал @softwarearchanddev и чат @softwarearchanddev_chat, ближе к субботе будет еще один анонс
Итак, уже завтра нас ожидает первая лекция из курса Software Architecture & Development.
Хоть занятие и вводное, но тема предстоит важная - собственно, мы разберемся, какие знания будем стараться получить на протяжении всего курса и какие проблемы современной разработки ПО эти знания призваны решить.
Лекцию я озаглавил Product-oriented engineering и в самом названии уже скрыт намек на то, чего, по-моему мнению, нам часто не хватает в разработке. Мы поговорим о том, что же это за "продукто-ориентированность" и почему именно знания об архитектуре приложений и процессе разработки должны нам помочь в главной цели - создании более качественных и конкурентных продуктов. Именно это знание поможет нам перейти ко всем остальным узким и специфическим темам (которые мы завтра тоже перечислим и кратко обсудим). Приставка with pictures призвана успокоить всех заинтересовавшихся тем, что говорить будем простыми словами и с понятными примерами.
Надеюсь, что лекция будет интересна студентам, уже имеющим опыт в программировании и практикующим программистам в целом.
10:30, Белка (библиотека КПИ, 3 этаж), вход свободный.
Хоть занятие и вводное, но тема предстоит важная - собственно, мы разберемся, какие знания будем стараться получить на протяжении всего курса и какие проблемы современной разработки ПО эти знания призваны решить.
Лекцию я озаглавил Product-oriented engineering и в самом названии уже скрыт намек на то, чего, по-моему мнению, нам часто не хватает в разработке. Мы поговорим о том, что же это за "продукто-ориентированность" и почему именно знания об архитектуре приложений и процессе разработки должны нам помочь в главной цели - создании более качественных и конкурентных продуктов. Именно это знание поможет нам перейти ко всем остальным узким и специфическим темам (которые мы завтра тоже перечислим и кратко обсудим). Приставка with pictures призвана успокоить всех заинтересовавшихся тем, что говорить будем простыми словами и с понятными примерами.
Надеюсь, что лекция будет интересна студентам, уже имеющим опыт в программировании и практикующим программистам в целом.
10:30, Белка (библиотека КПИ, 3 этаж), вход свободный.
На первой лекции курса мы рассмотрели:
1.Что можно называть "ориентированностью на продукт" в разрезе работы разработчика и почему этого часто не хватает?
2.Почему без полноценного вовлечения команды разработчиков в проект сложно построить качественную архитектуру приложения?
3.Какие проблемы в университете и последующей работе к этому приводят.
4.Основные темы предстоящих занятий, рассматривая которые мы будем стараться все эти проблемы хотя бы частично решить
https://www.youtube.com/watch?v=NkCfagj2VPI
1.Что можно называть "ориентированностью на продукт" в разрезе работы разработчика и почему этого часто не хватает?
2.Почему без полноценного вовлечения команды разработчиков в проект сложно построить качественную архитектуру приложения?
3.Какие проблемы в университете и последующей работе к этому приводят.
4.Основные темы предстоящих занятий, рассматривая которые мы будем стараться все эти проблемы хотя бы частично решить
https://www.youtube.com/watch?v=NkCfagj2VPI
YouTube
Course Intro: Product-oriented engineering
1. Что можно называть "ориентированностью на продукт" в разрезе работы разработчика и почему этого часто не хватает.
2. Какие проблемы в университете и последующей работе к этому приводят.
3. Основные темы курса, рассматривая которые мы будем стараться эти…
2. Какие проблемы в университете и последующей работе к этому приводят.
3. Основные темы курса, рассматривая которые мы будем стараться эти…
В субботу с утра в Белке будет проходить Defcon Kyiv meetUp, в связи с чем нам нужно перенести время лекции. Если отталкиваться от того что проводить лучше в выходной день, есть два варианта:
public poll
Воскресенье утром - 10:30 – 95
👍👍👍👍👍👍👍 52%
Суббота, но вечером - 17:30 – 57
👍👍👍👍 31%
Подходят оба варианта – 31
👍👍 17%
👥 183 people voted so far.
public poll
Воскресенье утром - 10:30 – 95
👍👍👍👍👍👍👍 52%
Суббота, но вечером - 17:30 – 57
👍👍👍👍 31%
Подходят оба варианта – 31
👍👍 17%
👥 183 people voted so far.
На прошлом занятии мы говорили о том, что главная цель разработчика - продукт, а не код. Именно понимание того что код должен уметь оперативно реагировать на потребности продукта является отправной точкой в проектировании хорошей архитектуры приложения.
На следующей лекции мы будем дальше развивать эту тему, но уже в гораздо более технической плоскости - парадигмы программирования. Что на сегодня более актуально? Как их правильно понимать и использовать? Ключ к этому пониманию - разобраться, какие проблемы привели к такому зоопарку подходов. Семидесятые - господствование процедурных языков, звездный час ООП пришелся на девяностые годы, в 80-ых в Японии существовала национальная программа по развитию индустрии основанная на декларативном Прологе, а сегодня вопрос "чем вам нравится функциональный подход" стабильно вызывает холивар (один такой я развязал вчера в нашем чате @softwarearchanddev_chat - присоединяйтесь)
Важно! В Белке завтра проходит ивент, поэтому лекция пройдет в воскресенье, в то же время - 10:30 в Библиотеке КПИ.
На следующей лекции мы будем дальше развивать эту тему, но уже в гораздо более технической плоскости - парадигмы программирования. Что на сегодня более актуально? Как их правильно понимать и использовать? Ключ к этому пониманию - разобраться, какие проблемы привели к такому зоопарку подходов. Семидесятые - господствование процедурных языков, звездный час ООП пришелся на девяностые годы, в 80-ых в Японии существовала национальная программа по развитию индустрии основанная на декларативном Прологе, а сегодня вопрос "чем вам нравится функциональный подход" стабильно вызывает холивар (один такой я развязал вчера в нашем чате @softwarearchanddev_chat - присоединяйтесь)
Важно! В Белке завтра проходит ивент, поэтому лекция пройдет в воскресенье, в то же время - 10:30 в Библиотеке КПИ.
Пятница - праздник, в связи с чем много кто уезжает из Киева на три дня. Стоит ли проводить лекцию в субботу?
anonymous poll
Без разницы - я только видео смотрю – 138
👍👍👍👍👍👍👍 45%
Стоит, я приду – 88
👍👍👍👍 29%
Лучше перенести - у меня не получится прийти – 79
👍👍👍👍 26%
👥 305 people voted so far.
anonymous poll
Без разницы - я только видео смотрю – 138
👍👍👍👍👍👍👍 45%
Стоит, я приду – 88
👍👍👍👍 29%
Лучше перенести - у меня не получится прийти – 79
👍👍👍👍 26%
👥 305 people voted so far.
Что такое структурное программирование и почему современные языки избегают конструкции goto?
Какой основной принцип лежит в основе функционального программирования и позволяет вывести все остальные?
Почему Алан Кей (один из создателей технологии) считает термин ООП неудачным и в чем вообще суть ООП?
Ссылки на все материалы, которые я упоминал в лекции - в описании видео на ютубе https://youtu.be/PQfsUWaKsLI
Какой основной принцип лежит в основе функционального программирования и позволяет вывести все остальные?
Почему Алан Кей (один из создателей технологии) считает термин ООП неудачным и в чем вообще суть ООП?
Ссылки на все материалы, которые я упоминал в лекции - в описании видео на ютубе https://youtu.be/PQfsUWaKsLI
YouTube
Programming Paradigms: Structured, Functional and Object-Oriented
Что такое структурное программирование и почему современные языки избегают конструкции goto?
Какой основной принцип лежит в основе функционального программирования и позволяет вывести все остальные?
Почему Алан Кей (один из создателей технологии) считает…
Какой основной принцип лежит в основе функционального программирования и позволяет вывести все остальные?
Почему Алан Кей (один из создателей технологии) считает…
В связи с первыми весенними выходными, и тем что наша следующая тема очень важная в курсе лекции завтра не будет - что такое настоящий SOLID мы рассмотрим в следующую субботу, 16 марта.
Если у вас остались какие-то вопросы после лекции о парадигмах - задавайте в чат.
На выходных я подготовлю детальное описание заданий на курс. Студентам делать его обязательно, остальным - будет очень полезно. Алан Кей говорит, что сугубо теоретические занятия компьютерной наукой - это как консерватория без музыкальных инструментов, но с лекциями.
На картинке - легендарная Ада Лавлейс, автор первой программы, Грейс Хоппер, создатель первого компилятора и уже знакомая нам Маргарет Гамильтон, программист команды "Аполлона" и автор термина "Software Engineering"
Если у вас остались какие-то вопросы после лекции о парадигмах - задавайте в чат.
На выходных я подготовлю детальное описание заданий на курс. Студентам делать его обязательно, остальным - будет очень полезно. Алан Кей говорит, что сугубо теоретические занятия компьютерной наукой - это как консерватория без музыкальных инструментов, но с лекциями.
На картинке - легендарная Ада Лавлейс, автор первой программы, Грейс Хоппер, создатель первого компилятора и уже знакомая нам Маргарет Гамильтон, программист команды "Аполлона" и автор термина "Software Engineering"
Ну что же, пришло время копнуть в тему проектирования объектных систем глубже. На прошлом занятии мы уже определили что главная особенность ооп-языков - возможность строить систему на "сообщениях", когда инициатор какого-то действия не знает точно, кто его будет выполнять. Теперь поговорим о том, как это использовать и какие еще принципы помогут применять ООП правильно.
Если конкретнее, говорить будем о принципах SOLID - широко известном buzzwordе, который всегда встречается в резюме и описаниях вакансий, но почему-то редко звучит на рабочих митингах. Какие ошибки приводят к построению систем, с которыми без слёз невозможно работать? О чем нужно помнить при изначальном проектировании, чтобы заложить хороший фундамент для программы, претендующей на долгую жизнь? Попутно рассмотрим еще несколько гуляющих мифов об ООП, а так же представим практические задания на курс.
Белка (библиотека КПИ), суббота, начало в 10:30
Если конкретнее, говорить будем о принципах SOLID - широко известном buzzwordе, который всегда встречается в резюме и описаниях вакансий, но почему-то редко звучит на рабочих митингах. Какие ошибки приводят к построению систем, с которыми без слёз невозможно работать? О чем нужно помнить при изначальном проектировании, чтобы заложить хороший фундамент для программы, претендующей на долгую жизнь? Попутно рассмотрим еще несколько гуляющих мифов об ООП, а так же представим практические задания на курс.
Белка (библиотека КПИ), суббота, начало в 10:30
Лекция о принципах SOLID - откуда взялись, какие проблемы решают, как правильно понимать (!) и как пользоваться.
Ссылки на литературу - под видео. В этот раз попробовал добавить таймкоды для удобной навигации - все-таки полуторачасовая лекция не самый привычный для ютуба формат.
https://youtu.be/BWJMnn9bVJg
Ссылки на литературу - под видео. В этот раз попробовал добавить таймкоды для удобной навигации - все-таки полуторачасовая лекция не самый привычный для ютуба формат.
https://youtu.be/BWJMnn9bVJg
YouTube
SOLID Principles: Understanding and Using
2:37 О появлении SOLID
14:19 Симптомы плохого проектирования
23:34 Dependency Inversion
44:37 Open\Closed Principle
1:00:27 ООП объединяет данные с операциями над ними. Плохо ли это?
1:17:27 Liskov Substitution
1:26:24 Single Responsibility
1:33:54 Interface…
14:19 Симптомы плохого проектирования
23:34 Dependency Inversion
44:37 Open\Closed Principle
1:00:27 ООП объединяет данные с операциями над ними. Плохо ли это?
1:17:27 Liskov Substitution
1:26:24 Single Responsibility
1:33:54 Interface…
В теме четвертого занятия из нашего курса наконец появляется слово "архитектура", и завтра мы будем говорить о:
1. Собственно, архитектуре приложения и некоторых подходах к ее созданию - "чистая" архитектура, шестиугольная (hexagonal) и т.д.
2. Почему у UML не получилось, а юзкейсами неправильно пользуются.
3. Способах разделения отображения внутри программы (MVC, MVP, MVVM) и почему MVC - паттерн, а не архитектура.
Приходите, будет насыщенно. Суббота, 10:30, библиотека КПИ (пока еще турникеты не работают, вход свободный)
1. Собственно, архитектуре приложения и некоторых подходах к ее созданию - "чистая" архитектура, шестиугольная (hexagonal) и т.д.
2. Почему у UML не получилось, а юзкейсами неправильно пользуются.
3. Способах разделения отображения внутри программы (MVC, MVP, MVVM) и почему MVC - паттерн, а не архитектура.
Приходите, будет насыщенно. Суббота, 10:30, библиотека КПИ (пока еще турникеты не работают, вход свободный)