Показаны сообщения с ярлыком программисты. Показать все сообщения
Показаны сообщения с ярлыком программисты. Показать все сообщения

воскресенье, 2 сентября 2012 г.

Не будите программиста!

dilb1

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

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

Ну вобщем хватит предъистории. Как работает программист.

Работа программиста - это СОН.

Звучит нелепо, правда?

Если вы хотите представить что именно делает программист во время работы, то легче всего это представить именно так. Он спит!

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

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

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

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

Я не фигурально выражаюсь. Это БУКВАЛЬНО снится. Программист при решении задачи виртуально живёт в создаваемом мире химер, похожих каким-то образом на условия решаемой задачи.

Внешне наблюдение за работающим программистом это тоже самое что наблюдение за спящим человеком. Вы вот сразу засыпаете когда решаете отойти ко сну?

Большинство людей процесс засыпания воспринимают как определённый ритуал. У кого-то он довольно короткий, а у кого-то довольно сложный и длинный. У кого что. Кому-то надо непременно почитать перед сном, кто-то не засыпает если тридцать приседаний не выполнит перед тем как лечь. Так или иначе отход ко сну у каждого происходит по своему и это не просто ЧИК - и заснул. Хотя бывает у некоторых и так.

Вот тоже самое и в работе программиста. Процесс начала работы это тоже самое. Программист не может просто сесть и начать работать точно также как вот вы не можете сказать себе "СПИ УЖЕ СКОРЕЙ!" и отключиться. И общего какого-то способа тоже нет, как нет его в ритуале засыпания.

Кто-то вот считает баранов, которые будучи вызваны к жизни этим вот самым процессом счёта вынуждены потом как-то дальше жить у нас здесь в Новой Зеландии. А кто-то фантазирует. Кто-то следит за своим дыханием, а кто-то просто прилепит чаю с ромашкой и готов.

Это ведь ещё и меняется со временем. Сегодня вот вы легли спать и всё - уже сладкие грёзы. А завтра ворочаетесь час, два, три и ну никак. Тоже самое и в работе программиста. буквально тоже самое.


Ну и что делать всвязи с этим?

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

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

Представили?

Вот это именно так выглядит для нас - программистов. БУКВАЛЬНО ТАК.

Это вам со стороны кажется что вы просто подошли и спросили который час.

А давайте я вас подойду и спрошу в три часа ночи который час?
Чего страшного-то? Ну и что такого что вы только что заснули?
Я просто спрошу, вы ответите и спите дальше. Чего такого-то?

Так легче понять я думаю будет. На таком примере.

Вот вы представляйте что от вашего сна зависит ВСЁ! Всё при всё. Вот от того как вы сегодня поспите зависит будет завтра чего дома жрать или нет. Зависит будет ваша дочть замужем или нет. Вырастет ваш сын неудачником или добьётся чего-то в жизни. Всё это зависит от того как продуктивно вы сегодня поспите.

Представили?

И вот вы собираетесь начать этот сон. Этот вот самый сон от которого ВСЁ зависит и вы это отчётливо осознаёте.

Скажите вот теперь. Как насчёт спать и одновременно немножко, краем глаза разговаривать, чуть чуть помогать сыну решать арифметику, немножко подглядывать в телевизор и чуть чуть так совсем немного съездить в магазин? Не на долго...

Как спится, сладко?

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

Вы бы так смогли КАЖДЫЙ ДЕНЬ?

Ну тоесть каждый день вот вы ложитесь спать ЗНАЯ что от вашего сна зависит всё при всё при всё и даже больше. И вот в процессе вашего сна происходит вот это всё - напоминания, запоминания, помогания, звонки, разговоры посторонние под ухом и всё такое. И так каждую ночь. Как вам такая жизнь?

Хотите?

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

Хотя не всё так трагично. Конечно есть люди которые способны кимарить просто постоянно. Водители такие бывают что чуть-ли не на каждом сфетофоре способны чуток вздремнуть. Ну вы знаете - им чуть бибикнуть приходится чтобы вернуть к жизни. Наверняка вы знакомы с такой ситуацией.

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

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

Ну потому что отвлекают постоянно. Потому что БУДЯТ же бля постоянно! Потому что люди не понимают что ты же спишь и что их ебучая менеджерская "организационная" активность она на самом деле только мешает работать. Большинство людей НЕ программистов этого не понимают.

Я надеюсь что осознав аналогию работы программиста со сном может быть люди лучше поймут как надо обходиться с программистами и откуда вообще берутся хорошие программы. Поймут наконец что вот этот ебучий ЖЖ - это то что пишу и читаю ПЕРЕД СНОМ. Вот также как вы. Вы не можете спать пока неначитаетесь или пока телевизор не насмотритесь. Не можете ведь?

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

