SlideShare a Scribd company logo
1 of 28
Разработка ПО
 Введение в специальность

                  Павел Егоров
                    @xoposhiy
                  pe@kontur.ru
Радости профессии
https://twitter.com
Задачи любой сложности!
Алгебра
    ТеорВер
       МатСтат
           МетВыч
              ДифУры
                  …
                       …
                           …
Работа
Печали профессии
        Точность и безошибочность

                       задачи   сверху

                эта страшная   отладка
Начать легко!
На сколько сложным должен быть
                язык программирования?
      Теорема
           о структурном программировании


                             if
                            while
                                “;”
Не все так просто…
20-30% всех IT-проектов проваливаются!
              http://www.ambysoft.com/surveys/success2011.html




  Чем больше система, тем выше риск


      15—50 ошибок на 1000 строк кода
                    Стив Макконнелл «Совершенный код»
66.ru переписан с нуля трижды
          за 5 лет существования
                    Евгений Островский




            JetStyle трижды делал
                 с нуля «ПО для рабочих групп»
                                              Алексей Кулаков




                    * Согласно докладам с конференции FailConf.ru
Иногда «приходится бежать со всех ног,
         чтобы только остаться на том же месте!»

Такие проекты невозможно
                   переписать с нуля
Деградация
         Robert Martin. Clean code
«Со временем продукт становится
     все менее структурированным,
     если только с этим специально
     не бороться»
                            Lehman Law
Деградация
         Robert Martin. Clean code
Откуда берется
  сложность?
Проклятье низкого порога вхождения

   так заманчиво сразу бежать кодить!
~N
   2



Больше кода — больше зависимостей!
Разработка ПО — командная игра

  Year    Operating System     SLOC (Million)   Team size

  1993   Windows NT 3.1              4            340

  1994   Windows NT 3.5              7            530

  1996   Windows NT 4.0              11           1500

  2000   Windows 2000               30           3100
  2001   Windows XP                 45          4000
  2003   Windows Server 2003       50           4400
Как лечить?
                      Проводить разведку
                      требования, прототипирование
                      опросы, тестирование

        Проектировать
        декомпозиция на модули, потенциальные изменения


    Держать код в порядке

Улучшать командное взаимодействие
Вопросы?




                @xoposhiy
              pe@kontur.ru
  http://vk.com/kontur_edu

More Related Content

Similar to Разработка ПО. Введение в специальность 1

Можно ли писать автотесты на родном языке?
Можно ли писать автотесты на родном языке?Можно ли писать автотесты на родном языке?
Можно ли писать автотесты на родном языке?Olga Kiseleva
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...HappyDev
 
Олег Антонян
Олег АнтонянОлег Антонян
Олег АнтонянForkConf
 
Денис Чернилевский - Вы кто вообще такие
Денис Чернилевский - Вы кто вообще такиеДенис Чернилевский - Вы кто вообще такие
Денис Чернилевский - Вы кто вообще такиеYandex
 
Инженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуИнженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуOlga Maksimenkova
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?etyumentcev
 
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...ZFConf Conference
 
о неудачах майкрософт и не только 2
о неудачах майкрософт и не только   2о неудачах майкрософт и не только   2
о неудачах майкрософт и не только 2Artur Orujaliev
 
Особенности веба
Особенности вебаОсобенности веба
Особенности вебаMax Burtsev
 
Андрей Лабунец. Механизмы трассировки
Андрей Лабунец. Механизмы трассировкиАндрей Лабунец. Механизмы трассировки
Андрей Лабунец. Механизмы трассировкиLiloSEA
 
04 HappyDev-lite-2015 autumn. Евгений Тюменцев. Программирование глазами мате...
04 HappyDev-lite-2015 autumn. Евгений Тюменцев. Программирование глазами мате...04 HappyDev-lite-2015 autumn. Евгений Тюменцев. Программирование глазами мате...
04 HappyDev-lite-2015 autumn. Евгений Тюменцев. Программирование глазами мате...HappyDev-lite
 
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОВосток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОPositive Hack Days
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решенияВладимир Кожаев
 
К стратегической сессии по будущему интернета
К стратегической сессии по будущему интернетаК стратегической сессии по будущему интернета
К стратегической сессии по будущему интернетаAnatoly Levenchuk
 
Охота на угрозы на BIS summit 2016
Охота на угрозы на BIS summit 2016Охота на угрозы на BIS summit 2016
Охота на угрозы на BIS summit 2016Sergey Soldatov
 
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработкеSECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработкеSECON
 

Similar to Разработка ПО. Введение в специальность 1 (20)

Можно ли писать автотесты на родном языке?
Можно ли писать автотесты на родном языке?Можно ли писать автотесты на родном языке?
Можно ли писать автотесты на родном языке?
 
Фишки и прелести TypeScript
Фишки и прелести TypeScriptФишки и прелести TypeScript
Фишки и прелести TypeScript
 
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
2015-12-06 Евгений Тюменцев - Разработка надежных параллельных, распределенны...
 
Олег Антонян
Олег АнтонянОлег Антонян
Олег Антонян
 
Денис Чернилевский - Вы кто вообще такие
Денис Чернилевский - Вы кто вообще такиеДенис Чернилевский - Вы кто вообще такие
Денис Чернилевский - Вы кто вообще такие
 
Инженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдевуИнженерия Хаоса или научите меня геймдеву
Инженерия Хаоса или научите меня геймдеву
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
 
