Добрый день.
В выпуске: баги и дыры; архитектура систем; разработка ПО; отладка приложений; тестирование ПО и тестировщики; инструменты автоматизации; администрирование систем; вертикаль; эпизоды.
Баги и дыры
• Хорошо сделанный костыль является протезом, или история одного бага.
• Пара камушков в огород сервисов Google и несколько других забавных элементов пользовательского интерфейса.
• Посадка челнока на Марс девять лет назад могла сорваться из-за бага в программном обеспечении. The problem was a combination of a DOS library design flaw, a bug in some 3rd party software, and several configuration errors.
• Баг в KDE, имеющий отношение к работе с web cookies, вольготно просуществовал в течение десяти лет.
• Matt Swanson рассказывает про баг в MATHLAB-скрипте, над разгадкой которого он бился три недели.
• Подборка забавных сообщений в пользовательском интерфейсе.
• Heisenbug и принцип неопределенности Гейзенберга: пример бага, у которого непросто предсказать поведение.
• Несколько безобидных багов в вычислениях и сообщениях об ошибке заставляют пользователя улыбнуться и продлевают ему жизнь.
• История о том как был найден баг в системе безопасности Facebook и получено справедливое вознаграждение.
• Linus Torlvalds не стесняется в выражениях, когда баг в ядре Linux сказывается на пользовательском коде, а разработчик ядра отказывается этот баг признать.
Архитектура систем
• Архитектура поисковой машины DuckDuckGo: не боги горшки обжигают.
• Архитектура системы, обрабатывающей миллионы транзакций по кредитным картам: Hadoop + Amazon Web Services + NoSQL.
• Почему сервис Pinterest держит свою инфраструктуру в облаке, а не экономит деньги путем размещения серверов на своей площадке?
• Сложные информационные системы: предпосылки для сбоев в их работе и подходы к предотвращению таких случаев.
Разработка ПО
• StackOverflow.com -> Ctrl-C -> Ctrl-V -> Mission complete.
• Экстремально программирование без экстремального менеджмента никуда не годится.
• Несколько полезных советов разработчикам приложений под IOS, оглядываясь на пройденный путь.
• Разработчик передал свою работу на аутсорсинг в Китай и проводил время на Reddit. Совершенно точно достоин позиции менеджера.
• О стилях программирования: каждая строчка кода появляется на свет с первородным грехом.
• Базовые знания о продолжительности операций, которые должен знать каждый разработчик.
• Если ряды разработчиков тают, у оставшихся исчезает страх неудачи.
• Разработка продукта с открытым кодом: определить цели, выбрать лицензию, сделать добавление кода удобным, версионность в системе управления кодом и другие аспекты.
• Секунды координации времени добавляют хлопот программистам. На помощь приходит бомбардировка Земли астероидами.
• Из лимона лимонад: техническая ошибка может обеспечить занятость на долгосрочную перспективу.
• Отличная метафора для посвященных: как выглядит парадигма “as/I want/so that” в диалоге семейной пары.
• Larry Page (Google) призывает компании не драться в одной песочнице, а создавать что-то новое: “If you’re not doing some things that are crazy, then you’re doing the wrong “things“.
Отладка приложений
• When in doubt, turn on Tracing: информация о состоянии продукта может лежать совсем рядом.
• Mark Russinovich рассказывает о том как Sysinternals Autoruns позволяет победить ransomware (троянские программы, требующие от пользователя выкуп).
• Alan Page рассказывает: что каждый тестировщик должен знать об отладке приложений.
Тестирование ПО и тестировщики
• Что наша жизнь? Игра! Jonathan Kohl предлагает внести элементы игры в процесс тестирования ПО.
• 83% участников группы Automated Functional Testing в Linkedin полагают, что свои преимущества есть как у автоматизированного, так и у ручного тестирования.
• Alan Page (Microsoft) делится своими мыслями о будущем тестирования. Чем будут заниматься тестировщики по мере совершенствования процесса разработки ПО?
• Как можно оценить уровень тестирования продукта по шкале Lean Software Development?
• Joel Montvelisky сравнивает тестировщиков с военными разведчиками и доказывает свою точку зрения.
• Тест-инженеры в Google: в чем заключается их работа и почему она важна?
Инструменты автоматизации и модульные тесты
• Разделение работы с файлом и его открытия позволит создавать более эффективные модульные тесты.
• Adam Goucher раскладывает по полочкам недостатки применения Selenium IDE и подобных инструментов при создании эффективных автотестов.
• Adam Goucher делится подборками материалов по автоматизации тестирования ПО (1, 2, 3, 4, 5, 6, 7, 8).
Администрирование систем
• Подстелить соломку заранее: структурированная информация о конфигурации SQL-серверов и базах данных пригодится в критическую минуту.
• Grig Gheorghiu анализирует свои ошибки: что произошло после выполнения “ci /etc/passwd” вместо “vi /etc/passwd” и как нужно поступать в таких случаях.
• Отключать или не отключать Java в браузере? Каждый решает для себя сам.
Вертикаль
• Нужна помощь? Обратись к начальнику, чтобы больше не просить никогда.
• Порой обретение хорошего начальника может оказаться важнее повышения зарплаты: если, конечно, начальник не притворяется.
• Настоящий разработчик учитывает некомпетентность аналитика и не гонит волну на своего менеджера (1, 2).
• Как прозвучит диалог при аренде автомобиля, если он будет проходить так же как интервью работодателя с программистом?
Эпизоды
Б1. Тишина какая! Где тестировщик?
Б2. Бумажки на Scrum-доске передвигает.
Б1. А нам приказал долго жить?
М1. Тестировщик обновил свой профайл в Linkedin. Работник он хороший. Жалко, что его что-то не устраивает.
М2. Нам нужны мотивированные сотрудники. Поощрить его мы не можем – нет бюджета. Значит, нужно срочно увольнять!
Т. По-нашему, это баг.
Р. По-нашему, это код. Баг – это по-вашему.
М1. У меня в подчинении три менеджера проектов, которые справляются со своими задачами и даже успешно ставят их перед собой. Зачем нужен я?
М2. Если твой начальник мудр, то успехи твоих менеджеров – это лучший показатель твоей работы.
М1. А если мой начальник мудр, но не очень?
М2. Тогда берешь задачу, с которой все хорошо, но на совещании говоришь, что “все плохо”, а в следующий раз – “меры приняты, усё готово”. И дальше по кругу – с другими задачами!
М1. Отличная идея! А то я уже подумывал: “Ну как же они без меня могут справляться, надо копнуть и что-нибудь найти!”
Всего доброго в последнем месяце зимы!
Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.