Подозреваю, что сие уж многим и оскомину набило...
Уж как программер искать «приличную» работу в Питере устал.
Проблема в том, что слегка молод (22 года), без "опыта". С неоконченным «высшим», 4-й курс вечернего, т.е. свободного времени хоть отбавляй. Но правда без сертификатов.
Надоело получать в ответ дежурные сообщения, что дескать "ваше резюме добавленно в нашу БД", в стили тех же Digital Design и Qbix.
Надоело и непробиваемое молчание, весьма типичное для компаний вроде Aelita, демонстрируемое в ответ на выполненные тестовые по 2-м позициям. При том что именно сия контора объявила набор стажеров и даже о записи на "обучение" молодых "спецов".
Надоело приезжать на собеседование и с телефона проходной в оффис слышать "у нас накладка, мы свяжемся с вами позже".
Надоели сотрудники кадровых агентств тупо следующие неведомым инструкциям подбора кандидатов.
А может быть со мною попусту "что-то не так" и потому не вижу каких либо элементарных вариантов?
Иль надо было пару лет назад побегать по знакомым и оформить трудовую с липовым стажем?
Или врать в резюме, а на интервью выкручиваться?
Или подробно ознакомиться с системою сертификации специалистов Microsoft? Признаться не бедствую, но денег на это выделить смогу с приличным скрипом.
Понятно мне, что обивающих пороги море.
Но почему б не озаботить человека тестовым, вместо шаблонных-то ответов? А уж по результатам, вызвав на ковер, и посмотреть на оного?
Не уж то надо устроиться куда-нибудь, лишь бы взяли и стаж потек?
И только через 2-3 года со мною соизволят разговаривать "приличные конторы"?
А может просто я дурак напыщенный и вот подобного для "старта" маловато?
(по 5-ти бальной):
win32API 4
COM/DCOM/COM+ 3/2/2
ATL/WTL 3/2
ActiveX 4
ADO 2
SQL/T-SQL 3/3
C/C++ 4/4
VB 4
Asm 386(real/protected mode) 3/3
Уж не поймите, дамы/господа, меня превратно...
Нельзя ж все время быть на «удаленке», да и множество «полукоммерческих» проектов надоело.
Здравствуйте, Аноним, Вы писали:
А>Может подскажите чего?
А ты не кричи душой, она ведь не казенная у тебя. Сейчас лучше с поиском работы повременить. В декабре, смело начинай, только не зацикливайся на этих "приличных" конторах. А пока есть время, подумай что было хорошего прежде, а чего лучше в будующем избежать, нарисуй мечту, представь ее как сюжет фильма. Приличная работа — это не цель.
А>> Может подскажите чего? > >А ты не кричи душой, она ведь не казенная у тебя. Сейчас лучше с поиском >работы повременить. В декабре, смело начинай, только не зацикливайся на >этих "приличных" конторах. А пока есть время, подумай что было хорошего >прежде, а чего лучше в будующем избежать, нарисуй мечту, представь ее как >сюжет фильма. Приличная работа — это не цель.
Почему стоит повременить до декабря?
Приличная работа это не цель, а лишь средство. Для самореализации, обеспечения себе достойного существования. Например, так или иначе дистанцироваться от некоторых социальных слоев
Posted via RSDN NNTP Server 1.8 beta
Re[3]: "Крик души"
От:
Аноним
Дата:
09.11.03 04:09
Оценка:
Здравствуйте, iddqd, Вы писали:
А>>> Может подскажите чего? >> >>А ты не кричи душой, она ведь не казенная у тебя. Сейчас лучше с поиском >работы повременить. В декабре, смело начинай, только не зацикливайся на >этих "приличных" конторах. А пока есть время, подумай что было хорошего >прежде, а чего лучше в будующем избежать, нарисуй мечту, представь ее как >сюжет фильма. Приличная работа — это не цель. I>Почему стоит повременить до декабря?
Доверься
I>Приличная работа это не цель, а лишь средство. Для самореализации, обеспечения себе достойного существования. Например, так или иначе дистанцироваться от некоторых социальных слоев
Здравствуйте, Аноним, Вы писали:
А>Уж как программер искать «приличную» работу в Питере устал. А>Проблема в том, что слегка молод (22 года), без "опыта". С неоконченным «высшим», 4-й курс вечернего, т.е. свободного времени хоть отбавляй. Но правда без сертификатов. А>Надоело получать в ответ дежурные сообщения, что дескать "ваше резюме добавленно в нашу БД", в стили тех же Digital Design и Qbix. А>Надоело и непробиваемое молчание, весьма типичное для компаний вроде Aelita, демонстрируемое в ответ на выполненные тестовые по 2-м позициям. При том что именно сия контора объявила набор стажеров и даже о записи на "обучение" молодых "спецов".
У меня нет, к сожалению, рецензии именно Вашего тестового задания (речь идет о этом задании), но, для иллюстрации, я приведу два примера (успешный и не успешный) рецензий тестовых заданий месячной давности, чтобы показать, что во-первых, задания анализируются, во-вторых, что одного только факта исполнения кандидатом тестового задания недостаточно — еще важно КАК он его сделал:
Пример 1 (отрицательный).
Плюсы:
— юный возраст
— использование компонентов .NET (такое тестовое задание данному рецензенту попалось впервые);
Минусы:
— предыдущий опыт работы был связан скорее с администрированием, нежели с кодированием;
— "знаком с языком VC" — этого может оказаться недостаточно;
— задание выполнено как "отписка", без цели показать "все, на что способен", а с целью сделать "чтобы отстали"
— совершенно неудобный UI (пользователь должен знать имена сервисов и имена машин, чтобы запустить или остановить сервис);
— многократное создание одних и тех же объектов (в VB при каждом нажатии на кнопку создается COM-объект MyServControl; в VC тоже самое происходит с объектом ServiceController);
— catch(...) — за это у нас "расстреливают";
— глобальные директивы using — это, по крайней мере, плохой стиль программирования. Кроме того, раз уж написал
using namespace System::ServiceProcess;
то зачем тогда дальше писать
System::ServiceProcess::ServiceController *SC;
?
В общем, решили не приглашать.
Пример 2 (положительный)
Плюсы
— человек явно стремится показать свои знания (проект выглядит крупнее и "продвинутее" среднестатистического тестового задания);
— не часто встречается в заданиях запуск и останов зависимых сервисов;
— использование обертки для SC_HANDLE;
— использование WNetAddConnection (очень редко встречается в заданиях);
— использование коллекций VB.
Минусы:
— в коде не выбрасывается ни одно исключение, но встречается огромное количество конструкций
try {}
catch(...) {}
— обработка ошибок сделана на возвращаемых значениях (в качестве типа ошибки используется свой собственный enum);
— использование таких конструкций как
using CConnectionImpl::OpenConnection; (см. класс CManagerImpl) конечно говорит о том, что человек знает о их существовании, но на практике означает просчеты в проектировании (в проекте такого масштаба они явно не уместны!);
— встречаются "сишные" функции; используется CString вместо std::basic_string<> (стоит ли прикручивать целый MFC ради этого?);
— доступ к внутреннему представлению вектора (см., например, ServiceCtrl::QueryServiceConfig());
— std::vector<LPCTSTR> a_Array(a_Size); — выглядит пугающе (это отмечает в комментариях и сам автор);
— функция CManagerImpl::WaitForServiceState() содержит конструкцию
for(;;)
{
...
Sleep(a_Wait);
}
и вызывается в основном потоке (фактически, прямо в обработчике сообщений от UI); как следствие, приложение "зависает", пока не запустится (не остановится) соответствующий сервис (может, это как-то реализовано в VB?).
Мнение рецензента: "Не знаю как на ведущего, а на простого "программиста второго уровня" вполне тянет".
Ну тестовое на то и тестовое, насколько помню у Aelita оные шли на программера и тестера. Если человек выполняет оба, то либо он сам не знает чего хочет, либо почему-то очень впечатлен вашей компанией. А теперь представьте, что в ответ он получает гробовое молчание... и как ему следует относиться к подобному?
Ведь преданность работника своей компании это весьма и весьма важная вещь.
Насколько понимаю, именно это руководство той же Aelita ставило так или иначе, но во главу угла, например, когда решало выложить на сайт текст, что дескать "мы оказываем содействие сотрудникам в получении всех необходимых бумаг для получения тех или иных кредитов"...
Уж ответить то можно, что мол рассморели и советуем немного подучится.
интересно, а почему он так плох? я всегда ставлю один на верхнем уровне.
Если прога выдаст "unknown error" — это всё-таки лучше, чем "access violation"
по крайней мере, юзера не так напугает.
Только не надо кричать, что "у настаящих програмеров не бывает access violation" — почти любая прога использует "чужие" компоненты, которые имеют обыкновение меняться непредсказуемым образом. Да и в своей проге нельзя учесть все возможные сценарии. По крайней мере, за конечное время
Здравствуйте, Дарней, Вы писали:
GUI>> — catch(...) — за это у нас "расстреливают";
Д>интересно, а почему он так плох? я всегда ставлю один на верхнем уровне.
Вот, вот я что-то тоже не понял. Если прога вываливается, то перед этим можно хоть какие-то данные сохранить.
Здравствуйте, beretta, Вы писали:
B>Здравствуйте, Дарней, Вы писали:
GUI>>> — catch(...) — за это у нас "расстреливают";
Д>>интересно, а почему он так плох? я всегда ставлю один на верхнем уровне.
B>Вот, вот я что-то тоже не понял. Если прога вываливается, то перед этим можно хоть какие-то данные сохранить.
Если программа вываливается по неизвестным причинам — кто даст гарантию что эти данные имеют смысл?
Но это ладно, мне больше интерестно как отлаживаться при задушенных AV...обычно-то — упали с AV, взяли полученный dmp-файл, открыли в студии и смотрим как дошли до такой жизни....А если придушить AV то как сиё проделать?
Здравствуйте, Дарней, Вы писали:
GUI>> — catch(...) — за это у нас "расстреливают"; Д> Д> интересно, а почему он так плох? я всегда ставлю один на верхнем уровне. Д> Если прога выдаст "unknown error" — это всё-таки лучше, чем "access Д> violation" по крайней мере, юзера не так напугает. Д> Д> Только не надо кричать, что "у настаящих програмеров не бывает access Д> violation" — почти любая прога использует "чужие" компоненты, которые Д> имеют обыкновение меняться непредсказуемым образом. Да и в своей проге Д> нельзя учесть все возможные сценарии. По крайней мере, за конечное время Д>
Когда разрабатывается компонент, который предполагается встраивать куда-либо, то он должен иметь свои классы исключений и ловить ТОЛЬКО их и ВСЕ их. Иначе каша, месье...
-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Posted via RSDN NNTP Server 1.8 beta
It's kind of fun to do the impossible (Walt Disney)
[]
_>Когда разрабатывается компонент, который предполагается встраивать куда-либо, то он должен иметь свои классы исключений и ловить ТОЛЬКО их и ВСЕ их. Иначе каша, месье...
Не согласен.
Следующий код вполне нормальный и очень часто встречается:
try{
//do some work
}
catch(...){
//do some cleanupthrow;
}
_>Когда разрабатывается компонент, который предполагается встраивать куда-либо, то он должен иметь свои классы исключений и ловить ТОЛЬКО их и ВСЕ их. Иначе каша, месье...
остается только убедить в этом всех разработчиков компонент на рынке. А также отучить их делать ошибки
Здравствуйте, Alexey Shirshov, Вы писали:
AS>Не согласен. AS>Следующий код вполне нормальный и очень часто встречается: AS>
AS>try{
AS> //do some work
AS>}
AS>catch(...){
AS> //do some cleanup
AS> throw;
AS>}
AS>
ИМХО, а вот тут я с вами не согласен, относительно того что этот код нормальный.
Поясню свое несогласие: наличие такого кода говорит о неверно спроектированной архитектуре приложения.
Если взять хорошо продуманные библитотеки (.NET, VCL) и посмотреть на то какие они исключения наружу передают, то увидим что у всех исключений есть базовый класс, так вот, на крайний случай его и надо ловить. Такой подход позволяет использовать, например Microsoft Application Blocks for .NET, а далее уж сами решайти, что с исключениями делать, оповещать о них или записывать куда-либо.
try{
//do some work
}
catch(Exception e){
//do some cleanupthrow;
}
T>Если программа вываливается по неизвестным причинам — кто даст гарантию что эти данные имеют смысл?
с большой вероятностью — не имеют. Но я ставлю catch(...) все-таки, чтобы не пугать юзера страшными сообщениями и умереть более-менее благопристойно
T>Но это ладно, мне больше интерестно как отлаживаться при задушенных AV...обычно-то — упали с AV, взяли полученный dmp-файл, открыли в студии и смотрим как дошли до такой жизни....А если придушить AV то как сиё проделать?
отлаживаться — в отладчике, конечно
И это актуально только для отладки, а не для релиза.
Здравствуйте, trial, Вы писали:
T>Но это ладно, мне больше интерестно как отлаживаться при задушенных AV...обычно-то — упали с AV, взяли полученный dmp-файл, открыли в студии и смотрим как дошли до такой жизни....А если придушить AV то как сиё проделать?
AV, не AV, а эксепшенов разных хватает.
А что если данные об ошибке записать в лог программы, а программу снабдить возможностью логи в саппорт отправлять.
Или у вас юзеры:
...обычно-то — упали с AV, взяли полученный dmp-файл, открыли в студии и смотрим как дошли до такой жизни....
Здравствуйте, Дарней, Вы писали:
_>>Когда разрабатывается компонент, который предполагается встраивать куда-либо, то он должен иметь свои классы исключений и ловить ТОЛЬКО их и ВСЕ их. Иначе каша, месье...
Д>остается только убедить в этом всех разработчиков компонент на рынке. А также отучить их делать ошибки
Здравствуйте, Дарней, Вы писали:
T>>Но это ладно, мне больше интерестно как отлаживаться при задушенных AV...обычно-то — упали с AV, взяли полученный dmp-файл, открыли в студии и смотрим как дошли до такой жизни....А если придушить AV то как сиё проделать?
Д>отлаживаться — в отладчике, конечно Д>И это актуально только для отладки, а не для релиза.
Дык не будет отладчика если задушить AV.
И что делать — если приходит тестер — говорит — у меня падает....иногда
А если это сервис? и падает он раз в 2 недели когда попадает в какую-либо незнакомую ситуацию (о простой порче памяти я не говорю) ?
И воспроизвести не так-то просто?
Без DMP тут мало что поделать можно
Ситуация когда это говорит клиент совсем иная, естестенно.