Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Cpp

13 способов, как программисту отпугнуть работодателя

Булат Ганиев, управляющий партнер ГК «Технократия»:

Вокруг дураки

Если человек хейтит всех коллег из прошлого — скорее всего, он и есть центральный дурак.

Галлюцинации по поводу зарплаты

Когда человек думает, что его завалят деньгами просто за выбор индустрии, — это галлюцинации. Мы ищем тех, кто в первую очередь любит свою работу, а блага, которые она приносит, — во вторую.

Ультимативная модель общения

Бывает, что на собеседовании человек пытается манипулировать тем, что у него уже есть несколько шикарных офферов. И намекает: если мы хотим его получить, то лучше прямо сейчас начать умолять его на коленях и преподносить дары.

Акцент на геройстве

Рассказы в стиле «всё было на исходе, но я всех подвинул и спас ситуацию». Это говорит скорее о неумении работать в команде, нежели о реальном геройстве.

Акцент на регалиях

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

Узкий кругозор

Кандидат должен понимать общие вопросы устройства IT-компаний и сопряженных процессов. Мир движется в сторону самоорганизованных продуктовых команд.

Вредные привычки

Был случай, когда соискатель пришел после бурной пьянки и мы с трудом вынесли час общения с ним в переговорке. Курить до собеседования тоже не стоит (да и вообще:)).

Антон Боев, технический директор digital-компании DD Planet:

Замкнутость

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

Михаил Калиниченко, генеральный директор «Протекшен Технолоджи»:

Чрезмерное трудолюбие

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

Александр Альхов, основатель образовательного проекта Courseburg.ru:

Нежелание задавать вопросы

Некоторые разработчики приступают к задаче без уточняющих вопросов, не включая голову. В итоге выясняется, что сделано не то. А на вопрос «Почему не уточнил задачу?» следует невнятный ответ. Даже программисты, которые сидят рядом в офисе, могут несколько дней говорить: «Сегодня доделаю», — вместо: «Кажется, у нас проблема. Эта фича точно нужна?»

Любовь «покодить»

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

Любовь к «творчеству»

К поставленной задаче некоторые хотят добавить что-нибудь авторское. Одного программиста попросили разместить блок с картинкой, на которой был небольшой текст и кнопка. А он зачем-то сделал обрамление так, что блок стал похож на стандартный рекламный баннер. Когда спросили, зачем он так сделал и почему даже не посоветовался, ответил: «Мне показалось, что так лучше». За вопросом «Но ты же понимаешь, что это похоже на рекламный баннер, а не на интерфейс сайта?» последовало невнятное мычание.

Иван Монахов, технический директор компании Attack Killer:

Успокоенность

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

      Главное — помнить, что все относительно

 

Галина Марчук, CPO в YouScan:

Ни одно качество не является «анти-» без других вводных. Один и тот же человек будет органичен в одной команде и чужаком в другой. Это зависит от культуры, обязанностей, необходимости общаться с командой или клиентом, процессов. Смысл не в том, чтобы скрыть какие-то скиллы или любой ценой исправиться, а постараться найти для себя максимальное совпадение. Хотя работа над собой тоже никогда не будет лишней.

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

А как вы считаете, есть ли качества, от которых в 100 % случаев разработчику лучше избавиться?

Пройти обучение

20 фев 19, 16:03
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Умная елка с защитой от котиков и другие новогодние идеи

Программируемая елочка на Arduino

Центр новогоднего интерьера — елка! Оформить ее необычно может каждый, но сделать ее «умной» — работа и развлечение для программиста. Посмотрите, какую елочку собрал в этом году преподаватель GeekBrains Иван Овчинников.

Елочка умеет:

  • включаться и менять режим работы по касанию ключа от домофона,
  • рисовать пиктограммы на диодном экранчике 8х8,
  • всячески мигать,
  • играть любую заданную мелодию (в нашем примере — Jingle Bells).

Чтобы сделать такую или похожую елку, читайте рецепт и смотрите код ниже!

