Переход из C++ в Java.

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

Так что, я решил подойти к вопросу просто. А что может быть проще и логичнее чем поинтересоваться у HR о текущем спросе на Core Java разработчиков? Что я и сделал.

Хотя каких-то дельных ответов в самой ветке обсуждения я не получил, довольно много кто отписался лично. Несколько человек спросило не интересна ли мне работа связанная с C++ на суммы от 150 до 180, что, живи я в МСк, могло бы быть интересным. А еще несколько человек поделились по секрету информацией о том, что Core Java разработчик, обычно, претендует на 100-150, само собой, в той же МСк.

Так что, никакого экономического смысла в таком переходе нет. Специалисты со знанием C++ как были нужны, так и будут нужны еще много лет. А мне только-только начала нравиться Java %)))

Зачем пишут OpenSource приложени и что же можно написать…

На днях на РСДН всплыли сразу две интересные темы Для чего создаются Open Source проекты Задачки для самообразования. Лично у меня давно сформировалось мнение относительно этих вопросов, которым мне и хочется поделиться.

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

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

Во-вторых, OpenSource проект это – экономия времени при поиске работы. Довольно часто потенциальный работодатель просит пример кода либо выполнить тестовое задания. Так как при отсутствии собственных проектов такой код взять неоткуда, разве что украсть у предыдущего работодателя, то приходится или делать тестовое задание, или отказываться от вакансии. В то же время, вместо выполнения тестового задания всегда можно прислать ссылку на собственный OpenSource проект.

Continue reading

Обзор от PRUFFI

PRUFFI последнее время стал делать какое-то подобие обзора ЗП на IT рынке. В целом обзор не шибко информативен и, как мне кажется, несколько оторван от жизни. Я, вобщем-то представляю, где можно найти работу тимлида с оплатой в 150-170 тыр, но вот где дают 200-250? Теряюсь в догадках.

Как перейти из C++ разработки в Java.

Работа – штука занятная. Бывает что пишешь в течении 10 лет на плюсах, знаешь их довольно хорошо, и, вдруг, херась, и ты стал ведущим Java-разработчиком. Причем, ты даже не хотел переквалифицироваться, т.к. работодатели разрывали на куски, да и вообще инструмент нравился. Но, раз уж ввязался, не разрывать же контракт из-за такой мелочи как новый язык программирования.

Тем не менее, после такой неожиданной «переквалификации», остро встает вопрос вхождения в тему. Да, языки похожи, но библиотеки имеют мало чего общего, да и вообще, надо бы понимать что ты делаешь. Конечная цель в моем случае, выглядит приблизительно так: сетевая низкоуровневая разработка + безопасность + немного WEB-морд (Spring + JSP).

Так как долгая разработка сетевых и распределённых приложений на плюсах дает довольно хороший бэкграунд, то, в качестве «Ведения в Java» пришлось прочесть/пролистать не так уж и много. Самое полезное, что я нашел:

  1. The Structure of the Java Virtual Machine. Глупо работать с инструментом, не имея представления о его внутреннем устройстве. Так что начать надо именно с этого.

  2. Memory Management in the Java HotSpotTM Virtual Machine. Терпеть не могу работать с каким-то языком, не зная как же язык обращается с памятью. На мой взгляд, это одно из основных знаний о любом языке программирования

  3. Java for C++ Programmers. Небольшое введение в язык. Все основные вопросы рассматриваются, писать код можно начинать сразу после прочтения.

  4. Effective Java , Second Edition . Joshua Bloch. Чем-то напоминает книги «Эффективное использование C++». По большому счету, чтобы понять Java после C++ этого полностью хватает.

  5. Java Network Programming . Elliotte Rusty Harold . Книга довольно бестолковая, тем не менее это лучшее что я нашел по сетям в Java. Читать не стоит, а пролистать — очень даже.

  6. Java Concurrency in Practice. Brian Goetz, … . Аналогично предыдущей. Читать много и муторно, но пролистать надо.

