четверг, октября 30, 2008

Не стреляйте в тапера...

Знаете, какая самая большая проблема тимлидов и менеджеров, вышедших из программеров? Перестать управлять написанием кода, и начать управлять достижением целей.
Казалось бы, чего проще? Однако, как тяжело дается людям эта простая истина. Всем, кто хочет стать хорошим тимлидом читать нетленку: Толик Тенцер «Урри, где у него кнопка?»

Visual Studio для русских гоблинов

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

вторник, октября 28, 2008

Application Architecture Guide - v2.0


А вот это уже интереснее. Сегодня J.D. Meier анонсировал выпуск "Application Architecture Guide - v2.0" (beta 1).
Это, конечно, не исчерпывающее руководство к действию, но на роль весьма полного справочника этот гайд вплне подойдет.
Если вас интересуют вопросы:
- когда клиент-серверная архитектура предпочтительнее 3-х уровневой?
- какими принципами следует руководствоваться при разработке role based authorization?
- как варианты развертывания влияют на архитектуру приложения?
- что надо учитывать при разработке слоя сервисов?
- чем отличается Direct Authentication от Brokered Authentication?
- что такое архитектурный стиль?
- и многое другое....
тогда однозначно это будет ваш настольный гайд.
Также рекомендуется в качестве эффективного средства от велосипедостроения.

Кто хочет попробовать .Net 4.0 и VS2010?

Кому интересно, уже доступен для скачивания первый CTP, пока только в виде Virtual PC 2007 image (7.5 Gb). Вот ссылочка.

пятница, октября 24, 2008

IT в России убьет не кризис а правительство

Не хотел писать про кризис, но видно придется.
Интересная статья Нужно немножко доплатить...
В дополнение к кризису правительство решило поднять Единый социальный налог. Софтостроители поняли, что им грозит пи#%@&ц.
Вот несколько цитат из статьи:

Дмитрий Лощинин, Люксофт:
"Нам нравится работать в России, но если здесь будут созданы неприемлемые условия для бизнеса, то нам придется отсюда уйти, переведя бизнес в другие страны"

Сергей Андреев, ABBYY Software:
"Фактически, любой зарплатный налог превращается в налог с оборота. Поэтому ИТ-компаниям необходимо добиваться специального налогового режима для своей отрасли"

Николай Пунтиков, Exigen Software:
"Люди, которые определяют государственную политику в области информационных технологий, страшно далеки от народа, во время президентства Владимира Путина был принят ряд полезных инициатив в области развития ИТ и инновационного сектора экономики, но с приходом Дмитрия Медведева ситуация изменилась. Исчезло упоминание ИТ в названии Минсвязи, затем мы получили мощный удар со стороны финансового кризиса, а теперь правительство усугубляет последствия, собираясь увеличить налоговые отчисления. Мы, конечно, не пропадем, но ситуация может привести к тому, что бизнес в России придется прекратить"



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

Результат не трудно предсказать: массовые увольнения всех, кого можно уволить (джуниоры разработчики, конфликтные разработчики - "примадонны", "лишние" тестировщики, а то и целые команды). Но и оставшимся не позавидуешь. Оставлять будут самых лучших и самых смирных. Потому что на оставшихся повесят работу уволенных. У тех, кто останется зарплату вероятно не порежут, но если у кого была белая зарплата -станет опять серая. А вот на немогочисленные новые позиции будут набирать уже на значительно более низкие ставки, потому как ситуация на рынке труда резко изменится, вакансий станет меньше а безработных программистов больше. Соцпакеты будут резать нещадно и в самую первую очередь. Про дополнительную мед. страховку, оплаченный фитнес и мобильный телефон можно сразу забыть. Если у вас в офисе есть кухня, следите, когда на ней исчезнет бесплатные кофе и печение, значит вот оно - началось :)
Ну как? Страшно?
Впрочем все может быть и по другому. Сокращение заказов на разработку продлится, я думаю, не больше года. Если правительство поддержит разработчиков, даст налоговую передышку, то большинство сможет спокойно пересидеть недолгий спад.

понедельник, октября 20, 2008

Вышел ASP.NET MVC framework beta

Scott Gu в своем блоге сообщает о выходе бета версии ASP.NET MVC framework. Там же есть ссылка для скачивания. Кроме того, Скот как всегда тщательно и подробно описывает все изменения которые появились в новой версии по сравнению с предыдущей.

Не новость конечно, но так, на память ссылка пусть будет.

воскресенье, октября 19, 2008

Идеальный программист

«Каждый охотник желает знать, где сидят фазаны»
Считалочка (физика, оптика).

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