Вам понадобятся:

  • Arduino Nano,
  • NFC-метка RC522,
  • круг из 24 диодов (24 LED circle),
  • матричный LED-экран 8x8,
  • пассивный зуммер (passive buzzer),
  • гирлянда (DIY LED),
  • несколько проводов, резисторов и делителей напряжения.

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

Рецепт и пояснения от Ивана:

Берем плату Arduino Nano и подключаем к ней светодиод. Он будет гореть, когда елка включена, то есть послужит индикатором питания. Если это ваш первый опыт, найдите примеры на YouTube. Суть в том, что вы подаете напряжение на контакт (пин) платы, к которому присоединен LED, который и загорается.

Да и вообще это всегда первый шаг, как hello, world. Сначала учитесь подавать и выключать напряжение на контактах (пинах), потом делаете это по времени, дальше используете ШИМ, чтобы варьировать напряжение. То есть надо постепенно усложнять задачи.

Для тренировки можно, например, написать программу, которая будет сигналить SOS или плавно, по синусоиде, регулировать яркость диода.

Подключаем к Arduino «пищалку» (passive buzzer), которая будет играть мелодию. Ноты можно подобрать на слух или скачать в интернете. Как превратить нотную запись любой композиции в Arduino-код, пригодный для воспроизведения зуммером или колонкой, — читайте здесь.

Управляем пищалкой, как и диодом: подаем определенное напряжение на один из контактов.

Подключаем к Arduino круг из 24 диодов. Здесь управление чуть сложнее — надо задать не только адрес диода на ленте, но и его цвет. Для адресов используем цифры от 1 до 24, для цвета — палитру RGB. Что может быть удобнее? Отправляем значения напряжения на соответствующие контакты.

Делаем пульт управления из ключа от домофона. В моем случае ключ — это брелок с NFC-меткой, но носителем чипа может быть и карточка, и телефон, и другой предмет.

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

Возвращаемся к елке. Для работы с NFC берем плату расширения к Arduino MFRC522. Выясняем идентификационный код (UID) ключа. Это просто: в комплекте расширения есть считыватель, который фиксирует, кто и с какими данными к нему прикоснулся. Информация с чипа отправляется на последовательный порт Arduino по протоколу SPI. Ее можно вывести на экран:

Serial.println(uidDec);

Теперь задать реакцию елки на прикосновение к пульту — дело одного if().

Настраиваем экранчик 8х8 — тут больше всего программной мороки, но не волнуйтесь. Чтобы управлять диодами, надо указывать их адреса: строку и положение — в двоичной системе счисления. Например, если я передаю «1, b’10000001», в первой строке загораются первый и последний диоды. Еще я реализовал функцию отрисовки пиктограмм: диод загорается за диодом с интервалом 100 мс. Для этого я быстро написал программку на Java — ее код вы найдете в репозитории.

Готовим гирлянду. Придется много работать руками: параллельная пайка диодов — дело простое, но довольно занудное. Зачистил провод — припаял к ножке диода, зачистил провод — припаял с другой стороны, надел термоусадочную изоляцию, провел зажигалкой… И так по два раза на диод: для «питания» и «земли» (анода и катода соответственно). В моей гирлянде диодов 12, на большее не хватило вечера воскресенья. :)

Код: на GitHub.

Дополнительная идея

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

Защита елки от котиков (и котиков — от елки)

Вы ведь не хотите, чтобы ваше творение рассыпалось в прах при атаке фурри-мафии? Вызовет ли елка гастрономический интерес питомцев или вдохновит их «достать звезду» с верхушки — пострадать могут все, включая ваше хорошее настроение.

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

В интернете есть Arduino-рецепты отпугивателей для кошек и собак, но действуют они не на всех. Да и не надо! Лучше не отпугивать питомца, а отвлечь. Эту идею подал сетевой администратор, владелец котика и Arduino-энтузиаст Александр, а развить помог Иван Овчинников.

Котейка подходит к елке — включается отвлекающий сигнал в другой части комнаты. Кот отходит на безопасное расстояние — сигнал выключается.

Простейшая реализация: берем две Arduino Nano и обе расширяем модулями Bluetooth. К плате на стороне елки цепляем датчик-дальномер.

