По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Практически каждый специалист в свое время думает, как получить повышение на работе. Перспектива разговора с руководством может напугать, особенно если вы работаете в среде, где навыкам ведения переговоров может уделяться не столько внимания, сколько техническим умениям. Хорошая новость состоит в том, что при правильной подготовке и разумном подходе вы можете увеличить свои шансы на получение прибавки к зарплате. Поверьте, в абсолютном большинстве случаев ваш руководитель не воспримет вашу просьбу как что-то плохое: мы все работаем ради денег, верно? Рассказываем, как подготовиться к такому разговору и что следует учесть. Определите собственную ценность и проведите исследование рынка Перед тем, как просить повышения зарплаты у руководства, важно хорошо понимать, чего вы уже стоите на рынке. Оценивайте не только свои технические навыки, но и пользу, которую вы приносите своей компании. Взяли ли вы на себя дополнительные обязанности или внесли значительный вклад в важные проекты? Составьте список этих достижений и будьте готовы рассказать о них. Подчеркните результаты, которые помогли компании, и то, как ваши навыки помогли бизнесу добиться успеха. Обязательно учтите такие факторы, как ваш уровень опыта, образование и любые дополнительные навыки или сертификаты, которые у вас есть. Следующий шаг — найдите данные о зарплатах программистов в вашем регионе. Обратитесь к ресурсам по поиску работы, чтобы получить представление о средней зарплате специалистов с аналогичной квалификацией и опытом. Здесь вам помогут: hh.ru career.habr.com geekjob.ru budu.jobs www.superjob.ru Даже короткий рисерч поможет вам определить разумный диапазон зарплаты и придаст вам уверенности в будущем разговоре. Также вы можете обратиться к профессиональным карьерным консультантам. Многие из них предлагают индивидуальные консультации, которые помогут вам не просто узнать подходящий вашим навыкам уровень зарплаты, но и определить цели и разработать стратегию для достижения успеха в карьере. Кстати, общение с коллегами, наставниками и другими профессионалами в вашей сфере также принесет пользу — смело обращайтесь к знакомым для получения советов и рекомендаций. Как правильно просить повышение зарплаты: 3 важных шага для подготовки Итак, вы определили желаемый уровень дохода и сопоставили его с зарплатами в вашей сфере. Что делать дальше? Шаг 1: собрать достижения, которые подчеркнут вашу ценность для компании Мы собрали приблизительный список аргументов для руководства, которые вы можете адаптировать под свою сферу и позицию: Профессиональные достижения: выделите конкретные проекты, над которыми вы работали, и обозначьте результаты. Это может быть улучшение перформанса, снижение затрат, повышение качества продукта или другие конкретные показатели успеха. Навыки и обучение: опишите навыки, которые вы освоили или отточили в процессе работы. В них можете включить освоение новых технологий, языков программирования, фреймворков и других инструментов. Влияние на команду и коллег: если у вас есть опыт в роли лидера или наставника, подчеркните свою эффективность для команды. Сюда включите участие в обучении новых сотрудников, улучшение командной работы, улаживание конфликтов и любой другой вклад в коллектив. Решение сложных задач: опишите ситуации, в которых вы успешно решали сложные задачи или преодолевали трудности. Это продемонстрирует вашу способность к решению проблем и адаптации к переменам. Количественные показатели: если возможно, покажите цифры или любые количественные данные, например, увеличение эффективности, ускорение процессов, совершенствование легаси и т. д. Обратная связь от коллег и руководства: если у вас есть положительная обратная связь от коллег и руководства, используйте ее как подкрепление вашего запроса. Сюда относится фидбек по вашей производительности, слова благодарности, мнение сотрудников о ведении совместных с вами проектов. Вы можете добавить любые другие пункты, подтверждающие ваши навыки и ценность. Будьте конкретными, старайтесь фокусироваться на цифрах и фактах. Будет здорово, если вы не просто соберете эти данные, но и подготовите на основе них лаконичную презентацию. Маркированные списки, скриншоты и статистика будут смотреться выигрышно, к тому же, руководитель оценит серьезность ваших намерений и уровень подготовки к важному разговору. Если вы не сильны в составлении презентаций, советуем обратиться к сервису Canva — в нем есть множество бесплатных шаблонов, которые помогут вам сделать аккуратную презентацию с наглядным материалом. Для доступа понадобится VPN. Шаг 2: организуйте разговор так, чтобы он был комфортным для вас и руководителя Тренируйте речь. Как и в любом важном разговоре, рекомендуем заранее потренироваться в том, что вы собираетесь сказать. Можете написать сценарий и отрепетировать его — это поможет вам чувствовать себя более уверенно и убедиться, что вы сможете четко сформулировать свой запрос. Выберите правильное время и место. Лучше не просить о повышении, когда ваш руководитель находится под сильным давлением или еле поспевает за своими дедлайнами. Вместо этого запланируйте встречу в удобное для вас обоих время, чтобы вы смогли без спешки обосновать свою просьбу. Если ваша компания планирует ежегодные или ежеквартальные ревью работы сотрудников, используйте это время, чтобы поговорить со своим руководителем о повышении зарплаты. Это идеальная база для обсуждения вашей работы, достижений и будущего в компании. Шаг 3: Будьте готовы к возражениям Вполне возможно, что ваш работодатель не сможет немедленно повысить вам зарплату. Помните, что сомнения — это нормально, вот несколько потенциальных возражений и способы их опровержения. Смело адаптируйте их под свою ситуацию и будьте готовы применить в разговоре. «Это не подходящий момент» или «мы находимся в сложной экономической ситуации». Ответ: «Я понимаю, что сейчас сложные времена, но я хотел бы обсудить свой вклад и результаты, которых я достиг для компании. Давайте подумаем, как мои усилия помогут успеху компании в будущем». «Ваши обязанности не изменились». Ответ: «Хотя формально мои обязанности могли не измениться, я активно внедрял новые технологии, совершенствовал процессы и принимал участие в проектах, которые принесли компании пользу. Я готов подробно рассказать об этих изменениях». «Мы платим вам согласно рынку». Ответ: «Я изучил этот вопрос и обнаружил, что средняя зарплата для моего уровня опыта и навыков в этой области выше. Уверен, что мой текущий вклад оправдает повышение в соответствии с рынком». «Мы не можем позволить себе повышение вашей зарплаты». Ответ: «Давайте обсудим компромиссы — бонусы, льготы или другие варианты компенсации. Моя цель — не только получить справедливую зарплату, но и дальше вести компанию к успеху». «Мы не видим явных результатов вашей работы». Ответ: «Я подготовил презентацию, в которой подробно описал проекты, над которыми я работал, и их положительные результаты». «Мы должны сначала утвердить бюджет». Ответ: «Я готов дождаться утверждения бюджета, но предлагаю поговорить о моих ожиданиях и оценить мой вклад. Мы можем обсудить конкретную зарплату, когда бюджет будет утвержден». «Мы предлагаем бонусы вместо повышения». Ответ: «Бонусы — хорошее дополнение, но я также буду признателен за повышение базовой зарплаты, которая отразит рост моих навыков и вклад в компанию в долгосрочной перспективе». Таким образом вы можете увеличить свои шансы на повышение зарплаты. Не забывайте — важно быть уверенным в своем запросе, но также быть готовым к компромиссу и обсуждению возражений, которые могут возникнуть у вашего работодателя. Вы поговорили о повышении зарплаты: что делать дальше? Если ваш руководитель одобрит повышение — поздравляем! Обязательно поблагодарите его. Упомяните, что вы с нетерпением ждете возможности брать новые вершины и работать во благо компании. Если же руководство категорически не согласно с желаемой вами зарплатой, уточните, какие показатели вам стоит улучшить, чтобы вы могли получить повышение, либо рассмотрите поиск новой работы. Кстати, вы можете использовать тактику предъявления стороннего оффера. Ее суть заключается в том, что привлечение нового сотрудника, особенно если он редкий, обходится дороже, чем удержание нынешнего. А если на сотруднике замыкаются многие важные процессы, его уход будет очень сложным для компании. Вполне приемлемо пойти к своему руководителю, рассказать о том, что другой работодатель предложил вам больше денег. Скажите, что вы цените и текущее место работы, но хотели бы узнать о своих перспективах здесь. Это звучит тактично и вежливо, и у вас больше шансов получить от такого диалога максимум пользы. В конечном итоге ваш запрос на повышение будет одобрен или отклонен. В любом случае, вы постарались отстоять свой вклад и дали понять руководству, что знаете цену своим навыкам. Вы можете остаться в компании и продолжать работать над достижением новых целей. Но если вы недовольны своей зарплатой и знаете, что можете добиться большего, возможно, сейчас самое время поискать лучшие возможности в другом месте, не сжигая мостов. Итого Если разговор пройдет гладко и вы добьетесь желаемого — это просто отлично! Но не расстраивайтесь, если вам не удастся добиться повышения зарплаты у руководства. Попросите своего руководителя разъяснить причины отказа и сформулируйте вопрос так, чтобы получить конструктивную обратную связь. Так вы поймете, что вы можете улучшить в своей работе или какие цели вы должны достичь, чтобы получить повышение в будущем. Проанализируйте, насколько важна для вас зарплата по сравнению с другими аспектами вашей работы. Если зарплата — приоритет №1, и компания не может предоставить вам то, что вы считаете справедливым, будет правильно рассмотреть другие возможности. Принимайте решение основываясь на своих личных и профессиональных целях, а также обстоятельствах, в которых вы находитесь.
img
Что такое парадигмы программирования? Это не более, чем просто замысловатое название для популярных способов и стилей организации процесса написания программного кода. Я постараюсь разбить эту тему на части и дать простое пояснение по каждой парадигме. Таким образом, вы сможете легко понять, о чем говорят люди, когда произносят такие слова, как «объектно-ориентированный», «функциональный» или «декларативный». Давайте начнем! Что такое парадигма программирования? Парадигмы программирования – это различные способы и стили, которые используются для организации программы или языка программирования. Каждая парадигма состоит из определенных структур, функций и взглядов на то, как следует решать известные задачи программирования. Вопрос о том, почему существует так много различных парадигм программирования, схож с вопросом о том, почему существует так много языков программирования. Определенные парадигмы лучше подходят для определенных типов задач. Именно поэтому имеет смысл использовать разные парадигмы для разных типов проектов. Кроме того, методики, которые составляют каждую парадигму, развивались с течением времени. Благодаря достижениям как в области программного, так и аппаратного обеспечения появились различные подходы к решению задач, которых раньше просто не было. И последняя причина – я думаю, это просто творческое начало в человеке. По своей натуре, нам просто нравится создавать новые вещи, улучшать то, что другие когда-то создали, и адаптировать инструменты под себя и свои предпочтения или просто делать их более эффективными (в нашем понимании). Все это привело к тому, что на сегодняшний день мы имеем огромное количество вариантов, которые могут помочь нам написать и структурировать ту или иную программу. Чем парадигма программирования не является? Парадигмы программирования – это не языки и не инструменты. Вы не сможете ничего «создать» с помощью парадигмы. Они больше похожи на некий набор образцов и руководящих принципов, о которых условились большое количество людей, которым они следовали и которые они подробно изложили. Язык программирования не всегда привязан к определенной парадигме. Есть языки, которые были созданы с учетом определенной парадигмы и имеют функции, которые облегчают программирование в этом контексте больше, чем другие (хороший пример – Haskel и функциональное программирование). Однако существуют и «многопарадигмальные» языки. Это означает, что вы можете адаптировать свой код, чтобы он подходил под какую-то из парадигм (хороший пример – JavaScript и Python). При этом парадигмы программирования не являются взаимоисключающими в том смысле, что вы можете без каких-либо проблем использовать приемы из различных парадигм одновременно. Популярные парадигмы программирования Теперь, когда вы знаете, что такое парадигмы программирования, а что к ним не относится, давайте рассмотрим самые популярные из них, их характеристики и сравним их. Имейте в виду, что этот список не полный. Существуют и другие парадигмы программирования, которые мы здесь рассматривать не будем. Здесь я расскажу вам только о самых популярных и широко используемых. Императивное программирование Императивное программирование – это набор подробных инструкций, которые даются компьютеру, чтобы тот выполнил их в заданном порядке. Этот тип программирования называется «императивным», потому что мы некоторым образом указываем компьютеру (как программисты), что он должен делать. Императивное программирование концентрируется на описании того, как программа работает, шаг за шагом. Допустим, вы хотите испечь торт. Ваша императивная программа для такого рода задачи может выглядеть следующим образом: 1- Pour flour in a bowl 2- Pour a couple eggs in the same bowl 3- Pour some milk in the same bowl 4- Mix the ingredients 5- Pour the mix in a mold 6- Cook for 35 minutes 7- Let chill Воспользуемся конкретным примером и предположим, что мы хотим отфильтровать массив чисел так, чтобы остались только числа, которые больше 5. Наш императивный код тогда будет выглядеть следующим образом: const nums = [1,4,3,6,7,8,9,2] const result = [] for (let i = 0; i < nums.length; i++) { if (nums[i] > 5) result.push(nums[i]) } console.log(result) // Output: [ 6, 7, 8, 9 ] Обратите внимание, что мы указываем программе, что нужно перебрать каждый элемент массива, сравнить каждый из них с 5 и, если элемент больше 5, то поместить его в конечный массив. Наши инструкции предельно детализированы и конкретны, и именно это и является императивным программированием. Процедурное программирование Процедурное программирование – это производное от императивного программирования только с функциями (также известных как «процедуры» или «подпрограммы»). Процедурное программирования предлагает пользователю разделить выполнение программы на функции, чтобы оптимизировать модульный принцип организации. Вернемся к нашему примеру с тортом. Процедурная программа для этого примера будет выглядеть следующим образом: function pourIngredients() { - Pour flour in a bowl - Pour a couple eggs in the same bowl - Pour some milk in the same bowl } function mixAndTransferToMold() { - Mix the ingredients - Pour the mix in a mold } function cookAndLetChill() { - Cook for 35 minutes - Let chill } pourIngredients() mixAndTransferToMold() cookAndLetChill() Как вы можете видеть, благодаря реализации функций, мы можем просто прочитать три вызова функций в конце файла и понять, что делает наша программа. Такое упрощение и абстрактное представление является одним из преимуществ процедурного программирования. Однако внутри функций находится все тот же императивный код. Функциональное программирование Функциональное программирование продвигает концепцию создания функций немного дальше. В функциональном программировании функции рассматриваются как «полноправные граждане». Это означает, что их можно присваивать переменным, передавать в качестве аргумента и возвращать в качестве результата других функций. Еще одна ключевая концепция – это идея чистых функций. Чистая функций – это функция, которая, чтобы получить результат, полагается только на свои входные данные. И при одних и тех же входных данных всегда будет один и тот же результат. Кроме того, эти функции не имеют никаких побочных эффектов (то есть не вносят никаких изменений вне контекста функции). С учетом всех этих концепций, функциональное программирование призывает писать программы с помощью функций. Оно также поддерживает идею о том, что модульность кода и отсутствие побочных эффектов облегчают определение и разделение обязанностей внутри кодовой базы. Таким образом, это облегчает сопровождение кода. Вернемся к примеру с фильтрацией массива. В императивной парадигме мы можем использовать внешнюю переменную для хранения результата функции, что по сути может считаться побочным эффектом. const nums = [1,4,3,6,7,8,9,2] const result = [] // External variable for (let i = 0; i < nums.length; i++) { if (nums[i] > 5) result.push(nums[i]) } console.log(result) // Output: [ 6, 7, 8, 9 ] Для того, чтобы преобразовать это в функциональное программирование, мы можем сделать следующее: const nums = [1,4,3,6,7,8,9,2] function filterNums() { const result = [] // Internal variable for (let i = 0; i < nums.length; i++) { if (nums[i] > 5) result.push(nums[i]) } return result } console.log(filterNums()) // Output: [ 6, 7, 8, 9 ] Это практически тот же самый код, но мы проворачиваем все итерации внутри функции, в которой мы также сохраняем и массив результатов. Таким образом, мы можем гарантировать, что функция не будет ничего менять за своими пределами. Она создает переменную только для обработки своей собственной информации, и после завершения своей работы удаляет ее. Декларативное программирование Декларативное программирование скрывает всю сложность и приближает языки программирования к человеческому языку и мышлению. Это абсолютная противоположность императивному программированию, хотя бы потому что программист дает инструкции не о том, как компьютеру следует решать задачу, а о том, какой требуется результат. Будет намного понятнее, если мы приведем пример. Воспользуемся примером с фильтрацией массива. Декларативный подход здесь будет выглядеть следующим образом: const nums = [1,4,3,6,7,8,9,2] console.log(nums.filter(num => num > 5)) // Output: [ 6, 7, 8, 9 ] Обратите внимание, что, используя функцию фильтрации filter, мы явно не указываем компьютеру перебирать массив или сохранять значения в отдельном массиве. Мы просто говорим о том, что мы хотим («filter») и условие, которое необходимо выполнить («num > 5»). Что хорошего в таком подходе? Его легче читать и понимать, и зачастую он более емкий в записи. Хорошими примерами декларативного кода являются функции filter, map, reduce и sort в JavaScript. Еще один хороший пример – современные фреймворки/библиотеки JS, такие как React. Посмотрите, например, на этот код: <button onClick={() => console.log('You clicked me!')}>Click me</button> Здесь у нас есть кнопка (button) с приемником событий, который запускает функцию console.log при нажатии кнопки. Синтаксис JSX (то, что использует React) совмещает HTML и JS. Это упрощает и ускоряет написание приложений. Но это не то, что браузеры читают и выполняют. Код React позже преобразуются в обычный HTML и JS, а вот это уже то, с чем работают браузеры. JSX является декларативным, поскольку его цель заключается в том, чтобы предоставить разработчикам более удобный и эффективный интерфейс для работы. Здесь также важно отметить, что в декларативном программировании компьютер все равно обрабатывает информацию как императивный код. Если снова вернуться к примеру с массивом, то компьютер по-прежнему выполняет итерацию по массиву, как в цикле for, но нам, как программистам, не нужно писать это напрямую. Декларативное программирование скрывает всю сложность от программиста. Объектно-ориентированное программирование Одной из самых популярных парадигм программирование является объектно-ориентированное программирование (ООП). Основная концепция ООП заключается в разделении понятий на сущности, которые описываются как некие объекты. Каждая сущность группирует заданный набор информации (свойств) и действий (методов), которые может выполнять эта сущность. ООП широко использует классы. Классы - это способ создания новых объектов с помощью макета или шаблона, который задает программист. Объекты, которые были созданы с помощью класса, называются экземплярами. Вернемся к примеру с приготовлением пищи на псевдокоде. Предположим, что в нашей пекарне у нас есть главный повар (по имени Фрэнк) и помощник повара (по имени Энтони). У каждого их них есть определенные обязанности. Если бы мы использовали ООП, то наша программа бы выглядеть следующим образом: // Create the two classes corresponding to each entity class Cook { constructor constructor (name) { this.name = name } mixAndBake() { - Mix the ingredients - Pour the mix in a mold - Cook for 35 minutes } } class AssistantCook { constructor (name) { this.name = name } pourIngredients() { - Pour flour in a bowl - Pour a couple eggs in the same bowl - Pour some milk in the same bowl } chillTheCake() { - Let chill } } // Instantiate an object from each class const Frank = new Cook('Frank') const Anthony = new AssistantCook('Anthony') // Call the corresponding methods from each instance Anthony.pourIngredients() Frank.mixAndBake() Anthony.chillTheCake() Преимущество ООП заключается в том, что оно облегчает понимание программы за счет четкого разделения задач и обязанностей. Итоги Как мы увидели, парадигмы программирования – это различные способы решения задач программирования и организации нашего кода. Одними из самых популярных и широко используемых на сегодняшний день парадигм являются императивная, процедурная, функциональная, декларативная и объектно-ориентированная. Знание о том, что они из себя представляют, полезно для общего развития, а также для лучшего понимания других тем, связанных с программированием.
img
Привет! Недавно мы рассказывали про то как подружить телефоны Cisco с IP-АТС Asterisk на примере телефона Cisco 7811. Там мы рассматривали базовую конфигурацию, так что теперь затронем дополнительную, но важную функцию – отображение пропущенных звонков. Также вместе с этим включим журнал звонков, который будет показывать исходящие и принятые вызовы. Конфигурация Возьмем наш рабочий XML файл конфигурации (SEP[MAC_ADDRESS].cnf.xml) который лежит у нас на TFTP сервере. Для того чтобы наш телефон начал отображать пропущенные звонки нужно внести следующие изменения. Во-первых, нужно добавить строчку lineIndex="1" в тег line button в той линии, на которой необходимо включить отображение пропущенных: <line button="1" lineIndex="1"> Далее в конец нужно добавить сточки для добавления сервиса: <phoneServices> <provisioning>0</provisioning> <phoneService type="1" category="0"> <name>Missed Calls</name> <url>Application:Cisco/MissedCalls</url> <vendor></vendor> <version></version> </phoneService> </phoneServices> И наконец необходимо добавить строчку для включения логирования пропущенных звонков перед тегом <commonProfile>: <missedCallLoggingOption>1</missedCallLoggingOption> 1 включает логирование на линии, 0 – выключает. Если у нас на телефоне несколько линий, то для них все необходимо указать в этой строке. Например, если у нас три линии и нам нужно включить логирование на 1й и на 3й, то мы в теге укажем 101. После этого перезагружаем телефон, он у нас должно скачать новый файл конфигурации, и после этого можно пробовать тестировать отображение пропущенных звонков. При пропущенном звонке он будет отображаться на экране телефона: Все пропущенные звонки можно посмотреть, нажав на появившуюся кнопку “Недавние” Вот такими манипуляциями можно заставить отображать пропущенные звонки на телефоне Cisco 7811 при подключении к Asterisk. А как теперь включить отображение всех остальных звонков и получить рабочий журнал? Все просто – добавляем следующие сточки в конфиг в раздел phoneServices </phoneService> <phoneService type="1" category="0"> <name>Received Calls</name> <url>Application:Cisco/ReceivedCalls</url> <vendor></vendor> <version></version> </phoneService> <phoneService type="1" category="0"> <name>Placed Calls</name> <url>Application:Cisco/PlacedCalls</url> <vendor></vendor> <version></version> </phoneService> Готово! Таким образом мы получили абсолютно рабочий журнал вызовов на телефоне Cisco 7811
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59