понедельник, 17 августа 2015 г.

"An item with the same key has already been added"

Type:       ArgumentException
Message:    An item with the same key has already been added.
Data:       0 entries
Stack trace:
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at ...

суббота, 27 июня 2015 г.

Как начать работать и зарабатывать

Фраза, затертая до дыр, но до сих пор не растерявшая своей магии... Например, в разработке программного обеспечения.

воскресенье, 8 марта 2015 г.

Полиморфизм?


Вот в таком классе мне недавно пришлось исправлять ошибку:

public abstract class UpdaterBase {
protected abstract IMyControl CreateMyControl();
protected abstract IMySettingsStore CreateMySettingsStore(IMyControl control);
public void Update(MyTarget target) {
if(target != null && !MySettingsHelper.HasSettings(target)) {
IMyControl control = CreateMyControl();
control.Fields["Priority"].Area = MyArea.ColumnArea;
control.Fields["Subject"].Area = MyArea.DataArea;
control.Fields["AssignedTo.DisplayName"].Area = MyArea.RowArea;
MySettingsHelper.SaveSettings(CreateMySettingsStore(control), target);
}
}
}

На первый взгляд этот код выглядит нормально: базовая логика для использования и перекрывания и все такое про ООП и полиморфизм. И даже наследники есть:

среда, 22 октября 2014 г.

Овраг или гора?

Создание программы течет плавно как река. Только иногда неожиданно заворачивает...

В моей работе поворот чаще всего происходил всего лишь в трех местах:
1. на передаче задания от заказчика к программисту
2. на передаче описания от программиста к техническому писателю
3. на передаче продукта от программиста в службу поддержки

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

Дальше начинается работа исполнителя. На результат влияют как способности исполнителя, так и особенности характера заказчика. "Я плачУ - ты работаешь", "Разберись сам", "Я все уже объяснил", "Да тут все просто" могут свести на нет все способности.
.... выходят качели:
Но программист работает по ночам, старается доделать сколько можно и таки доделывает...

"Отлично получилось," - подумал программист и в двух словах изложил все техническому писателю. Осталось сделать пост в блоге, рекламные сообщения в твиттере, описать основные вещи в документации, сделать примеры, снять обучающие видосы и провести онлайн тренинги. Как два пальца... Удивительно, но начинается второй виток "Заказчик-Исполнитель"... Снова звучат "Разберись сам", "Я все уже объяснил" и "Да тут все просто". Писатель пытается и делает что может.
И снова полуаются качели... Страдает смысл в опубликованных материалах: не так, не для тех людей, не на тех примерах, вообще не то. Программист хотел сказать одно, сказал второе, писатель услышал третье, понял четвертое, переработал для публичного показа в пятое и ... все недовольны.

"Ну, теперь-то уж точно все, " - думают программист и писатель после успешной работы над описанием программы. И... передают ее на сопровождение новым Исполнителям со словами "Разберись сам", "Я все уже объяснил" и "Да тут все просто". 

четверг, 3 апреля 2014 г.

Программирование - это как лук.

У лука есть слои. И у программирования есть слои.



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