суббота, 24 октября 2009 г.

10 типов программистов, с которыми вы обязательно столкнетесь

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

#01: Гендальф

Такой тип программиста может успешно сыграть роль Гэндальфа во "Властелине колец". У него (или у нее! :) длинная борода по колено, глупая шляпа; может носить плащ или накидку зимой. К счастью для команды, на рабочем месте, это адепт белой магии, прямо как Гэндальф. К несчастью для команды, они должны будут терпеть часы рассказов Гэндальфа о том, как он или она шел в гору, по снегу, чтобы доставить перфокарты в далекий вычислительный центр. Гэндальф ¬¬– это ваш наилучший ударник IT-шного труда, но если вы попробуйте оставить его позади команды – это вызовет отчаяние.



#02: Мученик

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

#03: Фанатик

Следите за Фанатиком. Если он или она настигнет вас врасплох, и прижмет в угол, то вы будете обречены, прослушать трехчасовую лекцию о превосходстве Opera по сравнению с Firefox, или почему Playstation 3 лучше, чем XB 360. На рабочем столе Фанатика разложены плакаты, фигурки и другие безделушки, связанные с его навязчивыми идеями, скорее всего, привезенные из Японии. С фанатиками невозможно иметь дело, они тратят настолько много времени на свою одержимость (внутри и вне офиса), что они совершенно не понимают, когда нужно выполнять работу, для которой их наняли.


#04: Винс Нил

Это человек около сорока лет, который живет в далеком к 1984 году. Длинные волосы, потертые стираные джинсы и бандана. На протяжении рабочего дня, Винс сидит в офисе, напевая мелодии Bon Jovi и Def Leppard. И, в принципе, все не так уж и плохо, если бы песня "Pour Some Sugar On Me" не была бы так чертовски заразительной.

Винс – веселый человек и работать с ним – одно удовольствие, и на самом деле он очень опытный человек, но просто... никогда не взрослеет. Но Винс доставляет хлопоты, когда он или она пытается жить в стиле Rock-n-Roll; с длинными волосами на голове, и с берцами на ногах. И… достаточно сложно работать с теми, кто приходит на работу с похмелья каждый день.

#05: Ниндзя

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

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

#06: Теоретик

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

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

#07: Ковбой

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

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

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

#08: Десантник

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

#09: Посредственный Человек

"Достаточно хорошо" это лучшее, что вы можете получить от Посредственного Человека. Он или она всегда тратят больше времени для создания худшего кода, чем у кто-либо в команде. "Тише едешь – дальше будешь" – так можно описать проекты П.Ч. Но П.Ч. всегда просто "достаточно хорош" чтобы не быть уволенным.

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


#10: Евангелист

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

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



Оригинал статьи: 10 types of programmers you'll encounter in the field
Автор: Justin James

Перевод: Дмитрий Жарий

воскресенье, 16 августа 2009 г.

C# и Java – это языки будних дней, а Python и Ruby для выходных?

Результаты интересного эксперимента опубликовал Ден Лоренц в своем блоге. Используя официальный дамп базы данных сайта StackOverflow, он подсчитал с какой интенсивностью задаться вопросы по C#, Java, Ruby и Python.

Как оказалось, на протяжении всей рабочей недели, лидируют C# и Java, в то время, как на выходных активность идет на спад. В тоже время, на выходных активность вопросов по Ruby и Python возрастает.

Прочитать пост можно здесь:
StackOverflow Experiment Results

вторник, 21 июля 2009 г.

Perl, C# и регулярные выражения

Казалось бы, Perl и C# -- языки очень разные, но как оказывается, C# поддерживает стандарт де-факто регулярных выражений – Перл совместимые регулярные выражения.

Конечно же, для Perl регулярные выражения родные, и сними намного удобней работать именно в Перле, но, для того чтобы регулярные выражения заработали в C# -- достаточно просто взять и скопировать их из перлового скрипта.

Единственное что мне пока что не нравиться – это то, что регекспы в C# компилируется в момент выполнения. Таким образом, можно допустить ошибку где-то в тридесятом условии, в тридевятом вызове метода, и тогда вылезет исключение. В Перл регекспы проверяться в момент компиляции скрипта и банальные опечатки вылезают сразу же.

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

