А что тяжелее слон или кит?

Март 11th, 2008

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

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

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

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

Далее идут задачи, которые я считаю сложными. Думаю, люди с другим опытом считают другие задачи сложными.

1. Работа с hardware.

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

Плюс, при работе с hardware очень тщательно нужно следить за разными таймаутами и таймингом.

2. Закрытые библиотеки неизвестных фирм

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

3. Сложные математические разработки

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

Вот, пожалуй, это я и считаю сложными задачами.

Хотелось бы услышать ваше мнение, что для вас сложная/тяжелая задача?

Пора ли уходить с работы?

Март 9th, 2008

Я, думаю, многие люди задают себе вопрос. Я чувствую, что на работе, я делаю не то, что я хочу и должен делать и я могу больше. Стоит ли мне уходить и стартовать свой бизнес?

Я бы сказал, единственного и правильного ответа нет.

Есть два ответа

а) Если работа не доставляет вам удовольствия, попытайтесь начать делать на ней что-то интересное. Причем не спрашивайте начальство, а просто возьмите и начните делать более сложные задачи, интересные задачи и т.п. Когда у вас это наладиться, то уже можно поговорить, о том, чтобы это стало вашими официальными обязанностями. (Запомните – победителей не судят).

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

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

Немного о том, что нужно, чтобы стартовать бизнес вы можете прочесть в моей статье о старте бизнеса.

Оба выхода могут быть интересными и не такими уж страшно рискованными, как кажется.

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

Так как ответы на вопросы: «Мне скучно работать», «Мне не хватает денег», «Мне хочется сделать что-то свое» абсолютно разные.

P.S Кстати, несколько статей, которых я выкладывал в момент старта блога и поэтому вы могли их еще не прочесть:

Закон всемирного тяготения.

Услуги vs. Продукт (положительные и отрицательные стороны)

Солдат мечтает стать генералом…

Миф о свободе

Умение оценить нерабочее время.

Март 9th, 2008

Очень у многих (особенно  у наемных рабочих) есть проблема, что они не ценят/не оценивают свое свободное время.

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

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

Тем не менее, нужно иметь какую-то внутреннюю оценку стоимости своего нерабочего времени. Тогда получается, если вы имеете оценку нерабочего часа условного говоря $2/ч, то вы не станете тратить 4 часа, на поиск скидки в $2 доллара.

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

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

Как мне кажется средняя оценка внерабочего времени для людей равна от трети до половины цены рабочего времени. И чем легче можно произвести конвертацию в обе стороны (заработать больше или взять выходной), те ближе она должна подходить к цене рабочего времени.

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

Март 6th, 2008

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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