Почему нужно знать о фреймворках и библиотеках? Как IT рекрутер, вам уже недостаточно знать только названия определенных языков программирования – вы также должны понимать основы того, как создается программное обеспечение.
Когда речь заходит о создании производственного программного обеспечения, необходимо учитывать два очень важных фактора: во-первых - разработка приложений становится все более сложной. Во-вторых, программисты всегда стараются быть более результативными в своей работе. В результате каждая команда программистов должна решить, следует (или нет) создавать приложение, используя либо фреймворк, либо библиотеку ПО (или несколько библиотек).
По той же причине вы должны знать, какие библиотеки и фреймворки имеют отношение к определенной должности, на которую вы подбираете сотрудников. Так как сможете найти разработчиков, наиболее подходящих для вакансии. Полное понимание того, как языки программирования, фреймворки и библиотеки работают вместе, позволит вам действительно выделиться на фоне коллег (а также позволит вам чувствовать себя более уверенно, когда вы говорите "о технологиях") с кандидатами.
В чем разница между фреймворком и библиотекой?
Основное различие заключается в вопросе о том, кто контролирует определенные ключевые действия в процессе создания программного обеспечения (и когда программное обеспечение фактически работает).
Например, когда разработчик использует функцию из библиотеки, он контролирует – другими словами, код разработчика полностью контролирует последовательность событий. Однако в случае фреймворка направление управления инвертируется (это называется инверсией управления), поскольку фреймворк управляет разработчиком – в данном случае фреймворк управляет кодом разработчика. В каком-то смысле фреймворк работает так же, как и так называемый голливудский принцип: "Не звони нам, мы тебе позвоним".
Итак, что же такое фреймворки и библиотеки? В частности, в чем разница между этими двумя понятиями?
Какова цель фреймворков и библиотек?
Как вы, вероятно, знаете, код приложения, написанный программистами, постоянно меняется по мере того, как приложение, над которым они работают, развивается. Однако фреймворки и библиотеки являются фундаментальными строительными блоками, которые не меняются и используются в качестве структуры конкретного приложения. Как библиотеки, так и фреймворки были разработаны программистами для сокращения необходимости выполнения повторяющихся задач снова и снова. Они также могут обеспечить некоторую функциональность без необходимости реализовывать ее с нуля.
Что такое библиотеки в кодировании?
Библиотека - это набор функций, к которым разработчик может получить доступ. Библиотека обычно организована в так называемые "классы". Вся идея такой библиотеки заключается в том, что она содержит код, который можно повторно использовать для определенной цели в определенном домене. Таким образом, библиотека упрощает конкретные задачи, предоставляя набор общих функциональных возможностей. Затем они готовы к использованию в программном обеспечении. Например, большинство языков программирования предоставляют библиотеки для функциональных возможностей, таких как форматирование строки или ведение журнала исключений, которые могут возникнуть. Используя соответствующие библиотеки, разработчики могут сократить объем кода, который им необходимо написать. В то же время хорошо известные библиотеки имеют хорошую документацию и были протестированы. Поэтому в большинстве случаев IT специалистам лучше пользоваться библиотекой, а не тратить время и силы на написание, тестирование и документирование собственного кода.
Что такое фреймворк в программировании?
Фреймворк можно описать как архитектуру, которая облегчает реализацию программного обеспечения хорошо организованным образом. Такая структура воплощает некоторую заранее определенную абстрактную конструкцию, которая связана с более встроенным поведением, чем в случае с библиотекой. В фреймворке весь поток управления уже находится на месте, где разработчики могут разместить свой собственный код. В результате фреймворк определяет скелет, в котором разработчики конкретного приложения определяют свои собственные функции для заполнения этого самого скелета. Другими словами, фреймворк можно рассматривать как набор шаблонов и библиотек, которые помогают программистам создавать приложения. С другой стороны, фреймворк также диктует архитектуру приложения. Например, он будет определять общую структуру, разделение на классы, ключевые обязанности классов и способы взаимодействия объектов.
Когда лучше использовать фреймворк и библиотеки?
Как и в случае с любой реальной проблемой, это сложный вопрос, на который трудно дать четкий ответ в каждом конкретном случае. Например, команда с большим количеством младших разработчиков может быть лучше с фреймворком, который, следовательно, обеспечивает определенную структуру и определенные стандарты, диктуя команде, как она должна создавать продукт. С другой стороны, опытной команде, работающей над приложением, которое не является заурядным и имеет нишевую функциональность, может быть лучше использовать библиотеку (или библиотеки), а не фреймворк, потому что это дает им большую гибкость и контроль. В более экстремальных случаях, возможно, даже лучше для конкретной команды разработчиков создавать ПО полностью с нуля, не используя ни фреймворк, ни библиотеки.
На что обращать внимание при отборе кандидатов, которым необходимо знать определенные фреймворки и библиотеки?
Вот мини-FAQ о том, как языки программирования, фреймворки и программные библиотеки используются в реальном мире. Там, где это уместно, мы также добавили некоторые предложения о том, на что следует обращать внимание при отборе кандидатов.
Вопрос: Могут ли программисты кодировать приложение без библиотеки или фреймворка, но используя только свой собственный код, написанный с нуля?
Ответ: Да, они могут, но это всегда займет больше времени.
Вопрос: Могут ли программисты кодировать приложение, используя фреймворк плюс какой-то свой собственный код?
Ответ: Да, они могут.
Вопрос: Могут ли программисты программировать приложение, используя либо одну библиотеку (или несколько библиотек), либо часть своего собственного кода?
Ответ: Да, они могут.
Вопрос: Могут ли программисты написать свою собственную библиотеку?
Ответ: Да, и большинство программистов делают это в процессе своей собственной работы. Это один из лучших способов избежать любой формы дублирования, которая не нравится всем разработчикам. Они иногда решают выпустить в сообщество библиотеки, которые оказались особенно полезными. Как рекрутер, стоит спросить кандидатов, сделали ли они какие-либо такие вещи с открытым исходным кодом.
Вопрос: Могут ли программисты кодировать приложение, используя фреймворк плюс одну библиотеку (или несколько библиотек) плюс свой собственный код?
Ответ: Да, они могут. Если команда разработчиков уже знакома с фреймворком и соответствующими библиотеками, и конкретный фреймворк хорошо подходит для той области, в которой будет работать новое программное обеспечение, то такой подход, скорее всего, будет наиболее эффективным и действенным. Это означает, что при подборе персонала вы ищете разработчиков, которые уже знакомы с фреймворками и библиотеками, используемыми вашей командой в данный момент.
Вопрос: Возможно ли, чтобы библиотека устарела?
Ответ: Да, но это вряд ли произойдет с хорошо известной библиотекой, которая обеспечивает значительную функциональность.
Вопрос: Возможно ли, чтобы фреймворк устарел?
Ответ: Да, и это один из потенциальных недостатков использования фреймворка. Фреймворки приходят и уходят, и даже если фреймворк популярен в течение длительного времени, любой фреймворк может резко измениться от одной основной версии к другой основной версии. Конечно, создатели популярных фреймворков пытаются ограничить такие изменения, но это может произойти и происходит. Вы должны стараться быть в курсе, по крайней мере, основных изменений в рамках, используемых вашей командой.
Вопрос: Могут ли программисты создать свой собственный фреймворк?
Ответ: Да. После того, как команда программистов закончила создание нового типа программного обеспечения, довольно часто случается, что, основываясь на своем конкретном опыте, они позже создают структуру, которая предназначена для того, чтобы сделать возможным создание аналогичного типа ПО способом, который значительно более эффективен. Это хорошая идея, чтобы просмотреть резюме и увидеть был такой опыт у кандидата.
Вывод
Как IT рекрутер, очень важно, чтобы вы отбирали кандидатов не только с точки зрения языков программирования, но и с точки зрения фреймворков и библиотек.