Каждый менеджер хочет иметь в своей команде хороших программистов. Каждый программист хочет, чтобы его ценили, регулярно прибавляли ему зарплату и не заставляли работать в выходные.
Среди самих программистов есть мнение, что хороший программист – это продвинутый программист, тот который изучает последние технологии, методы и веяния. Сегодня актуально TDD, FDD, AOP, IoC/DI, и принципы ALT.NET. Что бы быть в струе, надо все это знать, все это юзать, и даже, если не лень, писать об этом в своем блоге. Это круто и необходимо для хорошей карьеры и зарплаты. Я должен вас разочаровать - но все это гламур, в самом уничижительном значении этого слова. Все это необходимый фундамент для хорошего программиста, но не более того.

Больше всего на рынке нынче ценится не "умный программист", и не "продвинутый программист", и даже не "опытный программист". Больше всего ценится "эффективный программист". Тем более это актуально для тим-лида. Любой менеджер проекта, отдаст пол своей проектной команды за одного такого. А уж найти «эффективного архитектора» который был бы и технически грамотным и не зацикленном на каком нибуть IoC-е, и вовсе проблема.

А кто такой «эффективный программист»? Почему недостаточно быть «умным» и «продвинутым»? Многие получают кайф от программирования как такового, с энтузиазмом изучают все новое, и вообще, считают это способом самовыражения. Спору нет, программирование процесс творческий, но не стоит забывать, что цель его достаточно прозаическая, а именно производство программного продукта и получение прибыли. И вот такие программисты "самовыраженцы", это просто головная боль для тех людей, которые занимаются организацией разработки. Умные, слов нет, все делают правильно и по понятиям, но проект завалят практически гарантировано. Просто будут сидеть и спорить, какой фрэймворк лучше прикрутить, и не заметят как дэдлайн прошел.

Вот недавно была история на одном проекте. Выпустили ребята первую версию продукта, были там недостатки определенные, но решили продукт развивать, набрали новых людей. Пришли ребята продвинутые, посмотрели на код первой версии (а надо сказать, что код там был дрянной) и решили, что нужен рефакторинг, компоненты выделить, архитектуру улучшить и все такое… Ну и занялись, заодно фрэймворк модный прикрутили, модульные тесты писать начали, для тестов весь дизайн пришлось переделывать. Оглянуться не успели - через два дня дэдлайн, надо показывать большому босу работающий прототип. Ну что делать, все в разобранном виде, к дэдлайну не успели. Устроили им разнос, прописали жесткие сроки, мэйлстуны. К новому сроку ребята поняли, что не успевают опять, сделали прототип на соплях с подпорками. Ну и дальше вся работа шла в жесточайшем таймауте и под прессингом руководства. Проект они закончили с задержкой на три месяца, качество было не очень, все были разочарованы, и измучены. Большая часть команды потом уволилась.

Вот такая печальная присказка. И ведь цели благие были: улучшить дизайн и код, чтобы сделать хороший продукт. Все верно. Только формулу надо было развернуть наоборот: сделать продукт с заданным качеством и функционалом и в срок, а для этого улучшить дизайн и код (среди прочего). Если бы разработчики думали именно так, то и проблем с проектом у них бы не было, ведь квалификации у них было достаточно.
Однако, вернемся к нашему «эффективному программисту». Нам понятно, знания и стремление к техническому совершенству это важно, но недостаточно для успеха. Не менее важна ориентация на результат, инициатива и надежность человека. Эти три качества превращают «умного» и «продвинутого» программиста в «программиста эффективного».

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

В общем, ребята, налегайте на soft skills, если хотите карьерного роста.

суббота, октября 11, 2008

Как составить резюме

Ну что, коллеги? Не пора ли обновить свои резюме? Кризис на дворе. Вполне возможно, что недостаток программистов скоро сменится недостатком рабочих мест для них. Шутка ;)

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

Конечно, сразу про самые характерные ошибки при составлении резюме:

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

2. В резюме нет ключевых слов. Надо понимать, что через руки человека, занимающегося подбором персонала проходят сотни резюме, и ищет он человека удовлетворяющего определенным, совершенно конкретным требованиям, на конкретную позицию. И ищет он по ключевым словам, например, «C/C++, ASM, WDK, Windbg», или «.Net, C#, WinForms, NHibernate». Если этих слов нет на первой странице вашего резюме, то оно моментально летит в trash. Особенно это актуально, когда отбором занимаются HR специалисты, они ориентируются только на ключевые слова в описании вакансии.

