3. Краткое содержаниекурса Обзор рынка разработки программного обеспечения Что есть и какая практическая разница Собрать все в кучку, для определенности – надо оно вам или нет и что конкретно Углубленный рассказ про рынок бизнес (крупного) софта По ролям с деталями Если оно вам надо, то в какой роли
4. Кто здесь? Александр Горник agornik@gmail.com Совладелец itcd.ru Google / yandex / facebook / livejournal / moikrug / …
5. Зачем Поиск сотрудников +Карма Хочется верить что по итогу курса хотя бы один человек придет к нам на работу / стажировку
6. Формальности Лекции доступны в электронном виде При ответах можно пользоваться всем чем угодно 5 –любая осязаемая практическая деятельность 3, 4 – понимание о чем речь и способность искать информацию
8. Опрос Какие курсы, языки вам читали? HTML / HTTP? Кто лично писал код? На чем? Читали ООП? Кто знает что такое виртуальный метод? Читали ли вам базы данных? Кто может написать select? Как реализуется связь m:m? Структуры данных и сложность алгоритмов? Список народу с email адресами для оповещений о разном
11. По языку Языки низкого уровня (работа с памятью) Assembler, C, C++ Языки высокого уровня (библиотеки + GC) Java (Java+), .NET (С#+) Нишевые (JavaScript, Ruby, Python, Flash, Flex …) Не совсем разработка SQL, HTML …
12. По платформе Классические приложения Windows, Linux, приставки, «толстые» клиенты Серверные приложения Web, enterprise Web UI HTML, JS Мобильные приложения iOS, Android Embedded системы Нишевые 1C, SAP, Bitrix, SalesForce…
13. По парадигме Процедурное Embedded и, быть может, самый простой UI (JS) ООП 90% всего рынка Декларативное SQL и всякие DSL (MDX, конфигурации пр-тов…) AOP, функциональноеи прочее Нишевое, для специфических задач
14.
15. По типу задач Алгоритмы и производительность embedded, графика, звук, AI… Бизнес приложения БД, бизнес логика, большой размер Клиентские приложения (интерфейс)
16. По предметной области Банки-финансы, медицина, производство, документооборот, игры… Есть очень большая разница между разными предметными областями
17. Тенденции Уровень языков повышается везде Системы становятся больше и сложнее (ООП) Все уходит на сервер Веб разработка очень сильно растет (HTML5) Суровая специализация (iOS), мечты о кроссплатформенности пока только мечты
18. Например Web приложения Высокий уровень языков Все размеры приложений UIпрограммирование (на разном) БД, бизнес логика (часто) Бывают нюансы с нагрузкой Игры Низкий + самый высокий уровень одновременно Алгоритмы, графика, производительность
20. Смесь разных типов ПО Большие размеры Длительные сроки разработки и поддержки Различные интерфейсы (UI) Сложная бизнес логика на сервере Большие объемы данных Большая нагрузка
21. Организационные сложности Множество людей разных специальностей сложность координации Множество заинтересованных сторон сложность сбора требований Сложность планирования и соблюдения сроков и бюджетов С учетом размеров проектов
22. Сложные бизнес требования Неизвестность и неполнота бизнес требований при старте проекта Постоянное изменение и дополнение требований в связи с динамикой бизнеса Как следствие Сложность документирования требований Сложность их реализации и модификации
23. Сложность масштабирования По определению не могут работать на одном физическом сервере Возникает задача – как сделать так, что производительность росла пропорционально добавляемому железу Google, Facebook
24. Длительная поддержка и доработка Жизненный цикл ПО длится в разы большего среднего времени работы сотрудника на одном месте работы В рамках поддержки нужно дорабатывать и расширять функционал системы
25. Интеграция с разнородными системами При разработке часто нужно использовать множество сторонних систем Без возможности их модификации В т.ч. неготовых систем со своим циклом разработки Без качественного описания таких систем
26. Решения Процессы Как организовать людей что бы правильно оценить, выполнить сроки в условиях меняющихся требований Архитектура Как организовать код что бы он позволял менять требования, масштабировался, был готов к расширению и интеграции, а еще дешев в поддержке и доработке
27. Как бывает и к чему стремимся Скорость разработки Выход на проектную мощность Правильная архитектура и процесс Хорошо Неправильная архитектура и процесс Плохо Время Банкротство
29. Как заработать много денег? (в этой области) Постоянно читать книжки Знать английский язык и читать западные источники Научиться письменно излагать свои мысли Не ходить на работу в ФГУП НИИ…
31. Вопросы? Литература по данной лекции Джоел о программирование (http://www.joelonsoftware.com/+ переводы) http://www.ozon.ru/context/detail/id/2820575/ http://www.ozon.ru/context/detail/id/4878099/ Фредерик Брукс, Мифический человеко-месяц