Как жить в согласии с SOLID?
Как жить в согласии с SOLID?Как жить в согласии с SOLID?
Как жить в согласии с SOLID?
 
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
ZFConf 2011: Как может помочь среда разработки при написании приложения на Ze...
 
о неудачах майкрософт и не только 2
о неудачах майкрософт и не только   2о неудачах майкрософт и не только   2
о неудачах майкрософт и не только 2
 
Особенности веба
Особенности вебаОсобенности веба
Особенности веба
 
Андрей Лабунец. Механизмы трассировки
Андрей Лабунец. Механизмы трассировкиАндрей Лабунец. Механизмы трассировки
Андрей Лабунец. Механизмы трассировки
 
Cценарий ролика EDISON
Cценарий ролика EDISONCценарий ролика EDISON
Cценарий ролика EDISON
 
04 HappyDev-lite-2015 autumn. Евгений Тюменцев. Программирование глазами мате...
04 HappyDev-lite-2015 autumn. Евгений Тюменцев. Программирование глазами мате...04 HappyDev-lite-2015 autumn. Евгений Тюменцев. Программирование глазами мате...
04 HappyDev-lite-2015 autumn. Евгений Тюменцев. Программирование глазами мате...
 
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОВосток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
 
Maybe some mock_true
Maybe some mock_trueMaybe some mock_true
Maybe some mock_true
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
К стратегической сессии по будущему интернета
К стратегической сессии по будущему интернетаК стратегической сессии по будущему интернета
К стратегической сессии по будущему интернета
 
Охота на угрозы на BIS summit 2016
Охота на угрозы на BIS summit 2016Охота на угрозы на BIS summit 2016
Охота на угрозы на BIS summit 2016
 
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработкеSECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
 

More from Pavel Egorov

Интеллект-карты для конспектирования
Интеллект-карты для конспектированияИнтеллект-карты для конспектирования
Интеллект-карты для конспектированияPavel Egorov
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Pavel Egorov
 
Мастер класс по алгоритмам. Часть 2
Мастер класс по алгоритмам. Часть 2Мастер класс по алгоритмам. Часть 2
Мастер класс по алгоритмам. Часть 2Pavel Egorov
 
Code retreat @ крешкурс2013
Code retreat @ крешкурс2013Code retreat @ крешкурс2013
Code retreat @ крешкурс2013Pavel Egorov
 
Software Engineering. Введение в специальность. Что дальше?
Software Engineering. Введение в специальность. Что дальше?Software Engineering. Введение в специальность. Что дальше?
Software Engineering. Введение в специальность. Что дальше?Pavel Egorov
 
Software engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияSoftware engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияPavel Egorov
 
Машинное обучение (Открытый семинар по средам)
Машинное обучение (Открытый семинар по средам)Машинное обучение (Открытый семинар по средам)
Машинное обучение (Открытый семинар по средам)Pavel Egorov
 
Cистема подготовки разработчиков @ CoIT
Cистема подготовки разработчиков @ CoITCистема подготовки разработчиков @ CoIT
Cистема подготовки разработчиков @ CoITPavel Egorov
 
Highload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексыHighload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексыPavel Egorov
 
Highload в контуре @ DUMP 2011
Highload в контуре @ DUMP 2011Highload в контуре @ DUMP 2011
Highload в контуре @ DUMP 2011Pavel Egorov
 
Основы Di контейнеров
Основы Di контейнеровОсновы Di контейнеров
Основы Di контейнеровPavel Egorov
 

More from Pavel Egorov (13)

Git basics
Git basicsGit basics
Git basics
 
Интеллект-карты для конспектирования
Интеллект-карты для конспектированияИнтеллект-карты для конспектирования
Интеллект-карты для конспектирования
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
Мастер класс по алгоритмам. Часть 2
Мастер класс по алгоритмам. Часть 2Мастер класс по алгоритмам. Часть 2
Мастер класс по алгоритмам. Часть 2
 
Code retreat @ крешкурс2013
Code retreat @ крешкурс2013Code retreat @ крешкурс2013
Code retreat @ крешкурс2013
 
Software Engineering. Введение в специальность. Что дальше?
Software Engineering. Введение в специальность. Что дальше?Software Engineering. Введение в специальность. Что дальше?
Software Engineering. Введение в специальность. Что дальше?
 
Software engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требованияSoftware engineering. Введение в специальность. Проектирование, требования
Software engineering. Введение в специальность. Проектирование, требования
 
Машинное обучение (Открытый семинар по средам)
Машинное обучение (Открытый семинар по средам)Машинное обучение (Открытый семинар по средам)
Машинное обучение (Открытый семинар по средам)
 
Cистема подготовки разработчиков @ CoIT
Cистема подготовки разработчиков @ CoITCистема подготовки разработчиков @ CoIT
Cистема подготовки разработчиков @ CoIT
 
AI challenge 2011
AI challenge 2011AI challenge 2011
AI challenge 2011
 
Highload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексыHighload: специализированные высокопроизводительные индексы
Highload: специализированные высокопроизводительные индексы
 
Highload в контуре @ DUMP 2011
Highload в контуре @ DUMP 2011Highload в контуре @ DUMP 2011
Highload в контуре @ DUMP 2011
 
Основы Di контейнеров
Основы Di контейнеровОсновы Di контейнеров
Основы Di контейнеров
 

Разработка ПО. Введение в специальность 1