Archive for the ‘Разное’ Category

Благодарности тем, кто на меня ссылается.

Понедельник, Март 24th, 2008

Вот те, люди/сайт которые на меня больше всего ссылаются и принесли больше всего посетителей. Загляните к ним, если хотите.

А если кто-то из нижеперечисленных — это вы, то огромное вам спасибо, что обо мне пишите. 😉

Корпоративные благодарности:

itblogs.ru
developers.org.ua
it4business.ru, он же Слава Панкратов
netvibes.com
bloglines.com
live.cnews.ru
psylive.ru

Персонально/блоговые благодарности:
Крайнов
Фриц, он же Морген
У Wada
Сергей Корнилов
vgarnick.livejournal.com
dz.livejournal.com
rssh.livejournal.com
100blogov.blogspot.com
Тюшков Николай
gem-tmp.livejournal.com

Куча г. не станет золотом.

Понедельник, Март 17th, 2008

Одна из самых крупных проблем в IT, что гигантское количество менеджеров считают, что количество переходит в качество и что если написать кучу говнового кода, а потом посадить кучу молодых программистов, которые его будут фиксить день и ночь (на самом деле, добавляя зачастую тот самый говно-код), то в один прекрасный день продукт должен заблестеть всеми красками золота.

Так вот, вне зависимости от того, сколько времени будет потрачено по латанию плохого кода, он не станет хорошим. Скорее он может только стать от этого хуже.

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

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

P.S. Кстати, это непосредственно связано со статьями:

Не позволяйте планке падать

Ремонт нельзя остановить, его можно только закончить.

Тестер тестеру рознь.

Четверг, Март 6th, 2008

Несколько мыслей о том, что должно делать QA подразделение с ошибками и тестированием.

— То, что можно автоматизировать – нужно автоматизировать

Тут все просто. Если что-то может делать машина, то пусть она это и делает, на то мы существа и наделенные ленью.

Обратная сторона медали, если что-то автоматизируется плохо — нельзя тратить кучу времени пытаясь таки это автоматизировать.

— Все ошибки должны быть в системе багтрекинга

Нету большего врага QA и Dev подразделения, чем ошибки, которые передаются как предания — наскальной живописью, сказками и т.п.

— Ошибки должны иметь настолько дотошное описание, чтобы человек с улицы мог их повторить.

Экономия 30 секунд на описании ошибки выливается потом, в несколько часов попыток ее повторить, обсуждения с тестерами и т.п.

Кстати, это должно включать версии тестируемого продукта и детали, на какой конфигурации все тестировалось.

Ошибки должны быть приоритезированы

Иногда QA это делают сами, иногда с менеджерами, иногда с разработчиками. Но в конечном итоге, ошибка типа «программа не устанавливается вообще», должна быть выше приоритетом, чем «показ лишнего пикселя в диалоге, которые запустит 1 из 1000 пользователей».

— Раз в некоторое время система контроля ошибок должна прочищаться

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

Этот мусор зачастую тяжело отделить каким-то автоматическим фильтром и приходится постоянно его видеть.

QA отдел (из своего названия) должен гарантировать, что все крупные баги должны быть найдены

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

— Тестирование должно быть планированным и эффективным

Всегда должен быть план, что будет тестироваться, как будет тестироваться. Сколько времени на это отведено. И за это время QA должно найти как можно больше серьезных багов.

Ну, и как добавок к статье, скажу, что внутри фирмы обычно QA занимает одну из двух позиций:

— отделение неформально подчинено программистам

То есть программисты и сами могли бы протестировать, но работу эту сбрасывают на QA отделение так как труд тестеров стоит дешевле и у них не такой «замыленный» глаз.

Проблема этой схемы, что тестеры в такой ситуации фактически не имеют права голоса и получается, что зачастую программистам удается «задавить» авторитетом тестеров и продукт выходит с крупными дефектами.

— отделение программистов неформально подчинено QA

Обычно это происходит, когда QA назначают ответственных за выпускаемый продукт. То есть, только когда QA менеджер говорит, продукт нормального качества, то продукт выходит в свет.

Тут складывается обратная ситуация, обычно тестировщикам удается «задавить» программистов и продукт перешлифовывается.

Нормальная ситуация, когда эти два отдела работают отдельно и менеджеры отделов решают когда выпускать или не выпускать продукт. Зачастую ситуация с перекосом в одну сторону происходит, если существует всего один менеджер, которые управляет обеими отделами. В таком случае его субъективное мнение клонит равновесие в одну из сторон.

Решаем нерешаемые проблемы.

Понедельник, Февраль 25th, 2008

Сначала немножко о себе. В какой-то момент, я заметил, что меня считают хорошим (а некоторые даже отличным) программистом. И вот, недавно я задумался, а собственно говоря с чего это меня им считают?

Вот некоторые мои характеристики:

— у меня плохая память (API на память я не помню)

— код чаще всего я пишу не слишком аккуратно

— архитектуру, конечно пытаюсь поддерживать, но тоже нельзя сказать, что я великий архитектор

— языки программирования (например тот же C++ на котором постоянно пишу) знаю весьма поверхностно

— техническую документацию читать не люблю

В общем, по всем этим данным должен я быть хорошим середнячком, но не более того. И, тем не менее, есть два секрета, которые позволяют мне быть на две головы выше обычно середнячков, да и многих хороших программистов.

Итак, открывает секреты (повышая тем самым себе конкуренцию):

А) Я глубоко убежден, что нерешаемых задач нету. В тот момент, когда даже хорошие программисты бросают задачу с фразой: “Это сделать нереально”. Я продолжаю идти вперед и чаще всего мне таки нахальством/упорством удается ее добить.

Нет, я не умнее, я не дальновиднее, я не более знающий чем другие программисты. Просто, у меня другое кредо. И там где другие видят препятствие (по крайней мере в программировании), я вижу вызов на который надо ответить.

Как сказал один мой знакомый (привет тебе Шура), что есть что-то в моем характере граничащее с понятием хуцпа (я этого слова год назад еще не знал).

Б) Бывают задачи, которые требуют для решения слишком большого количества времени/ресурсов и т.п.

Они не является нерешаемыми задачами. Точнее такие задачи являются не решаемыми из-за внешних ограничений. И вот тут самый важный секрет. Есть достаточно много хороших программистов готовностью бросить вызов нерешаемой задачей, но обычно они пасуют перед задачей решение которой лежит вне предела их досягаемости.

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

В общем, решение таких задач лежит не в техническом поле, а в управленческом. И все, что нужно – задать себе вопрос, а какую задачу мы могли бы решить в нужные сроки и с нужными ресурсами?

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

Так, что я не хороший программист. Я человек, который умеет решать нерешаемые проблемы в программировании.

P.S. Я сечас всячески пытаюсь перенести эту область своих умений в бизнес, но похоже это не так просто как казалось изначально, что только придает прелести этой задаче 😉