?

Log in

No account? Create an account
Живой Журнал Якова Сироткина Below are the 6 most recent journal entries recorded in the "Яков Сироткин" journal:
June 29th, 2014
12:58 am

[Link]

Возвращение в Друскининкай
В детстве я так много отдыхал в Литве в Друскининкае, что съездил туда уже со своими детьми, затрудняюсь точно сказать сколько лет спустя, но есть гипотеза, что 25. За это время там построили аквапарк, веревочный город и крытый горнолыжный склон. Железную дорогу убрали. Тропа здоровья, по который мы очень много ходили ногами, сейчас считается практически заброшенной велосипедной дорожкой и её пересекает автомобильная дорога. Мы остановились всего на 4 ночи, поэтому вместо полноценного путешествия взяли в прокат велосипеды и за два часа легко проехали по большому кругу. И я забрался на Чертов камень, не уверен, что название ещё сохранилось, но камень всё ещё лежит.

Я устроил себе три дня холодного борща и не был разочарован, хотя общепит в целом изменился полностью. Но я во второй раз в жизни посетил ресторан Алка и даже безошибочно нашел к нему дорогу. Думаю, можно подтвердить, что порции остались большими, но готовят достаточно вкусно, чтобы всё съесть. Тем не менее, теперь это явно не самое крутое заведение в городе с заоблачными ценами — в силу удаленного расположения, его и не на каждой карте отметят.

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

Музей Чюрлёниса небольшой, но вполне приятный. Наверно, в моем детстве он был точно таким же, но сейчас он стал для меня обязательным для посещения. Недалеко от Друскининкая находится парк Грутас, где собраны монументальные скульптуры советского времени. Чтобы наверняка оставить удовлетворенным каждого посетителя, в экспозицию входит небольшой зоопарк. Особо хочу отметить коллекцию, посвященную Олимпиаде-80.

Вполне можно было бы приехать в Друскининкай недели на две, осмотреть окрестности, съездить в Гродно, но для нас он стал частью большого путешествия: Остров-Даугавпилс-Вильнюс-Друскининкай-Каунас-Рига-Юрмала-Изборск, с заездом по дороге в разные интересные места, всего привезли 16 магнитиков на холодильник. Если соберетесь в этом году поехать по похожему маршруту, то помните, что в Литве всё ещё ходят литы, а карточки принимают совсем не везде.

Прошу прощения, у меня нет шансов написать полный отчет.

Update: фото

Tags:

(Leave a comment)

November 30th, 2010
04:43 pm

[Link]

Уроки Swing
Swing используют два важных для меня проекта: IntelliJ IDEA и клиент Thinkorswim, который изменил торговлю опционами и в разработке которого мне повезло участвовать, к сожалению, очень не долго. Отметим, что в обоих случаях Swing был разобран очень крутыми ребятами на мелкие кусочки и это помогло им сделать из него конфетку, при этом многое пришлось переписать.


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

В это время веб-приложения потихоньку наращивали свои возможности, а интерфейсы становились всё более простыми и понятными. Маленькую революцию в UI совершил iPhone, но на этом рынке Java просто нет физически. Ещё немного у Swing отъел Eclipse.

И теперь, когда я уже практически перестал переживать по поводу Swing, мне снова довелось с ним столкнутся! Это два огромных приложения для одной из самых крупных в мире компаний. К сожалению, тут всё оказалось, мягко говоря, не гладко. Священная корова backward compatibility совершенно не спасла нас от отката на предыдущую версию. Если есть две реализации одного и того же метода, то в подавляющем большинстве случаев не составит труда написать код, который будет эту разницу выявлять, с чем мы и столкнулись. Богатство возможностей породило очень запутанный интерфейс, в котором с трудом разбираются и пользователи, и разработчики. Используемые сторонние компоненты внезапно оказались настолько древних версий, что уже практически не упоминаются на сайтах производителей.

Итого, можно сказать, что хорошие приложения на Swing получились только у нескольких очень хороших команд, которые вполне могли бы написать всё и на C++. А простые смертные запутались и ничего толком не сделали.

А какой у вас опыт со Swing?

Tags:

(41 comments | Leave a comment)

October 13th, 2010
10:50 am

[Link]