Вторую «Дуню» размещаем в противоположном от елки углу и ставим на нее простой зуммер. Будем имитировать интересный котику шуршащий звук — будто скребется мышь. Для этого можно подавать очень короткие низкочастотные сигналы: по 50–100 мс.

Если вместо «пищалки» будете использовать mp3-модуль, лучше не включайте записи голосов других котов, чтобы ваш не заподозрил конкуренцию и не начал метить территорию. :)

При старте создаем пару «передатчик-приемник». Елка включается — проверяет датчик и, если кто-то совсем близко, отправляет сигнал на удаленную плату, а та шуршит.

Можно сделать два режима: для людей и для котиков. Если кто-нибудь подходит к елке на метр-полтора, гирлянда приветственно мигает. А если объект уже в полуметре или ближе — включаем отвлекающий элемент.

Шары с багами и кодом

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

{
Mate.beHealthy();
Mate.beWealthy();
Mate.beWise();
}
while (Mate.age < 125);

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

LED-гирлянда за 5 минут

Совсем нет времени, но хочется сделать что-нибудь новогоднее на Arduino? Возьмите рецепт «ленивой гирлянды» с Project Hub! На днях автор проекта как раз оптимизировал код и добавил новые режимы мигания.

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

Просто спаяйте три проводка, загрузите программу на плату — и анимированная гирлянда готова! А если разыграется фантазия и захотите поупражняться, всегда можно добавить собственные режимы мигания.

Чтобы выбрать для своей гирлянды только самые красивые анимации, загляните в файл xtmas_neopixel_lite.ino из git-репозитория проекта. Как всегда в таких случаях, лучше не удалять лишнее из списка. Просто закомментируйте начало строк с объявлением ненужных анимаций — так вы сможете быстро вернуть все на место, если передумаете.

Пример:

symmRun symRun;
//metSingle mtrSgl;

После этого надо будет исправить ссылки на классы в массиве анимаций — добавить и/или убрать необходимое.

animation* anims[] = { ... };

Простенький, но приятный новогодний штрих к интерьеру!

Главное, чтобы ко всем внешним атрибутам праздника прилагались добрые человеческие отношения и стремления. Новый год должен быть счастливее уходящего — постараемся сделать его таким. Хороших вам праздников!

Пройти обучение

24 дек 18, 19:38
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

С++ как первый язык: путь преподавателя GeekBrains

В мире программирования если не все, то очень многие дороги ведут к Си. Интерпретаторы и компиляторы большинства модных сегодня языков написаны на С/С++. Если вы хотите выжать максимум из любого «железа», программировать роботов, создать свою ОС, свой язык или другую мощную и жадную до ресурсов штуку, надо учить «плюсы». Это де-факто стандарт и в крупных игровых студиях, таких как Electronic Arts и Blizzard.

Но есть ли смысл выбирать С/С++ в качестве первого языка программирования? И откуда взялся вокруг Си ореол неприступности? Я решила обсудить это с преподавателем GeekBrains Иваном Овчинниковым.

Иван начал изучать С++ с нуля в 29 лет. Сейчас ему 33 и он — ведущий специалист и начальник группы программистов в центре разработки информационных систем АО «Российские Космические Системы».

— Иван, в чем, на ваш взгляд, сила «плюсов»? Можно ли сказать, что на сегодня это — «Царь-язык»?

— Я против ранжирования языков, потому что каждый из них решает свои задачи. В целом, языки С/С++ отличает чрезвычайная скорость исполнения и тотальный контроль над происходящим.

Да, можно сказать, что С++ — один из самых влиятельных языков программирования и прародитель многих других ЯП. Это универсальный инструмент, который позволяет подобраться к «железу» ближе, чем любой другой высокоуровневый язык. Вы можете программировать микроконтроллеры и серьезную аппаратуру, ускорять требовательные к ресурсам системы.

— Зачем учить сложный язык, если можно выучить простой? Все наверняка слышали страшилки, что С++ адски сложен и коварен. Что вы об этом думаете?

— Выучить названия всех фреймворков для JavaScript куда сложнее, на мой взгляд!