Напоследок хочу продемонстрировать на простом примере, что уже сейчас код на C# выглядит ненамного избыточней, чем его аналог на Perl.

Следующий код выводит дату и время из строчек массива variants:

#!perl
my @variants =
(
q~^92(28/10/2002)**&[19:10:50]@Comment: Text String"~,
q~^-06/02/2002*$21:55:45~,
q~^*13/08/2002*DX145&[22:50:20]@Comment: Text String~,
);

foreach my $variant ( @variants ) {

if ( $variant =~ m!([0-3][0-9]/[0-1][0-9]/[1-2]\d\d\d).+?
                       ([0-2][0-9]:[0-5][0-9]:[0-5][0-9])!x )
{
print "Date: $1; Time: $2\n";
}
else {
print "Failed to parse string: $variant\n";
}
}


И пример на C#:

using System;
using System.Text.RegularExpressions;

namespace RegexTest
{
class Program
{
static void Main(string[] args)
{
string[] variants = {
@"^92(28/10/2002)**&[19:10:50]@Comment: Text String""",
@"^-06/02/2002*$21:55:45",
@"^*13/08/2002*DX145&[22:50:20]@Comment: Text String",
};
Regex veriantRegex = new Regex(@"(?<date>[0-3][0-9]/[0-1][0-9]/[1-2]\d\d\d).+?" +
@"(?<time>[0-2][0-9]:[0-5][0-9]:[0-5][0-9])" );
foreach (var variant in variants)
{
Match match = Match.Empty;
if ((match = veriantRegex.Match(variant)) != Match.Empty)
{
Console.WriteLine("Date: {0}; Time: {1}", match.Groups["date"].Value,
match.Groups["time"].Value);
}
else
{
Console.WriteLine("Failed to parse string: {0}", variant);
}
}
}
}
}


Output:

Date: 28/10/2002; Time: 19:10:50
Date: 06/02/2002; Time: 21:55:45
Date: 13/08/2002; Time: 22:50:20

воскресенье, 17 мая 2009 г.

Ссылка. Tell me about your work / life balance, Are you happy?

Интересная дискуссия о жизни программиста и о счастье. Меня особенно зацепил первый комментарий в топике, который я привожу в цитате.
Читать оригинал: Tell me about your work / life balance, Are you happy?

I go into work, screw off for a few hours, get some programming done after lunch, go home, work on code well into the night fueled by vault. 4 AM rolls around, I go to bed, wake up at 10, go back into work...

Weekend comes, I wake up at 5 or 6 PM on Saturday (have to make up for the lost sleep during the week), I play some games, do some work, maybe go out and play pool or hang out with friends, or get drunk, go to bed at noon. Wake up at 5 or 6 PM Sunday, get to a good stopping point on work.

Each of these days I pretty much eat fast food and my body hates me for it. I drink way too much soda, smoke way too many cigarettes. Each week I work 40 (reported) hours because no overtime is allowed, but in reality I work closer to 70 hours just to give everyone the idea that I'm this amazing programmer who can get things done.

I used to weigh 155 before I started programming again, I was lifting weights regularly and I lived for the outdoors. Now I stay inside all the time, I'm 25 lbs heavier - which is still ok (but not great) for a 5'11 guy, but I have absolutely no energy and I always feel tired.

I'm enjoying the programming immensely, but since where I work is staffed 99% male with all the females in another area, I don't get many opportunities for meeting women. It blows. I go to a bar and all of the women there are mid to late 30's and I'm only 28.

I make decent money, maybe not for a programmer, but pretty good compared to all of my friends from high school, but I sock 75% of it away and drive a car that costs less in total than most people's yearly insurance premium.

My life is severely dysfunctional. There is no order to it whatsoever, it's entirely chaotic. I am well past the stage of burnout, I'm missing out on life. I've never gotten laid; though I talk to some girls regularly and I can't really push myself to try for more than friendship.

