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

Как стать хорошим разработчиком?

90 обучающих материалов по разработке ПО

1764
2

На прошедшем 3-го октября JS Meetup мы коснулись очень важной и интересной темы - материалов, содержащих знания, которые лежат в основе работы разработчика программного обеспечения. Не секрет, что зачастую мы уделяем недостаточно внимания теоретической базе, а сосредотачиваемся на практике. И только опыт дает нам возможность осознать, что без фундаментальных знаний практика превращается в ночную прогулку по полю граблей. Поэтому, по достаточно многочисленным просьбам участников мероприятия, мы решили опубликовать список материалов, которые, по мнению команды INOSTUDIO, будут очень полезны для укрепления фундамента знаний по разработке ПО.

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

Алгоритмы и структуры данных

Курсы

MIT

  1. Introduction to Computer Science and Programming 2008, 2011
  2. Structure and Interpretation of Computer Programs
  3. Introduction to Algorithms
  4. Computer Language Engineering
  5. Mathematics for Computer Science
  6. Introduction to Algorithms (SMA 5503)
  7. Performance Engineering of Software Systems
  8. Dynamic Programming and Stochastic Control
  9. Advanced Data Structures
  10. Poker Theory and Analytics

Stanford

  1. Programming Paradigms
  2. Programming Methodology
  3. Machine Learning

Harvard

  1. This is CS50

Caltech

  1. Machine Learning

Lectorium

  1. Избранные темы Computer Science
  2. Введение в теорию информации
  3. Машинное обучение
  4. Компьютерная графика
  5. Алгоритмы во внешней памяти
  6. Формальные языки и синтаксический анализ
  7. Теория игр
  8. Современные технологии разработки ПО
  9. Базы данных
  10. Введение в теорию информацию
  11. Языки программирования и компиляторы
  12. Алгоритмическая теория информации
  13. Вероятностные методы в вычислениях
  14. Математическая статистика
  15. Алгоритмы для NP-трудных задач
  16. Основы дискретной математики
  17. Функциональное программирование
  18. Распределенные алгоритмы
  19. Технологии хранения и обработки больших объемов данных
  20. Линейное программирование
  21. Эффективные алгоритмы
  22. Виртуальные машины
  23. Параллельное программирование
  24. Алгоритмы и структуры данных
  25. Основы Java
  26. Основы программной инженерии
  27. Компьютерные сети
  28. Математические основы Computer Science
  29. Сложность вычислений и основы криптографии
  30. Видеолекции "Школы Анализа Данных" Яндекс

Книги

  1. Томас Кормен "Алгоритмы. Построение и анализ"
  2. Брайан Керниган, Деннис Ритчи "Язык программирования C"
  3. Харольд Абельсон, Джеральд Джей Сассман "Структура и Интерпретация Компьютерных Программ"
  4. Генри Уоррен "Алгоритмические трюки для программистов"
  5. Никлаус Вирт "Алгоритмы и структуры данных"
  6. Альфред Ахо, Джон Хопкрофт, Джеффри Ульман "Структуры данных и алгоритмы"
  7. Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульман "Компиляторы. Принципы, технологии и инструментарий"
  8. Дональд Кнут "Искусство программирования. Основные алгоритмы": Том 1, Том 2, Том 3, Том 4

Общие вопросы разработки ПО

  1. Грэди Буч "Объектно - ориентированный анализ и проектирование с примерами приложений на С++"
  2. Стив Макконелл "Совершенный код" 
  3. Роберт Мартин "Чистый код: создание, анализ и рефакторинг"
  4. Эндрю Хант, Дэвид Томас "Программист-прагматик. Путь от подмастерья к мастеру"
  5. Фредерик Брукс "Мифический человеко-месяц, или Как создаются программные системы"
  6. Чад Фаулер "Программист-фанатик"
  7. Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес "Приемы объектно-ориентированного проектирования. Паттерны проектирования"
  8. Мартин Фаулер, Кент Бек, Джон Брант, Уильям Апдайк, Дон Робертс "Рефакторинг. Улучшение существующего кода"
  9. Мартин Фаулер "Шаблоны корпоративных приложений"
  10. Кент Бек, Мартин Фаулер "Экстремальное программирование: планирование"
  11. Майкл Ховард, Дэвид Лебланк "Защищенный код"
  12. Чарльз Петцольд "Код. Тайный язык информатики"
  13. Джон Бентли "Жемчужины программирования"
  14. Том ДеМарко, Тимоти Листер "Человеческий фактор. Успешные проекты и команды"
  15. Питер Сейбел "Кодеры за работой. Размышления о ремесле программиста"
  16. Кент Бек "Экстремальное программирование: разработка через тестирование"
  17. Эрик Эванс "Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем"
  18. Ричард Фейнман "Вы, конечно, шутите, мистер Фейнман!"
  19. David Kushner "Masters of DOOM"
  20. Federico Biancuzzi "Masterminds of Programming: Conversations with the Creators of Major Programming Languages"
  21. Линус Торвальдс, Дэвид Даймонд "Just for Fun. Рассказ нечаянного революционера"

Отдельные технологии

.NET

  1. Эндрю Троелсен "Язык программирования C# 5.0 и платформа .NET 4.5"
  2. Джеффри Рихтер "CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#"

PHP

  1. PHP Manual
  2. Стандарты PSR
  3. Стандарты Zend

C++

  1. Герберт Шилдт "C++. Базовый курс"
  2. Бьярне Страуструп "Программирование. Принципы и практика использования C++"
  3. Бьярне Страуструп "Язык программирования С++"
  4. Андрей Александреску "Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны проектирования"
  5. Герб Саттер "Решение сложных задач на С++"
  6. Герб Саттер, Андрей Александреску "Стандарты программирования на С++"

Java

  1. Джошуа Блох "Java. Эффективное программирование"
  2. Бенджамин Эванс, Мартин Вербург "Java. Новое поколение разработки"

JavaScript

  1. Дуглас Крокфорд "JavaScript: сильные стороны"
  2. Addy Osmani "Learning JavaScript Design Patterns"
  3. Nicholas Zakas "Maintainable JavaScript"

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

Мы надеемся, что собранный нами список будет вам полезен, и что каждый найдет в нем что-то интересное.

UPD

В комментариях к статье были добавлены следующие источники:

  1. Роберт С. Мартин, Мика Мартин "Принципы паттерны и методики гибкой разработки на языке С#"
  2. Джон Скит "C#. Программирование для профессионалов"
  3. Роберт Мартин "Быстрая разработка программ. Принципы, примеры, практика"

Мы благодарим всех, кто остался неравнодушен к статье и разработке ПО в целом! Ждем ваших предложений!