.Net server-side, multithreading
Project management & marketing
Business books, etc.
Контакты

Достижения

Все достижения (5)

Наибольший вклад в теги

Все теги (26)

Лучшие ответы пользователя

Все ответы (30)
  • Как Вы понимаете junior, middle (developer), senior и есть ли принципиальная разница этих понятий в вебе, эмбедде, геймдеве и других программиннгах?

    FirstX
    @FirstX
    .net developer
    Эти понятия, как и многое другое, пришло с запада. В России, знаю на примере текущей компании, есть разделение на "Инженер-программист 3й категории", 2й категории и высшей категории (ведущий инженер-программист). В нормативных документах, в том числе и в рамках должностной инструкции описано, что например инженер программист 2й категории - это сотрудник с высшим образованием по специальности и таким-то количеством лет опыта. Это формальный подход, на практике мне дали 2ю категорию существенно раньше, чем "положено".

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

    Может ли использоваться с целью занижения зарплаты? Может. Мое мнение, что в данном вопросе важно не "звание", а то как твой опыт и твои навыки покрывают запросы чужого бизнеса. Отсюда и вытекает твоя стоимость на рынке. И где-то будучи джуниором можно получать больше, чем мидл в другом месте, зависит от предъявляемых требований. Хочет ли работодатель купить дешевле тот же скилл? Хочет. Есть компании, где критерии формализованы, в рамках этой компании рост более прозрачен.

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

    Это все лично мое мнение, не претендующее на истину)
    Ответ написан
    Комментировать
  • Сколько времени в среднем проходит для освоения программирования с нуля и возможностью заработка?

    FirstX
    @FirstX
    .net developer
    На самом деле кол-во таких вопрос действительно зашкаливает, потому что беспокоит многих, но каждый считает, что именно ему ответят каким-то уникальным образом. К сожалению нет, не ответят, универсальных рецептов нет. Я сам одно время, брался за одной, брался за другое, загорался и снова перегорал. Потом приходит понимание, что топчешься на одной месте, даже совершая "гипер прыжки" в кратчайшее время, такие переключения с новым "гипер-прыжком" отбрасывают сильно назад. Это как вектор, который резко меняет направление. Сумма таких векторов может не порадовать точно :)

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

    Какой же выход из этого порочного круга. Наверное составить Roadmap, где придется проверить свою силу воли. Составить карту планов на год. Проанализируйте такие вопросы как:

    1. Что интересно
    2. Что проще всего дается
    3. Что востребовано на местном рынке
    4. Рассматривается ли возможность переезда
    5. Что востребовано на фриланс биржах и каков уровень конкуренции в данном сегменте

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

    Теперь ответ на ваш вопрос: время освоения программирования с нуля и возможность заработка никак между собой напрямую не связаны. То есть ответа конкретного никто не сможет дать.

    Можно всю жизнь программировать, но не зарабатывать на этом. Может повезти устроиться с нулевым опытом, и вы зарабатываете почти тут же. Это как вопрос, сколько надо забить гвоздей, чтобы начать на этом зарабатывать. Утрирую? - да. Но вы так же можете отбивать себе пальцы молотком, но зарабатывать какую-то копеечку, а можете профессионально дома с закрытыми глазами вбивать одним ударом гвоздь, но не иметь с этого ни рубля.

    Бывает человек 10 лет программирует, но качество кода остается на уровне джуниора и решать задачи в написании серьезных приложений на фрилансе он не сможет. Получается в локальном вопросе, для конкретной компании этот человек может продать свою работу и получает за это деньги, в более масштабном плане - ему будем сложно себя продать и соответственно шансы на заработок не так велики. Это же и объясняет тот факт, что не всегда умные люди добиваются успеха в компаниях. Человек может быть не самым полезным, не самым эффективным, но грамотный "само-маркетинг, нетворкинг ака полезные связи" бывает творят чудеса.

    Единственное, что я могу однозначно рекомендовать даже для программиста - это так называемые soft skills. Навыки общения, коммуникации, понимание идей бизнеса и так далее. Напрямую с программированием не связано, но вопросы настолько универсальные, что пригодятся в любой работе.
    Ответ написан
    Комментировать
  • Почему метод GetEnumerator() интерфейса IEnumerable реализовывается дважды?

    FirstX
    @FirstX
    .net developer
    Для ответа на этот вопрос надо окунуться в историю. А именно был момент, когда не было Generic-типизации и был только нетипизированный интерфейс перечисления IEnumerable. А потом с приходом новой версии .Net появились обобщения (это когда явно указывается тип <T>, в твоем случае тип данных <Product>).

    Сигнатура этого интерфейса выглядит следующим образом:
    public interface IEnumerable<out T> : IEnumerable

    То есть для обратной совместимости, новый интерфейс наследует старый, а значит и метода нужно реализовать два: один, который возвращает старый нетипизированный вариант, и новый, более удобный типизированный вариант.

    Для понимания: в старом варианте, когда ты обходил в цикле каждый элемент через foreach - тип элемента был object (все другие типы от него унаследованы). И на каждой итерации, чтобы получить свой тип Product и работать с ним - приходилось делать приведение типов.
    В новом варианте, благодаря тому, что явно указан тип <Product> при обходе в цикле - ты сразу получаешь объект типа Product.

    Рекомендую по этой теме почитать вообще изменения в .Net при переходах с версии на версию + почитать про Generic в дотнете.
    Ответ написан
    Комментировать
  • Как работает Timer в WPF?

    FirstX
    @FirstX
    .net developer
    Для общей справки в дополнение к первому ответу, есть грубо говоря 2 основных разновидности таймеров:

    1. System.Threading.Timer - Ставит задачу в пул потоков, поэтому подходит для тех, случаев, когда задача выполняется по таймеру в фоновом режиме. Например ваш объект изменяет параметр Х, но на форме этого не видно.

    2. System.Windows.Forms.Timer (для WinForms) / System.Windows.Threading.DispatcherTimer (WPF и Silvelight) и System.UI.XAML.DispatcherTimer для приложений Win Store еще есть - это все аналоги, которые вызывают исполнение метода в том же потоке, что и был вызван. Благодаря этому, обеспечивается доступ к элементам графического интерфейса, но при этом сюда лучше не помещать сложную вычислительную логику
    Ответ написан
    Комментировать
  • Не поздно ли начинать программировать?

    FirstX
    @FirstX
    .net developer
    И вот у меня возникли такие вопросы:
    1) Не поздно ли в 25 лет начинать программировать?


    Так спрашиваете, будто вот-вот уже пенсия. Люди и гораздо позже начинают. Разница лишь в том, что если вы хотите на профессиональном уровне этим заняться, то вам придется и изучать более ускоренно. Так сказать "пятилетку за 2 года". Основная фишка - не возраст, а мозги. Что толку от того, что человек со студенчества занимается программированием, но не растет профессионально.

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

    2) Не будет ли человек 26-28 лет отталкивать на собеседовании работодателя предъявив диплом гуманитария, да и вообще не совсем ли дико идти на джуниора в таком возрасте?


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

    3) Нужно ли идти учиться заново? Если да — то заочка с нуля или магистратура с имеющимся дипломом? Учитывается и значимость такого диплома в случае эмиграции в абсолютно любую страну.

    Если вопрос стоит об эмиграции, то диплом нужен, при чем не абы какой. В России ситуация тоже не самая определенная, поэтому если физически у вас останутся еще силы, то наверное лучше поступить на заочку на второе высшее. Только нужно учитывать, что обучение в вузе будет иметь мало точек соприкосновения с реальным промышленным программированием, поэтому придется, помимо предварительно изучения ООП и языка:
    1. Работать джуниором
    2. Изучать активно технологии по которым работаете и
    3. Изучать программу вуза, сдавать сессии) - не каждый может сразу так на старте осилить.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (1)