3. Заявленные навыки не подтверждаются в описании опыта работы. Если ваше резюме сразу не отправили в trash из-за отсутствия ключевых слов, с ним начинаются знакомиться подробно. Здесь важно, что бы все указанные вами навыки, нашли подтверждение в описании профессионального опыта (списке работ или проектов). Если вы упомянули о ASP.NET, работодатель обязательно поищет, в каком проекте и как вы использовали эту технологию. Если он не найдет этой информации в вашем резюме, он заподозрит вас во лжи, что очень неприятно. Я завернул огромное число резюме с формулировкой «указанные навыки не подтверждаются опытом работы». Что же делать, если вы технологию или язык знаете, но практического опыта его использования не имеете? Не стоит придумывать для этого несуществующий «опыт», поверьте мне. Это, конечно, поможет вашему резюме пробиться на следующую стадию отбора, но сразу всплывет на собеседовании. Различие в теоретическом знании, и знании подкрепленным опытом выявляются очень легко. Поэтому вы можете указать, что ваши знания носят теоретический характер, либо указать в разделе опыта учебный проект, на котором вы изучали данную технологию (если он, конечно, был на самом деле). Это особенно актуально для студентов, не стоит стесняться, в отсутствии опыта учебный проект тоже опыт.

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

5. Напишите, чего вы хотите. Часто забывают, что помимо перечня ваших знаний и умений, в резюме неплохо бы указать, на какую позицию вы собственно претендуете. Без этого все резюме можно выразить одной сакраментальной фразой «Кодирую на Java (C#, C++…) за еду (деньги, большие деньги…)». Кроме того, это поможет избежать недоразумений при дальнейшем общении, и вам не будут предлагать позицию саппортера или консультанта, когда вы ищите работу тимлида.

6. Не пишите много. Никто не будет читать до конца резюме на 5 страницах. Не забывайте, что резюме программиста, это довольно формальный документ. Не стоит засорять его художественным текстом наподобие: «Обладая осознанием высокой ответственности, которая присуща роли разработчика, я целенаправленно развивал навыки…». Возможно, такой стиль уместен в резюме рекламного агента, или PR менеджера, но у IT-шников так писать не принято.

7. Не пишите мало. В резюме должно быть достаточно информации для принятия решения. Как минимум там должны быть ваши контактные данные (некоторые забывают даже об этом), описание желаемой позиции, перечень навыков, описание опыта работы и образования. Описание опыта начинайте с последнего места работы (проекта), более ранний опыт описывайте более кратко.

8. Никогда не описывайте в своем резюме опыт не связанный с IT. Нет ничего нелепей «программиста C++ с богатым опытом растаможки коммерческих грузов». Я даже не знаю почему, но это очень негативно оценивается теми, кто читает ваше резюме.

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

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

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

- Контактные данные. Тут как обычно: фамилия, возраст, место жительства, контакты. Запомните, что никто не может требовать от вас писать в резюме свой домашний адрес и паспортные данные.

- Желаемая позиция. Пишите кратко «Разработчик Java начального уровня», или «Архитектор приложений, системный архитектор, руководитель группы».

- Перечень навыков, инструментов и платформ. Здесь должны быть те самые ключевые слова, что упоминаются в описании вакансии. Хорошо, если в перечне языков и инструментов указана продолжительность работы с каждым. Это важно для программистов. Для более продвинутых позиций важнее не перечень языков, а перечень навыков и предметных областей. Все перечисленные здесь пункты должны упоминаться в следующем разделе «Опыт работы».

- Опыт работы. Здесь перечисляем места работы и проекты в обратном хронологическом порядке (сначала последние). Для каждого проекта сформулируйте его описание в одном предложении (максимум в двух). Укажите, какие конкретно части вы разработали, какие роли выполняли (например, если вы наладили систему ежедневных сборок проекта, обязательно напишите об этом). Укажите продолжительность проекта и размер команды. Укажите используемые платформы, инструменты, и технологии. Если проект был чем-то важен, или имеет какие либо отличия, обязательно укажите об этом (например, «в ходе создания системы, мною был реализован первый соответствующий стандарту сервер OpenID на .Net»). Последние проекты описывайте подробно, более старые - кратко. Те, которые не коррелируют с описанием вакансии, можете вообще выкинуть (если проектов много). Данный раздел не должен быть более двух страниц.

- Образование, повышение квалификации, владение иностранными языками. Тут все понятно: ВУЗ, специальность, год окончания. Сюда же пишите курсы и сертификаты и год их получения.

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

Вот, пожалуй, и все. Но страждущие меня не поймут, если я вот так вот закончу, и не приведу образец резюме.
Поэтому, вот вам образец http://docs.google.com/Doc?id=dhksthk6_6fg3gq4 .


P.S. Я пока работу не ищу.