Как размножаются кактусы
Мышки много лет выращивали траву, но она всё время получалась у них какая-то невкусная. В конце концов они решили обратиться за помощью к ёжикам. Ёжики сильно обрадовались: да мы вам обалденную траву вырастим: и вкусную, и красивую, и урожайную! Начали готовить контракт и видят ёжики, что мышки траву на песке выращивают. Тут энтузиазма сразу поубавилось, стали ёжики с мышками разговаривать: а не поискать ли нам другую землю, а какие качества травы вам наиболее важны? Ничего, сказали мышки, мы же раньше как-то выращивали, а другая земля не предусмотрена нашими корпоративными стандартами. Ладно, сказали ёжики, деньги в принципе хорошие, как-нибудь прорвёмся — давайте заключать контракт, но нужно будет сделать систему орошения. «А это для нас делают зайчики, они наши старые партнёры, не беспокойтесь!» — ответили мышки.

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

Выросли только кактусы.

Tags:

(14 comments | Leave a comment)

January 22nd, 2010
12:57 pm

[Link]

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

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

Проблема JUG.RU в том, что я всегда больше интересовался проблемами, а не халявой. Поэтому с одной стороны я отказывался от бесплатной еды, а с другой — не продвигал ключевые слова без привязки к успешным проектам. Таким образом, диалога с маркетингом практически никогда не получалось.

Фото со встречи JUG.RU 2005 годаCollapse )

Tags:

(15 comments | Leave a comment)

December 11th, 2008
11:40 pm

[Link]

Рефакторинг: тестирование
При рефакторинге вы всё время меняете код, значит у вас есть большие риски, что вы что-то поломаете. Значит, нужно всё время тестировать, что же у вас получилось, и, следовательно, иметь возможность быстро пересобрать проект. Прежде чем начать изменять какой-то участок кода необходимо научиться воспроизводить ситуацию, в которой этот код работает. Это не всегда просто — однажды ко мне пришёл на починку баг, про который я знал, как чинить, но он был в таком далёком месте системы, что мне понадобился целый день, чтобы воспроизвести его у себя, при том что двое коллег мне активно помогали это сделать. Часто в системе много очень похожих друг на друга кусочков и бывает полезно поставить breakpoint и убедиться, что именно на нём остановится выполнение программы. Разумеется, после внесения изменений нужно проверить, что всё работает хорошо. Крайне желательно разбивать задачу на несколько небольших этапов и после каждого контролировать результат.

А как же знаменитые юнит-тесты? А они, извините, не работают. Я много раз видел в проекте папку с тестами, в которой содержались исходные коды разной степени компилируемости, которые даже иногда показывали какие-то результаты. Но скажите, что означают успешно отрабатывающие тесты, если код воняет в каждой строчке и невооружённым глазом видны ошибки с многопоточностью и с кодировками, а исключения методично игнорируются? Рассмотрим пример: есть тесты на парсинг XML, но: париснг сделан через SAX, что в данном случае не имеет смысла и его надо переписать на DOM, после чего он станет на порядок проще, XML из тестов не такой, как сейчас в системе, в результате парсинга хочется получать полноценный объект, а не макароны различных свойств с неправильными именами, которые есть сейчас. Получается, что существующий код должен практически полностью исчезнуть и тянуть за собой в процессе рефакторинга ещё и изменения тестов, которые уже наполовину поломаны, крайне затратно.

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

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

Tags:

(27 comments | Leave a comment)

May 12th, 2008
01:27 pm

[Link]

Потолок зарплаты
Я как-то слышал оценку, что в мире сейчас 6 миллионов Java-программистов. Думаю, как минимум миллион из них не знает, кто такой James Gosling и уж точно не больше миллиона знают, кто такой Neal Gafter. А если рассмотреть какой-то содержательный вопросы, то правильный ответ сможет дать один из ста или около того.

Спросим теперь, может ли программист в перспективе зарабатывать больше, чем он зарабатывает сейчас? Если программист среднестатистический, то ответ очевиден: чёрта с два! Хорошие условия труда, возможность как-то свести концы с концами — это будет, но деньги платить — с какого перепугу? В большинстве вакансий даже не предполагается, что программист достигнет каких-то существенных результатов, хорошо если весь проект в целом под нож не пустят. Но точно так же понятно, что люди, которые умеют запускать большие успешные проекты будут зарабатывать как «звёзды», а не в среднем по больнице.

Легко провести аналогию с другими профессиями: Аршавин зарабатывает миллионы, а сколько получают футболисты во второй лиге? Быть журналистом в Коммерсанте или в Ведомостях — это престижная и ответственная работа, но перепечатывают в районной газете тексты из чужих ЖЖ тоже журналисты, только другого сорта.

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

Tags:

(223 comments | Leave a comment)

Telamon.RU Powered by LiveJournal.com