К основному содержимому
#Software

Совершенный Код (Code Complete)

#Software #SoftwareDevelopment #SoftwareArchitecture #Devops #Engineering

Эта книга Стива Макконела в свое время была хитом, а мне она очень помогла на пути становления меня software develoment engineer. Году в 2006 я впервые стал писать код за деньги и делал это в компании, где предыдущий отдел веб-разработки разошелся полностью. Новый руководитель отдела пришел и начал наводить порядок и я перешел из техподдержки в стажеры-разработчики. С кодовой базой мы изначально были на вы, процесс деплоя был ручным, тестирования не было, часть систем надо было планово перезагружать раз в час, иначе они падали сами, но с непредсказуемыми последствиями. На этом фоне книга Стива дала мне ответы на вопросы, а всегда ли так больно разрабатывать программное обеспечение или бывают менее болезненные способы. После этой книги я полюбил использование метафор для сложных концепций, понял важность обеспечения качества, узнал про проектирование софта и много чего еще:)

Сама книга выглядела как монументальный кирпич почти на тысячу страниц формата А4 и состояла она из 7 частей.

I. Laying the Foundation - как раз здесь про метафоры, сбор требований, продумывание вариантов и принятие ключевых решений II. Creating High-Quality Code - про проективание, классы и методы, защитное программирование и важность использования псевдокода III. Variables - про принципы использования переменных, их именование и типы данных (как обычные, так и нестандартные) IV. Statements - про организацю кода, условные операторы, циклы, нестадартные управляющие структуры (goto и рекурсию), табличные методы и общие вопросы управления выполнением V. Code Improvements - про качество программного обеспечения (с тех пор многое здесь улучшилось:)) VI. System Considerations - немного статистики про большие проекты и как размер влияет на разработку, как управлять ей (тут тоже многое поменялось с тех пор, например, инкрементальные подходы стали доминирующими) VII. Software Craftsmanship - часть про мастерство. Тут интересно, что когда-то давно engineering и craftmanship противопоставляли себя друг другу, но теперь ясно, что инженерные подходы общеприняты:) Про это можно посмотреть выступление Dave Farley с goto 2022 "Taking Back “Software Engineering” – Craftsmanship is Insufficient" и интересно посмотреть именно его, так как он в свое время топил за craftmanship

P.S. Я не уверен, что эта книга сейчас настолько же актуальна как 30 и 20 лет назад, но не вспомнить ее в своем канале я не мог:) Кстати, у Стива есть еще книга "Еще более эффективный Agile" ("More Effective Agile: A Roadmap for Software Leaders"), в которой автор хорошо проходится по процессам разработки (а точнее конкретно по Scrum) и я про нее вспоминал в отдельном посте.

#Software #SoftwareDevelopment #SoftwareArchitecture #Devops #Engineering