Прежде всего нужно определиться, зачем вы идете в программирование.

Если у человека программа-максимум — всю жизнь верстать сайты для знакомых или писать попсовые приложеньки для хипстеров, учить С++ совершенно не обязательно. А если вы хотите написать свою операционную систему или программировать роботов, которые полетят в космос и будут кататься по другим планетам — добро пожаловать в С++!

Конечно, С/С++ устроены нетривиально: многое в них не так просто понять и выучить. Но это возможно. И это сильно расширит ваши возможности как программиста.

Опытные разработчики любят пугать новичков «этими жуткими плюсами». Правда в том, что простых языков программирования не бывает, как и простой работы. Любая работа — сложная. Работа программиста — тоже, вне зависимости от выбранного языка. И да, дорогу осилит идущий: если не начать изучать С/С++, они так и останутся невероятно и запредельно сложными.

— Как можно упростить изучение C++ для студентов?

— Понятными объяснениями, которые помогли и мне в свое время. Я ведь стал программистом довольно поздно — в 29 лет. До этого никак не был связан с IT-сферой. Поэтому рассказываю студентам о языке, как рассказал бы себе начинающему.

Есть такой канал на Reddit — ELIF (Explain like I’m five — «Объясни, как пятилетнему»). Так можно сформулировать принцип, по которому я стараюсь доносить до людей сложную информацию, в том числе и про «этот страшный Си».

Еще хочу сказать, что в изучении языка (а оно никогда не заканчивается) я для себя изначально выбрал кратчайший путь — путь практики. И это себя оправдывает.

— Как случилось, что к 30 годам вы решили сменить профессию? И почему начали сразу с трудного языка?

— Решение освоить новую специальность пришло быстро и безболезненно. Мук выбора не было, потому что с прошлой профессией при 12-летнем стаже я зарабатывал что-то около 35 тысяч рублей. Это, в принципе, равнялось зарплате начинающего программиста-стажера. А если учесть, что программирование подразумевало интересные для меня задачи, выбор был очевиден.

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

Сейчас профессионально работаю на Java (Spring, VAADIN, EclipseLink). В быту — для себя — очень люблю писать на Python. Например, когда нужен Telegram-бот с напоминалками и детектором, фотографирующим котиков в кадре веб-камеры.

Есть у меня и кусочек умного дома, созданный с использованием Raspberry PI, и маленькая домашняя бухгалтерия на Django. Плюс всякие смешные поделки на Arduino — вроде новогодней елки.

— Сколько времени потребовалось, чтобы начать зарабатывать программированием?

— На поиск первой работы ушло около полугода. Я пришел к работодателю и выложил все как есть: мне 30 и я совсем без опыта, недавно дошел до изучения указателей в С. Попросился работать «за еду и опыт» — взяли. Через три месяца я полностью влился в коллектив и уже обучал коллег, как пользоваться трекерами задач и git-ом.

Огромным плюсом оказалось то, что я попал в молодой коллектив! Большинство ребят недавно выпустились из институтов: у них были еще свежи общие технические знания, а я мог поделиться с ними жизненным опытом. Получился симбиоз.

К тому же у меня в запасе всегда была и остается интересная история, как один тридцатилетний парень решил перевернуть свою жизнь с ног на голову. Начал учить С++, через полгода после устройства на работу — закрыл свое первое ТЗ, а дальше пошло-поехало...

— Какими были ваши первые проекты?

— Первые мои задачи были типовыми для начинающего программиста: надо было разобраться, как работает «вот этот код, написанный чуваком, который год назад уволился».

Мне поручали мелкие доделки готовых программ для аппаратов, которые недавно вернулись с испытаний.

Опытным разработчикам за такие задачи браться скучно, а мне на тот момент — в самый раз. Мне нравилось, что можно посмотреть на готовый код, сделать что-то полезное, но в глобальном плане ничего не сломать.

— Что считаете самым сложным в изучении С++? Есть какие-то темы, которые, если осилишь, то остальное — не сложнее, чем в других языках?

— На мой взгляд, самые сложные темы в изучении С — это указатели, указатели на указатели и указатели на функции. Если уж про них у вас в голове все встанет на свои места, остальное — детский лепет.