Хотите хороших программ?

Хотите чтобы ваш муж-программист был успешен и заработал все деньги?

Хотите чтобы ваши подчинённые программисты наконец-то сделали всё как надо?

Тогда вот вам простой рецепт:

НЕ БУДИТЕ СЛИШКОМ ЧАСТО ПРОГРАММИСТА!


PS взято отсюда

пятница, 27 июля 2012 г.

Самая востребованная профессия в US по сумме критериев– IT Architect

best_job

2010

Нашел забавный рейтинг профессий от 2010 года упорядоченный по сумме критериев high pay, quality of life, job growth. Итак что же мы видим? По деньгам лидируют медики, а вот по сумме критериев (включающих удовлетворение от работы) – Айтишники.

list1

2011

Еще похожий рейтинг перспективных профессий за 2011.

2012

И рейтинг самых востребованных IT позиций (в основном WEB) за 2012й. 3е место – неплохо..

Digital-Creative-Jobs-Salary-Guide

вторник, 27 марта 2012 г.

Популярные языки разработки

Судя по статистике самый мейнстрим это Java, С#, C++, PHP.

Но всегда интересно посмотреть на детали.

 

TIOBE Software рисует такой топ-20.

language-popularity

 

На Github’е только “модные” языки в топе

languages-on-github

 

F(stackoverflow , github)

А эта картинка самая интересная: по вертикали статистика вопросов по языку на http://stackoverflow.com , по горизонтали популярность на http://github.com .

Хорошо заметно “пустоты” разделяющие мейнстрим ( а следовательно и $$$ ) от нишевых \ редких языков программирования.

edd645c58791a0dcbbe956bb39a441c1

четверг, 16 февраля 2012 г.

Keep it simple!




«I really don't like programming.
I built this tool to program less so that I could just reuse code. PHP is about as exciting as your toothbrush. You use it every day, it does the job, it is a simple tool, so what? Who would want to read about toothbrushes?

I was really, really bad at writing parsers.
I still am really bad at writing parsers. We have things like protected properties. We have abstract methods. We have all this stuff that your computer science teacher told you you should be using. I don't care about this crap at all.
There are people who actually like programming. I don't understand why they like programming.

I'm not a real programmer.
I throw together things until it works then I move on. The real programmers will say «yeah it works but you're leaking memory everywhere. Perhaps we should fix that.»

I'll just restart apache every 10 requests.»

Rasmus Lerdorf

среда, 12 октября 2011 г.

Как прекратить писать код


Видео выступления Андрея Аксенова (ведущий разработчик таких проектов как Kings Bounty, Sphinx) на конференции Application Developer Days 2010 рассказывает о том как устроен идеальный код, зачем программисту голова и как все таки прекратить писать код.

Одно из лучших видео на тему. Осторожно много юмора && самоиронии


пятница, 7 октября 2011 г.

Матрица компетентности программиста




Оценил себя честно вот по этой шкале , оригинал in english



Теория
структуры данных 3
алгоритмы 2
системное программирование 3

Навыки
контроль версий исходников 2
автоматизация build'ов 3 а то и больше
автоматизированное тестирование 3

Программирование
декомпозиция задачи 3
декомпозиция системы 2 и то с натяжкой ибо редкое это дело
общение 3 ну или почти 3
организация кода в файле 2 больше у нас не принято
организация кода между файлами 3
организация дерева исходников 3
читабельность кода 3 стараюсь чтобы было 3 но не всегда на это есть время
Безопасное программирование (defensive coding) 2
обработка ошибок 3
среда программирования (IDE) 2
API 2
фреймфорки> 2
требования 3
скрипты 2
базы данных 2 но расту в сторону 3

Опыт
языки и профессиональный опыт 1 от ФП тошнит увы
годы профессионального опыта использования платформы 3
годы профессионального опыта 2
Знание предметной области 1 постоянно делаю что-то разное


Знания
инструментарии 1 люблю только IDEA
используемые языки 2
знание codebase 2 если у меня 3 то значит просто проект маленький :)
знание новейших технологий 2
знание внутренних аспектов платформы 2
книги 2
блоги 3 хаха с учетом того что я сюда пишу :)

понедельник, 3 октября 2011 г.

Манифест, бл*ть!






Манифест, бл*ть!



Мы — сообщество программистов, которые вдоволь намучились с разнообразными методологиями разработки.


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


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


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





