Очередная порция малосвязанных мыслей.
— Большое спасибо за поддержку всем написавшим в блог и почту после того, как я написал 3 прошлые статьи о том, как тяжело мне живется бедняжечке 🙂 Жизнь постепенно налаживается. Стартап своей мечты я не нашел пока, но получил интересный заказ над которым я и работаю.
Что приятно в этом заказе много технологий с которыми я не возился или возился давно. Так, что последние пару дней активно разбираюсь с JSP, JBoss, SSL сертификатами, Basic authentication, iPhone и другой мелочью. Приятно «расправить плечи» после VB 6.0 и COM.
Параллельно, слегка покопался с Ruby on Rails.
— Насчет Ruby on Rails… Эм… Как бы так сказать, штука забавная, но я ожидал чего-то большего. Ну да, blog можно сделать за 5 минут (но он собственно под это заточен). Если вдуматься, то я могу сделать framework в котором можно и на ASM’е блоге будет за 5 минут сделать. Что мне понравилось, что стандартные web операции достаточно просты. Что мне не понравилось, что для того, чтобы сделать чуть-чуть более сложную вещь, чем стандартную — сразу нужно достаточно глубоко занырнуть и понять в их framework. В общем кривая обучения достаточно обманчива.
— Идеальное собеседование для программистов должно выглядеть как IQ тест и требование написать небольшой кусок кода с последующей оценкой качество этого кода. Все требования по поводу знания технологии X и Y нужно выбрасывать в мусорку при долгосрочном сотрудничестве.
— Дико напрягает, когда-то что-то при программирование идет не гладко. 20 минут тратишь на написание
функциональности, а потом 3 часа пытаешься сделать, чтобы оно заработало (это я водился с прикручиваем Basic auth к Jboss и пропустил 1 строку в конфигурационном файле, на что и убил 3 часа).
Последний абзац — чуть ли не постоянное состояние в последнее время. Отчасти, потому что много начал изучать нового для себя. Python, например.
«для того, чтобы сделать чуть-чуть более сложную вещь, чем стандартную – сразу нужно достаточно глубоко занырнуть и понять в их framework. В общем кривая обучения достаточно обманчива.»
так по-моему это почти всегда так с любыми технологиями/фреймворками ). Может быть просто RoR кажется слишком простым и понятным сначала по сравнению с дальнейшими копаниями для решения нестандартных задач.
«Идеальное собеседование для программистов должно выглядеть как IQ тест и требование написать небольшой кусок кода с последующей оценкой качество этого кода. Все требования по поводу знания технологии X и Y нужно выбрасывать в мусорку при долгосрочном сотрудничестве.»
в принципе понятно, но я был поспорил с выбрасыванием знаний по технологиям, потому что долгосрочное сотрудничество (хотя конечно смотря на сколько) может быть завязано на определенных технологиях, и в то же время нужен не супер-пупер умный с высоким IQ, а просто адекватный программист который хорошо знает технологии с которыми работает и с getting things done attitude.
Ну а какого рода задачи для написания кода хорошо подходят для интервью, может быть есть у Вас пару хороших примеров? Просто человек волнуется, алгоритмов базовых может и не помнить, плюс если на бумаге писать, то не так удобно как на компе, то есть нужно что-то такое чтобы проверить ум, но не сильно сложное и объемное наверное…
Насчет RoR. Я думаю дело тут в том как его разрекламировали. Скажем C++ никто не рекламирует в виде «напиши драйвера за 5 минут» и поэтому когда разбираешься, то ожидаешь, что будет много подводных камней.
Насчет собеседования. Согласен, с тем что еще нужно проверять attitude. Так как человек действительно может быть умен, но не адекватен. Насчет технологий… Человек с более высоким IQ очень быстро наверстает незнание технологий. Если давать задачу на бумаге, то скорее более крупную и просить не программу написать, а просто объснить как будет делать. Моя стандартная задача на бумаге была объяснить как написать простейший XML парсер (на вход строка, на выход какая-то структура данных).
Если за компом, то лучше давать задачу попроще, но которую можно решить полностью. И обязательно давать возможность googl’ить и ставить на комп то, что нужно (язык и среду программирования).
Насчет «помнить базовые алгоритмы». Я дико против того, что что-то нужно помнить наизусть. В конце концов Google всегда у программиста под рукой. Но вот, что программист должен уметь делать — это соображать. Поэтому для меня вполне ok, если человек не помнит на память как работает быстрая сортировка. Но для меня не ok, если человек не может скажем написать процедуру, которая возьмет массив и поменяет в нем местами последний элемент с первым, предпоследний с вторым и т.п.
Насчет RoR. Я как человек счастливо и долго зарабатывающий на этом фреймворке могу сказать, что знание этого фреймворка заключается не в возможности 279 раз построить блог, а в знании многочисленных плугинов и умении выбрать нужный Rails плугин или Ruby гем вместо изобретения очередного колеса. Добавьте к этому навыки разруливания конфликтов между плугинами, знание тонкостей самого языка и различий между библиотеками по автотестированию. И вот зная все это можете начинать ломать голову как эти нормальные решения прикручивать к ненормальному legacy проекту 🙂
Вот это меня и смушает.
RoR изначально предполагался (по крайней мере как я понял) как framework, который должен упростить и облегчить web разработку.
А теперь то, что я вижу (собственно то, что происходит с всеми языками и framework’ами) — для того, чтобы сделать что-то проще нужно сначала год подряд копаться в плагинах и гемах, разгребая конфликты. А после этого действительно начнет выходить быстрее и проще.
А мне просто кажется что со временем акценты смещаются больше в интеграцию, чем в разработку.
Много готовых зрелых продуктов которые широко используются, больше работы появляется именно для их итеграции, что в принципе целесообразно и с экономической и технической сторон.
То же самое с фреймворками, я не знаком с RoR, но предположим там действительно много готовых компонетнтов покрывающих разнообразный функционал. Да, с точки зрения программиста менее приятно интегрить — когда опыт и знание тонкостей компонентов играют первостепенную роль, но при этом всегда будут подводные камни, надо допиливать итд по сравнению с разработкой с нуля. Но с другой стороны это часто просто быстрее, чем писать с нуля.
Да, безусловно так оно и есть.
Просто «экономическая сообразность» слегка уменьшается именно из-за того, что для интеграции требуется большии вложения в изучение и решение проблем.
Та да, уменьшается ). Тем более что в реальности не всегда гладко получается как это рекламирется маркетингом того или иного продукта.
Как говорится у меня совета никто не спрашивал, но советую посмотреть в сторону Python + фреймворк Django
Да собственно говоря, все равно куда глядеть. Грабли есть везде. Просто я решил именно с RoR повозиться.
Ruby on Rails, Django….достаточно часто слышно про них, но реально есть ли предложения работы у нас, или аутсориснговых проектов по ним практически нет? Например, я у себя в Харькове что-то вообще не слышал.
Насчет outsorcing проектов не знаю. В штатах RoR сейчас в стартапах популярен. Насчет Django тоже не слышал.
«- Дико напрягает, когда-то что-то при программирование идет не гладко. 20 минут тратишь на написание
функциональности, а потом 3 часа пытаешься сделать, чтобы оно заработало »
О ДААА :). все новые изучаемые технологии проходят через этот этап, бесит жутко а что делать непонятно.
А делать тут особо нечего. Так как технологии быстро идут вперед и пердний край их достаточно сыр зачастую, то так будет до тех пор пока технологии не станут на месте.
не встанут на месте
Эх ладно бы только новые, старые не лучше. Пока не разучишь пару приёмов кунфу ничего работать не хочет.
Как вам JBoss? Нравится, не очень или совсем никак?
Знаком вплотную с ним года с 2003, всякого нагляделся.
Сервер как сервер. Единственное, что активно НЕ понравилось — как там организованна структура директорий. Много уровней с одинаковыми названиями директорий на разных уровнях, с ходу фиг поймешь, куда лезть.
А, сборка увидила? То, что в одном архиве есть сразу несколько вариантов сервера.
Понравилось / не понравилось — дело в привычках. Мне в свое время не понравился Geronimo. Из-за способа развертывания приложений
Естественно, если бы я им активно попользовался ну скажем пару месяцев — то я бы запомнил, что и где.
Собственно мне не понравилась именно не интуитивность.
неинтуитивность
web-операции
IQ-тест
оценкой качества