Собственно, это все, что на данный момент мне кажется нужным для нормального вхождения, т.е. выполнения первого пункта «сетевая низкоуровневая разработка». Как пройду ребус дальше — отпишусь.

Многообещающе

Открылся, как мне кажется, довольно многообещающий сервис по поиску работы Карьера 2.0 на небезызвестном StackOverflow. Регистрация соискателей либо по приглашению, либо за заслуги “перед отечеством”, в моем случае проекты на GitHub зачлись. С учетом бешенной популярности StackOverflow, думается, что данный сервис может очень пригодиться в поиске работы.

Трудоустройство в Samsung.

Привет тебе, читающий этот популярный пост. Перед тем как серьезно воспринимать написанное подумай! Со времени написания поста прошло не менее 7 лет и многое кардинально изменилось!

Несмотря на то, что Корея в целом и Самсунг в частности являются центрами мирового зла, возможно кому-то будет интересно как туда попасть или почему туда кто-то может хотеть попасть. Continue reading

Mac разработчики редки и ценны :)

На РСДН-е появилась вакансия Mac OS X разработчика в Каспер. Что странно, денег дают даже больше чем разработчикам вендовых драйверов. Честно сказать, меня это удивляет, с учетом того, что требования к разработчикам под MacOS довольно низкие. Ни у кого нет Маков? Ни кому под них не интересно писать?

Но в любом случае: добро пожаловать

Классическая задача для собеседования в реальной жизни

Случилось странное – я столкнулся с буквально классической задачей с собеседования в реальной жизни. Задача состоит в том, что необходимо найти первый не нулевой бит в массиве. Поиск должен происходить максимально быстро, скорость поиска желательно получить приближённую к линейной. Никаких правил по распределению единиц в массиве нет. Массив не велик и должен не вылезать за пределы одной кэш-линии.
Родились 3 варианта алгоритма, одна часть которого общая во всех случаях, вторая специфическая.
Общая часть сводится к поиску первого 32 разрядного слова с хотя бы одним не нулевым битом. Дальше, в найденном 32 разрядном слове ищем первый не нулевой бит. Я не знаю как можно оптимизировать первую часть алгоритма, так что ищу простым перебором. Continue reading

Как не надо писать вакансии

Обычно, вакансии C++ разработчиков выглядят довольно логично. Но иногда попадаются просто редкостные уродцы. Вот небольшой кусочек одного из них:

Вам нравится программировать и решать нетривиальные задачи? Вы читали Страуструпа и Александреску, отличаете Composite от Decorator и знаете, где в памяти размещаются статические данные? Умеете исследовать дампы и поддерживать legacy код, но при этом вам по душе применить пару-другую паттернов в новом проекте? Тогда мы с нетерпением ждем ваше резюме на позицию Software Developer C++!

Что интересно, из описания сразу становится очевидно, что код у них не поддерживаемое говно, т.к. рьяные поклонники Александреску другого писать не могут. Так же на коде тренируется огромное количество школоты, которой денег не плати, но дай вхерачить пару-другую паттернов. И что самое занятное, эту школоту явно допускают до собеседований, т.к. в тексте явный намек на то, что надо на зубок знать все стопицот существующх паттернов. И как следствие, код выходит на редкость падучий, на что нам намекают в пункте про исследования дампов.

Странные собеседования

В последнее время мне “везет” на странные собеседования. Чтоб было понятнее о чем я говорю, странные собеседования отличаются от нормальных неким неожиданным волшебным поведением противоположной стороны. Итак, пообщался я с R&D подразделением одного крупного американского банка, сидящим в солнечном “бананово лимонном” и гордым маленьким стартапом из не менее солнечной Калифорнии. Что довольно важно, или может на оборот, не важно, менеджеры принимающие итоговое решение были русские.
Continue reading