Что говорят менеджеры?Что им нужно на самом деле?Что мы делаем в итоге?
Продуктивная командная работаСотни рабочих часов в неделюМы пишем код блять!
Качественные продукты100% покрытие кода юнит-тестамиМы пишем код блять!
Учитывание пожеланий пользователейВыполнять любой каприз заказчикаМы пишем код блять!
Продукт должен быстро эволюционироватьПостоянные изменения требований и пустопорожние обсуждения новых фичМы пишем код блять!



Мы уверены, что вся хрень, написанная в первых двух колонках, абсолютно никому не нужна. Есть только одно дело, которым действительно нужно заниматься: писать код блять!

четверг, 22 сентября 2011 г.

Внутреннее устройство Left 4 Dead (Source engine)

На просторах сети нашел интересную презентацию о том, как работает AI, pathfinding и прочие аспекты в игре Left 4 Dead от разработчиков Valve (Counter-Strike 1.6, Counter-Strike:Source, Half-Life 1-2, Portal 1-2



Краткое саммари целей разработчиков этого шутера.

• Понятная игровая механика, которая более-менее воспроизводится от уровня к уровню.

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

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

• Реиграбельность — основные подходы.
- структурный рандом — Valve, исходя из опыта предыдущих игр, говорит о том, что при генерации среды, игроки для выживания не тупо запоминают, что где на уровне, а вынуждены менять тактику, и собственно нарабатывать скилл — это и привлекает геймеров;
- рандом в игре не произвольный, а задаваемый различными граничными значениями, который задает дизайнер уровня; если чтото генерируется, то пачкой\сгустками по карте; нет ни равномерного засеивания ни пустых локаций;
- AI-директор использует уровень «стресса» каждого игрока, чтобы понимать, стоит его атаковать или нет, % зомби, которые должны атаковать спереди и сзади, для всей карты рассчитывается градиент, чтобы понять, какие координаты приближают к убежищу, а какие нет (т.е. где конечная цель);
- для выгрузки лишних зомби используется техника Active area set, т.е. все зомби которые отстали, сгенерируются потом впереди; на локациях которых мы не видим нет предметов и зомби для экономии ресурсов; запоминается какие локации игрок видел а какие нет и т.п.

• Драматизм игры.
- популяции мобов, атаки — всё делается волнами. т.е. атака нарастает, затем затишье;
- уровень стресса считается при каждом ударе зомби по игроку;
- по мере того как команда отбивается и недостаточно мобов атакует, Директор может добавлять повышенные количества мобов, чтобы повысить уровень стресса и так же резко их убирать, видимо этим и достигается то, что в игре атака временами так резко обрывается, и бесконечная орда так легко пропадает.



The AI Systems of Left 4 Dead


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



примеры видео

1я часть



2я часть

среда, 14 сентября 2011 г.

Аналогии кодеров и геймеров

И там и там


  • бинарное деление на "профи" и нубов, каждый кто лучше тебя - профи (или "задрот"), кто хуже - новичек (или "noob") и не достоин внимания :) .. наиболее явно проявляется на интервью - мужики рассказывают о том какой крутой проект они пилят, и с улыбкой слушают твои доводы о том что ты вроде тоже не в носу ковырялся (и это не зависит от компании, даже в средней есть умельцы загибать пальцы)
  • формируется некоторая тусовка людей со скиллами, со своими ценностями и со своим видением идеального про-спеца; минимальный уровень "трюков" который с вами будут обсуждать - что-то около 80% от максимума в команде, т.е. простые вещи не вызывают интереса 
  • в команде быстро выявляется неформальный лидер который "тащит" за собой остальных, независимо от их настроя, даже когда перспективы решить поставленную задачу туманны  и шансов на "победу" нет :)
  • при разговоре на кодерском собеседовании оппонент тупо сравнивает твой скилл с тем что он знает, и с локальным стандартом в его окружении\компании
  • *NEW и там и там человек редко верит что есть кто-то выше его по скиллу, пока его не порвут на тряпки 8)
  • *NEW самый скилловый старается держать дистанцию и всем видом показать что он де суров и знает ответы на все вопросы.. ну а если не знает\налажал то ты\команда не так поставили задачу\не подстраховали итп)
  • как правило - довольно молодой коллектив, отсюда и максимализм, и желание помериться известно чем по любому поводу...  особенно у интервьюверов (за редким исключением) принято показать кандидату что мол нифига то ты нубас не знаешь :] 
  • и там и там при высоком уровне исполнителей даже без контроля, подготовки, тренировок может выйти достаточно хороший результат; при плохих кадрах и там и там FAIL.
  • не так важно какая роль у тебя в команде - тим лид, капитан, менеджер; куда важнее общий средний скилл команды, навыки каждого персонально, и известность команды; быть средним звеном в топ-team лучше чем быть главным в никому неизвестном болоте.