My social life is pathetic. I know of only 3-4 people I hang out with who aren't from work. All in all, I'm happy with the work, but I find the rest of my life deeply unsatisfying.

I don't know if this is a typical programmer experience, but there you have it.

среда, 6 мая 2009 г.

Наследие от MS-DOS. Какой ваш логин [%_username_%], случайно не COM1?

Интересную багу сегодня нашли. Наверное, все знают, что имя пользователя не должно содержать таких символов как <, ?, >, * и т.д., потому что при регистрации профиля пользователя, для него может создаваться папка, куда будет складываться различный файлы по типу музыки, фоток и т.д.
Но, наверное не все знают, что имена папок, такие как com1, com2 … com9, lpt, con, nul, aux и другие запрещены, потому что эти имена зарезервированы MS-DOS и Windows. Это имена устройств.

А как поведет себя ваше приложение, если пользователь с именем com1 будет создан в БД, но при создании папки для его профиля произойдет ошибка? Хорошо еще, если все неприятности закончатся на 404-й ошибке при попытке запросить данные из папки его профиля. Вы проверяли?

вторник, 5 мая 2009 г.

Учишь? Меня? Но я ведь Эксперт!

Ты был кодером на протяжении нескольких лет, возможно, даже десятилетий. Ты нашел успешную работу, зарабатываешь достаточно денег. Ты знаешь «респектабельные» технологии, которые так востребованы на рынке труда: C++, C#, Java и т.д. И тебе без надобности учить что-то новое. Оставайся в своей зоне комфорта. Бери пример с этих парней:
"Я думаю, что весь мировой рынок состоит приблизительно из 5 компьютеров."
- Thomas J. Watson, Председатель Совета, IBM, приблизительно 1948

"Кажется, что мы достигли пределов того, чего возможно достигнуть в компьютерной технологии, хотя нужно быть осторожным с такими утверждениями, поскольку они имеют тенденцию казаться довольно глупыми через 5 лет."
- Джон Von Neumann, приблизительно 1949

"Но, где это можно будет использовать?"
- Инженер в Advanced Computing Systems Division of IBM, комментируя микрочип, 1968

"Нет никакой причины для любого человека иметь компьютер в своем доме."
- Кен Olson, президент, Digital Equipment Corporation, 1977

В самом деле, мудрые слова.
Ты должен учится, когда ты знаешь, что не знаешь достаточно. Легко взять книгу, когда ты чувствуешь неуверенность в собственных знаниях. Но, опасней всего, когда ты действительно думаешь, что знаешь достаточно. Программирования (как и вся компьютерная наука) походит на бег Красной Королевы: ты должен бежать с такой скоростью, с которой только можешь для того, чтобы оставаться на своем прежнем месте.

  • Когда ты в прошлый раз покупал или брал почитать техническую книгу?
  • Когда ты в прошлый раз покупал или брал почитать техническую книгу, и затем читал ее?
  • Когда ты в прошлый раз покупал или брал почитать техническую книгу, и затем читал ее, и при этом она не имела непосредственного отношения к твоей работе?

Уходи из своей зоны комфорта. Признай свое незнание. Изучи что-то новое. Изучи что-то бесполезное, чтобы в следующем году ты мог бы назвать это бесполезным. Не говори мне, что все, что ты знаешь сейчас – это все что тебе необходимо знать вообще. Не становись цитируемым в моем следующем списке.

Если вам понравились цитаты, то их можно почитать еще и это: A Double Handful of Programming Quotes

Оригинальная статья: Learning? Me? But I’m An Expert
Перевод: Дмитрий Жарий

среда, 29 апреля 2009 г.

Silverlight: Открываем Насыщенные Интернет Приложения для мира Open Source


Silverlight: Enabling Rich Internet Applications for the Open Source World.
Да, вот скачал себе туториал на 44 странички с таким вот громким названием. В общем то, туториал не плохой, поэтому его и рекомендую. Рассказывает, как создавать приложения на Silverlight без Visual- и прочих студий, а на родном, для Java-разработчиков, Eclipse.

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

.NET ate my MOSK;. Powered By Blogger © 2009 Bombeli | Theme Design: ooruc