С++ сложно выражает идеи объектно-ориентированного программирования (ООП). Нужно время, чтобы вникнуть, чем отличаются между собой виртуальные, абстрактные, приватные и публичные методы. Еще есть модификаторы видимости и связывания, несколько видов конструкторов и деструкторов. С этим тоже нужно разобраться.

Проблема в том, что учебники и руководства по программированию просто вываливают на студента гору информации и как бы говорят: «Либо ты это все запоминаешь, либо ты бесполезен».

Преподаватели «старой школы» действуют по тому же принципу. Они забывают, каково быть новичком. Что программисту с опытом «интуитивно понятно», то для студента — 100500 новых слов, не подкрепленных опытом и практическими навыками. Студент еще не понимает внутренних механизмов языка и не может увязать их с реальным кодом.

Поэтому при подготовке учебного курса по С++ в GeekBrains мы старались оценить материал глазами новичка, который никогда раньше не программировал.

— Я слышала, что в C++ легко допустить ошибки, которые потом очень сложно найти, потому что в языке нет «защиты от дурака». Так ли это? Или главная сложность все-таки в другом? Если говорить именно об особенностях языка, а не о проблемах мотивации студента.

— Да, когда вы работаете с языками типа С/С++, легко наделать ошибок, которые могут годами себя никак не проявлять. Но они связаны не с самим языком или «защитой от дурака», а, скорее, с невнимательностью программиста.

Возьмем, к примеру, потоки ввода-вывода. Их надо закрывать и в Java/C#, и в C++. Если в Java/C# поток не закрыть, он будет висеть и тормозить программу. Если в C++ поток не закрыть, он будет… Да! Висеть и тормозить. А проявится проблема когда? Когда таких незакрытых потоков наберется сотня-другая.

Так что проблема не в инструменте, а в руках и голове, которые его используют. Но эти «сакральные» знания приходят только с опытом. Никакие курсы и учебники этого не дадут.

— Спрошу как раз о том, что дают курсы. Как вы балансировали учебную программу? У С/С++ очень много применений, а времени на изучение — всего год.

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

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

Главное, вы будете понимать, как все работает, и узнаете о разных подходах к решению задач. Это заложит фундамент, на котором вы сможете строить то, что вам интересно. Конечно, придется много трудиться самостоятельно: читать, экспериментировать. Но вы уже не «потеряетесь» в языке.

— Я обратила внимание, что в учебном плане первым курсом идет Linux. Основы работы с этой ОС закладываются еще до уроков С/С++. Понятно, что Linux повлиял на многие платформы, в том числе MacOS и Windows. Но почему в курсе С++ такое внимание именно этой ОС?

— Считаю, что Linux — краеугольный камень в изучении программирования. Без знания этой ОС вы не сможете создавать кроссплатформенные приложения, потому что не будете понимать, в каком окружении им предстоит работать. 96 % устройств в интернете — это UNIX-подобные устройства. Куда без них?

UNIX, который стал родителем Linux и MacOS X, был написан на С. Собственно, С для того и создавали, чтобы написать на нем UNIX. Отсюда и свойства языка — его близость к аппаратному обеспечению. Можно сказать, что история развития современных ОС пересекается с историей языка Cи. И на примере Linux это хорошо видно.

Даже если вы твердо решили программировать исключительно для Windows, знание Linux расширит ваши горизонты: позволит посмотреть на дивный новый мир, от которого вы отказываетесь.

— Иван, спасибо! Что скажете в напутствие своим будущим студентам?

— Если вы повелись на рекламу и пришли в программирование только потому, что тут много денег, — остановитесь. Через пару-тройку лет на нелюбимой работе, которая держит лишь финансово, вы просто свихнетесь от тоски. Но! Если кто-то отговаривает вас становиться программистом, а вы этого очень хотите — игнорируйте мнение этих людей и идите к своей цели. Не пожалеете! Желаю вам заниматься тем, что вам нравится. До встреч!

Пройти обучение

11 дек 18, 15:21
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Показаны все темы: 3

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru