Как проверить навыки кандидата на собеседовании?

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

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

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

А вот далее желательно попросить написть немного кода для демонстрации, чтобы показать на самом ли деле он это умеет делать и еще можно попросить выполнить тестовое задание(если не боитесь, что кандидат отвалится).

+Отличным показателем являются аккаунт на github, активность в блогах, форумах и т.д.

О том как лучше спрашивать, мне понравилась вот эта статья – http://prohr2.ru/%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE-%D0%B6%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%8B-%D0%B8-%D0%BA%D0%B0%D0%BA-%D1%81-%D0%BD%D0%B8%D0%BC%D0%B8/

 

 

 

Ruby On Rails GEMS – CRUD контроллер с decent_exposure

Решил я недавно вспомнить RubyOnRails на котором писал 3 года и было это 2 года назад, поэтому вспоминать пришлось многое, хотя и не все.

Рельсы и руби славятся тем, что с помощью них можно быстро писать код. При этом код еще и легко читается – в результате меньше ошибок, быстрее скорость разработки. Помимо красивого кода в рельсах богатый вспомогательный инструментарий, но не все ограничивается рельсами – существует много дополнительных компонентов, в терминологии рельсов это гемы(gems).

Об одном из них и этот пост, называется он decent_exposure, его задача упростить наисание CRUD контроллеров.

Подробно с этим компонентом можно ознакомиться перейдя на гитхаб проекта – https://github.com/hashrocket/decent_exposure

Ниже пример использования 🙂

 

Изучение английского языка

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

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

У меня в школе и в ВУЗе янглийский преподавали слабо и безрезультатно, хотя у меня и четверка по этому предмету 🙂 К моменты начала официальной работы(не фриланса) я уже почитывал техническую литературу и вроде бы неплохо с этим справлялся, так и продолжалось довольно длительное время, иногда я даже читал какие то книги, но большого эффекта это не давало, хотя субъективно уровень владения и понимания улучшался.

Но случилось так, что я задумался об изучении английского языка, да так, чтобы наконец хоть как то уметь на нем разговаривать и понимать то, о чем говорит собеседник, а не только понимать прочитанное. Попробовав несколько онлайн сервисов и даже заплатив около 500 рублей за обучение в lingualeo, я понял, что нужно что то посерьезнее и начал искать языковую школу, выбор пал на English First.

Обучение в English First открало для меня ангийский язык по-настоящему, для меня их онлайн площадка это  наверное самый крутой и эффективный способ изучения английского языка, правда я не прошел курс полностью и не смог познать всю систему целиком, но это уже было прорывом для меня. Дело в том, что онлйн-платформа этой школы позволяла изучать язык со всех сторон(грамматика и чтение, слушание и говорение), я был в некотором учебном шоке “ну почему у нас в стране так не делают в школе и ВУЗе?”, а может бть где-нибудь и делают…но я об этом не знаю и не слышал 🙂 Из недостатков было одно – на мобильном это все не работает и нужен Adobe Flash со всеми вытекающими, и да еще был одн недостаток – цена, 70к за полгода…но я рискнул и несмотря на то, что прошел курс не полностью – мне понравилось и я понял как нужно учить язык 🙂

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

А чем пользуетесь/пользовались вы для изучения английского языка?

Проектирование Web API

Одним из самых распространенных подходов при проектировании API является REST API, что такое REST API можно узнать здесь.

Я же хочу рассказать о тех принципах, которые помогут сделать ваш API удобным для других разработчиков, т.е. для ваших клиентов.

Перейдем к принципам, поскольку для REST используется протокол HTTP, то он силньо завязан на его особенностях и в частности на адресе URL.

URL

Чтобы ваш API было легче понимать уделите особое внимание идентификаторам ваших ресурсов(URI):

  1. делайте минимальными и понятными(краткое название ресурса);
  2. абстрактные ресурсы лучше заменить на конкретные(/videos вместо /items)
  3. не используйте в них глаголы, вместо них используйте HTTP методы (POST, PUT, GET, PATCH, DELETE);
  4. используйте в названии только множественное или только единственное число для ресурсов во всем проекте;
  5. используйте не более двух адресов на один ресурс (/videos и /videos/{id});
  6. для вложенных ресурсов используйте URL вида /videos/{id}/comments;
  7. используйте простые и прозрачные имена в параметрах запросов после знака “?”;

Ошибки

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

Версии

Всегда версионизируйте API, например с помощью префикса /v1 или в заголовках и поддерживайте как минимум две последнии версии. Это позволит вашим клиентам плавно и без проблем переходить на новые версии вашего API.

Пагинация и поля ответа

Испольуйте для пагинации параметры limit и offset, не забывайте возвращать в ответе общее количество доступных ресурсов.

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

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

API субдомен

Выделите для вашего API отдельный субдомен(например api.example.com/v{version_id}) и сосредоточьте все ваше API в зоне этого субдомена.

Формат

Для передачи формата входных и получаемых данных указывайте формат в виде расширения файла(например /v1/videos.json) и обеспечьте поддержку нескольких форматов данных.

Интеграция и документация

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

Golang: пакеты

По поводу пакетов в голанге есть множество статей и ресурсов, например – https://thenewstack.io/understanding-golang-packages/. Но лично у меня в самом начале изучения этого языка прграммирования возникли две проблемы:

  1. Как использовать пакеты внутри совего приложения для разделения кода(что-то вроде namespace в других языках);
  2. Ошибка цикличного импорта пакетов.

Первый вопрос снимается легко, допустим у нас в проекте с названием project7(директория /go/src/project7) есть модели и контроллеры в соответствующих директориях(models и controllers), тогда мы можем их использовать в нашем главном файле main.go вот так:


То есть, по сути мы просто используем их как локальный неймспейс, все очень просто.

Проблема циклических импортов возникает, когда вы ипортируете пакет, который импортирует пакет из которого вы производите импорт.

Т.е. получается, что вы попадаете в бесконечный цикл импорта, так как оба пакета импортируют друг друга.

Избежать этой проблемы легко – используйте интерфейсы.

Еще одна попытка создать свой блог

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

В общем возможно блоги это уже немодно, но блоги создаются для себя, он же дневник.

“Вот говорят, лиха беда начало, но, поверьте, самое трудное — это вовремя остановиться.”