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

Основная статья: Программирование

Три добродетели программиста

Программист должен быть ленивым, нетерпеливым и самоуверенным. Так считает Ларри Уолл, создатель языка Perl. И большинство IT-специалистов подтвердят, что это правда.

Программист спит — программа работает

Лень — двигатель прогресса. Человеку надоело таскать тяжести на руках — и он изобрел колесо и транспорт. Устал ходить пешком — приручил лошадь. Поленился считать в уме — придумал абак, счетную доску. За несколько тысяч лет поколения ленивых инженеров довели абак почти до совершенства, снабдили клавиатурой и тачскрином, прикрутили жесткий диск и bluetooth. И объединили все абаки мира в сеть — интернет: привет вашему абаку от нашего.

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

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

Лень программиста — это желание сделать как можно меньше, чтобы в результате получилось как можно больше. И это работает! 

Да что же оно так медленно!..

Разработчику, который начинает трудиться над новой программой, не терпится посмотреть, как же она будет работать. Поэтому мы так любим поскорее завершить очередной кусок кода и запустить на исполнение. Run — любимый пункт айтишника в среде разработки. Нет ничего приятнее, чем увидеть, что приложение делает именно то, что от него ожидаешь. А как тяжело порой оставлять недописанный код в конце рабочего дня! Ведь совсем немножко осталось допилить…

Нетерпение разработчика — это стремление как можно скорее получить работающую программу. И не как-нибудь, а хорошо работающую!

Но вот приложение запущено, и… Эй, почему так медленно?.. Почему эти SQL-запросы отрабатываются так долго? Почему эти вычисления занимают кучу времени?.. Нет, так не пойдет! 

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

Другой аспект, в котором проявляется нетерпеливость айтишников, — одержимость быстродействием компьютеров. Еще в 1965 году руководитель Intel Гордон Мур описал подмеченную им закономерность — и сделал предсказание: производительность процессоров возрастает в два раза каждые полтора года. Закон Мура работает и сегодня, спустя полвека. И программистам все еще хочется быстрее, еще быстрее!

Самоуверенность и отвага

Программист — птица гордая. Все, что он делает, — прекрасно по определению. Или должно быть прекрасно.

Разработчик, который гордится своей работой и своими способностями в области IT, никогда не выкатит пользователю плохую программу. Гордость не позволяет ему сливать работу по принципу «и так сойдет». Ни за что не допустит, чтобы пользователи отзывались о его продукте плохо — иначе какой же он программист? Каждый негативный комментарий — удар по самомнению. «Неудобный интерфейс», «медленно работает», «все кривое и валится через раз» — для айтишника нет ничего хуже, чем услышать такое о своей программе. Нет, уж лучше заранее продумать эргономичный интерфейс, отладить и протестировать всю функциональность, провести рефакторинг…

Гордость и самоуверенность твердят: «Ты можешь сделать лучше! Сядь и сделай!» 

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

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

Но мы-то с вами знаем!..

А какие негативные личные качества помогают в работе лично вам?

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

26 сен 19, 15:30
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Методологии разработки ПО: RAD

Сегодня расскажем о RAD — Rapid Application Development, или быстрой разработке приложений. 

Меньше слов, больше дела! 

Идея RAD зародилась в 1980-х годах как альтернатива устаревающей методологии Waterfall, о которой мы уже писали. Каскадная модель программирования уже тогда воспринималась как перегруженная формальностями и недостаточно гибкая. Заказчик выдавал разработчику техническое задание и не видел результата до тех пор, пока программа не «сходила с конвейера» уже готовой, — и ожидания пользователя зачастую не оправдывались. Продукт мог оказаться слишком сложным, неудобным, а мог и устареть за время разработки. 

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

В 1988 году американский инженер-программист Барри Боэм (Barry Boehm) опубликовал статью «Спиральная модель разработки и совершенствование программного обеспечения», в которой предложил создавать не цельную программу, а выпускать ряд прототипов, каждый из которых содержит дополнительную или расширенную функциональность по сравнению с предыдущим. Пользователь может изучить и попробовать в деле каждый прототип. Получая обратную связь, разработчик дорабатывает приложение, пока заказчик не получит готовый продукт, который полностью его устраивает.

Идея оказалась перспективной. Ее проработал специалист IBM Джеймс Мартин — в 1991 году вышла его книга «Быстрая разработка приложений» с изложением оригинальной методики применения RAD или Rapid Application Development. Спустя два года Джеймс Керр и Ричард Хантер написали книгу «Внутри RAD: как построить полностью функциональную систему за 90 дней или меньше», где проанализировали подводные камни и возможности, которые они выявили при планировании и реализации успешного проекта RAD.

Эти книги заложили фундамент для практического применения RAD, и с тех пор эта методология остается в арсенале IT-разработчиков.

Нарисуйте мне программу

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

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

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

Методологию быстрой разработки RAD можно сравнить с работой художника. Сначала живописец делает эскиз. Потом создает черновой вариант картины. Затем он начинает прорабатывать элементы, добавляет детали, исправляет недочеты. Разумеется, не каждый заказчик способен по первому наброску представить себе, как будет выглядеть готовая картина, — возможно, он вообще не имеет понятия о перспективе или композиции. Но по крайней мере художнику не придется переписывать весь холст — ведь к завершению работы уже не окажется, что клиент перепутал натюрморт с пейзажем: «Нет-нет, я имел в виду сельский вид, а не корзину с фруктами!» Куда проще внести исправления в эскиз, чем в завершенное полотно.

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

Быстро, качественно, дешево — выберите три из трех

Три кита, на которых покоится RAD, — это скорость разработки, качество программного кода и дешевизна. Да, это та самая методология, которая предлагает не выбрать два пункта из трех, а получить все сразу.

Почему быстро?

Методология RAD требует, чтобы работающие прототипы создавались максимально часто. Продолжительность одного производственного цикла — от выработки требований до демонстрации пользователю (то есть одной итерации) — от одного дня до трех недель.

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

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

Почему качественно?

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

Почему дешево? 

Деньги — странный предмет: вот они есть, а вот их нет. Бывает, что их не хватает, и приходится прерывать разработку, когда написана еще далеко не вся запланированная функциональность. Что получит заказчик в этом случае?

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

При Rapid Application Development пользователь сам решает, что ему требуется в первую очередь, и постоянно получает все более функциональные прототипы — то есть, фактически, работающие версии программы. Если финансирование внезапно иссякнет — пользователь не останется у разбитого корыта. 

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

Инструментарий RAD

Методология RAD еще с конца 1980-х была нацелена на использование новейших технологий ускорения разработки — и этот фокус на инструментах автоматизации по-прежнему актуален. 

Средства автоматизации разработки программ (Computer-Aided Software Engineering), или CASE-инструменты — это программные продукты для проектирования приложений. Такая система позволяет быстро создать модель программы, а затем автоматически сгенерировать программный код. Получается прототип — запускаемый модуль, который можно продемонстрировать заказчику. 

От одноклеточного к развитому: эволюция программы

Разработка приложения по методологии RAD проходит в несколько этапов. 

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

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

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

Затем в дело вступают программисты. С помощью инструментов CASE они воплощают требования в виде модели, создавая очередной прототип. Его показывают пользователю и получают обратную связь. Уточняя пожелания и требования к программе, заказчик фактически руководит разработкой.

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

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

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

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

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

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

Когда мы рады RAD’у, а когда не рады

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

Эффективные варианты применения RAD

  • Если проект легко делится на независимые или слабосвязанные модули. Разработку в таком случае можно вести параллельно, несколькими командами, каждая из которых будет собирать прототип только одного модуля. В конце итерации или всей работы над программой модули объединяют в цельное приложение. 
  • Если требования к программному обеспечению быстро меняются. RAD — отличный выбор, когда заказчик понимает, что программа нужна как можно скорее, но к концу работы над ней часть спецификаций наверняка изменится.
  • В условиях ограниченного бюджета. RAD гарантирует, что заказчик получит продукт, выполняющий поставленные задачи, даже если внезапно закончатся деньги.
  • Когда у пользователя нет ясного представления, как должен выглядеть и работать продукт. Поскольку программу создают небольшими итерациями, во время которых спецификации и требования постоянно уточняются, в итоге заказчик получает продукт, соответствующий его пожеланиям. Но лучше в общих чертах заранее сформулировать бизнес-цели и задачи для приложения.
  • Когда у вас есть коллектив хороших разработчиков и дизайнеров. Задача RAD — быстро создать качественный продукт. А это могут только профессионалы.
  • Если пользователь готов активно участвовать в проекте на протяжении всей работы — обсуждать нововведения и функциональность, тестировать прототип, давать обратную связь. Если у заказчика не хватает на это мотивации, стоит попробовать другие модели — например, Waterfall, где пользователь только формулирует ТЗ или спецификации. 

Преимущества RAD — кратко

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

Недостатки RAD

  • RAD применима для больших команд.
  • RAD зависит от вовлеченности заказчика в работу. Если он не может принять участие в очередном обсуждении проекта, работа может приостановиться.

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


25 сен 19, 15:42
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Нужны ли руки, чтобы кодить

Можно ли кодить с помощью голоса? Или силой мысли? А может, и программисты не нужны — их заменят нейросети? Разработчики поделились мыслями о том, что ждет профессию в будущем.

Алексей Ульенков, начальник отдела прикладных платформ «Райффайзенбанка»:

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

Развитие подобных систем может выглядеть как угроза для разработчиков, но я бы посмотрел с другой стороны. Есть такое понятие — boilerplate code, то есть код, который нужен, но писать его неинтересно, и он приносит немного добавленной стоимости. Вот эту часть и возьмут на себя машины, а нам останутся интересные и творческие задачи. И с профессией все будет замечательно.

Пример:

Роман Скобцов, frontend-разработчик в «Ак Барс Цифровые Технологии» (инновационная лаборатория «Ак Барс Банка»):

— Еще пару лет назад появились кейсы, когда нейросеть смогла заменить программиста. Например, в 2017 году датский стартап Uizard Technologies презентовал нейросеть pix2code. Ее алгоритм позволяет автоматизировать верстку интерфейса программы или сайта. Скилл программиста не нужен — можно карандашом набросать изображения, а искусственный интеллект самостоятельно соберет по ним интерфейс и каркас приложения.

В среднесрочной перспективе будущее программирования — это голосовое управление. Например, в «Ак Барс Банке» голосовой помощник сам звонит клиентам и оформляет заявку на кредит. Настанет время, когда разработчик сможет лежать на диване и кодить с помощью голоса. 

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

Программист передает нейронные импульсы, компьютер их получает и пишет код:

Дмитрий Микушин, ведущий инженер по приложениям для GPU и ML хостинг-провайдера REG.RU: 

— Стивен Хокинг, один из крупнейших физиков нашего времени, любил пошутить: «Что такое черная дыра? Это нечто, что появляется в черном носке». Из-за болезни большую часть жизни он взаимодействовал с миром, пользуясь лишь одним глазным сенсором. Борьба с недугами — это и новые возможности для здоровых людей. Так, машинное обучение позволяет настроить систему электродов для преобразования сигналов мозга в речь со скоростью 150 слов в минуту. Системы слежения за движениями глаз, аналогичные устройству профессора Хокинга, сегодня улавливают мельчайшие движения зрачка с частотой более 1000 кадров в секунду в реальном времени. Все эти технологии рано или поздно начнут приходить и в разработку.

Игорь Лобанов, руководитель команды разработки сервиса для планирования путешествий OneTwoTrip:

— Если у вас есть толковый джун, то вы сможете программировать голосом. До нейроинтерфейсов нам пока далеко, и я не слышал ни об одной успешной попытке заменить чем-то клавиатуру. Проекционные клавиатуры, дополненная реальность и VR пока не конкурируют по удобству с привычным нам способом вводить текст. У Apple есть патент на управление ноутбуком с помощью жестов над трекпадом. Интересно, реализуют ли они такую возможность когда-нибудь.

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

Ян Орещенков, СТО в CactusSoft:

— Нам давно известна технология Speech Recognition, а компьютер может распознавать команды, голос, текст. Поэтому в теории — да, писать код голосом вполне реально. Читал историю о слепом парне-программисте, который писал отличный код с помощью скрин-ридера и делал это чуть ли не быстрее ребят с обычными возможностями. Есть художники, которые рисуют ногами, зубами и чем угодно, и шахматисты, которые играют, не глядя на доску. Это значит, что люди постепенно развивают альтернативные методы в любой деятельности, и кодинг без клавиатуры — не исключение.

А что вы думаете о будущем разработки? Как считаете, какие сложности будут возникать при программировании силой мысли?

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

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

Ошибки начинающего фрилансера

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

Таким мечтателям, скорее всего, придется столкнуться с трудностями, совершить уйму ошибок и разочароваться в работе на себя. Так что лучше обезопаситься заранее — например, прочитать наш мануал. В нем разберем топ-7 фрилансерских ошибок.

 Не брать предоплату

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

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

Лайфхак: не стоит раньше времени относиться к предоплате как к своим деньгам и тем более тратить ее. Представьте, что эта сумма заморожена, и не рассчитывайте на нее. Так будет проще вернуть эти деньги, если что-то с заказом пойдет не так.

Работать «за еду»

Работать за символическую плату есть смысл, только если вы совсем новичок в профессии и вам нужен хоть какой-то опыт. Если это не ваш случай, то не стоит совершать распространенную ошибку и потворствовать заказчикам с запросами вроде «Напишите текст на тему „Математическая сингулярность“ на 10 000 знаков срочно, вот вам 500 ключевых слов. Плачу 10 копеек за тысячу знаков».

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

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

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

Скромничать

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

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

Работать без договора

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

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

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

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

Делить шкуру неубитого медведя

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

Лайфхак: заведите отдельный кошелек или карту и складывайте туда все предоплаты. Часто есть риск, что эти деньги придется возвращать, так что лучше их не трогать до окончания проекта.

Не планировать рабочий день

Ходят легенды, что существуют фрилансеры, которые утром встают, завтракают, делают зарядку и приступают к работе. Потом обедают, гуляют с друзьями и доделывают задачи в срок. И — представляете? — ложатся спать, не испытывая чувства вины за несделанные дела!

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

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

Лайфхак: задавайте себе вопросы. Буквально на каждое действие: зачем я это сейчас делаю? Что мне это даст? Чем мне хочется заняться? Как я могу оптимизировать свой день?

Еще лайфхак: посмотрите около сотни видео о продуктивности, прочитайте десяток книг по самоорганизации, послушайте несколько подкастов о прокрастинации, потестите их идеи, отберите подходящие вам — и действуйте!

Врать и оправдываться

Лучший друг фрилансера — честность. Если вы сможете сделать заказ только за неделю, не озвучивайте срок в три дня. Хотите доплату за срочность — скажите об этом. Заболели — предупредите. Не можете или не хотите браться за задачу — напишите об этом заказчику.

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

Лайфхак: правда, попробуйте быть с заказчиками честным. Это сэкономит много сил и времени, вот увидите.

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

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

17 сен 19, 23:40
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Изучить ИИ и внедрить в свой бизнес

Начать свое дело

Пять лет назад я решил основать собственный бизнес. До этого с момента окончания вуза я работал программистом 1С, прошел путь от рядового сотрудника до руководителя проектов. За несколько лет в этой сфере я изучил подводные течения рынка, проблемы и потребности клиентов. Из-за медлительности исполнителей, лишней функциональности ПО и банальных сбоев системы крупные компании за одну ночь могли лишиться миллионной прибыли. Со временем у меня сформировалась идея, как автоматизировать типовые процессы в финансовом учете. Чтобы заняться этим, надо было перестать быть наемным сотрудником — лоббирование идей часто отнимает больше сил, чем их воплощение. 

Я хотел начать собственный бизнес, связанный с 1С, не столько из-за финансов, сколько из желания предоставлять качественные услуги и идти в ногу со временем. Поэтому и получилось развить свое дело, нанять штат специалистов, сотрудничать с крупными клиентами. Этот же подход и высшее образование программиста всегда помогали мне следить за трендами в IT и управлении бизнесом. Я заинтересовался технологиями интеграции машины и человека, мобильными приложениями, интерфейсами и автоматизацией.

Понять, чему учиться дальше

Этот интерес привел меня к тому, что пару лет назад я увлекся разработкой приложений на iOS. Изучая материалы в интернете, наткнулся на портал GeekBrains. Посмотрел несколько вебинаров, изучил блог и описания курсов. В итоге начал обучение по профессии «iOS-разработчик». Вскоре отметил, насколько качественно и быстро сегодня можно получить специальность в IT.

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

Наша компания специализируется на автоматизации финансового и управленческого учета, бухгалтерском и управленческом аутсорсинге. Поэтому мне хотелось разобраться, куда движется сфера финансов. Основные тренды сводились к оптимизации и автоматизации процессов. Так я погрузился в блокчейн-технологии, а затем и в Data Science

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

Мы занимаемся корпоративным сопровождением — у наших клиентов (каждый — от 20 пользователей) ежедневно возникают вопросы и задачи. И большинство из них — типовые, которые можно легко сортировать и решать без участия человека. Это может здорово сэкономить время и ресурсы, необходимые для расширения клиентской базы, улучшения качества услуг. А в итоге — увеличить прибыль. 

Я начал читать книги и статьи. Но в этой области без фундаментального образования не обойтись. А в GeekUniversity как раз стартовал факультет искусственного интеллекта. Я планировал отправить на обучение нескольких сотрудников, но захотелось сначала попробовать самому. Так в апреле 2019 года я снова стал студентом, на этот раз в онлайне.

Просыпаться и заниматься

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

Больших сложностей в обучении нет, мне хватает 4–8 часов в неделю, в том числе на практические задания. Но иногда требуется намного больше — особенно когда берешься за задачи «со звездочкой». Скорее всего, дальше будет сложнее, так как пока мы прошли только вводную часть. Но польза от обучения уже есть. По подаче и актуальности курс мне нравится. Уже думаю над тем, кого из сотрудников наградить поступлением в GeekUniversity.

И сразу использовать знания 

Изученные возможности я уже внедряю в бизнес. В компании мы запустили процессы DevOps. Много времени уходит на организацию совместной разработки и загрузки изменений в продакшн у клиента. Особенно когда клиент работает с раннего утра до 23 часов — тогда возможность внести изменения в его базу есть только ночью. Внедрение Git и сопутствующих технологий позволило автоматизировать процесс и разгрузить разработчиков.

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

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

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

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

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

17 сен 19, 11:17
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Что ждет IT-сферу в будущем

Делать предсказания — занятие неблагодарное. Во все времена находились скептики, которые презирали пророков и ясновидцев. Когда подключились ученые, делающие прогнозы на основе тщательного анализа и статистических расчетов, отношение общественности к предсказаниям немного изменилось, хотя доля скептицизма сохранилась. Кое-кто припоминает с треском провалившиеся пророчества Билла Гейтса о том, что 640 Кб памяти будет достаточно для любого компьютера, или Кена Олсена, утверждавшего в 1977 году, что никому не придет в голову купить себе домашний компьютер.

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

Облака сгущаются, и это хорошо

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

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

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

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

Данные рулят

Давно известно: кто владеет информацией — владеет миром. С появлением цифровых носителей, а тем более интернета, ее накопление и обмен стали простыми, удобными и быстрыми как никогда. Количество цифровой информации удваивается каждые 18 месяцев. Ее не только много — она еще и доступна большинству жителей Земли. В будущем этот тренд, видимо, сохранится.

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

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

Машины продолжают учиться

То, что еще недавно называли расплывчатым термином «искусственный интеллект», сегодня находит практическое воплощение в машинном обучении и нейросетях.

Обучать нейронные сети пытались уже давно (первый перцептрон был создан еще в 1957), однако особых успехов они не показывали. Прорыв в этом направлении произошел в середине нулевых, и с тех пор нейросети «загорелись желанием» учиться. 

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

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

Фотографируем на утюг

Возможно, в будущем эта шутка приблизится к реальности. Мог ли кто-нибудь 30 лет назад предположить, что мы будем фотографировать с помощью телефона, смотреть на нем кино и играть в игры?

Устройства, окружающие нас, становятся не только универсальнее, но и интеллектуальнее. Язык Java, изначально предназначенный для разработки программ для бытовой техники, существует и активно используется уже долгое время. Сегодня никого не удивить домашней системой видеонаблюдения или умным холодильником, подключенными к Всемирной паутине. Технологии в IT продолжают развиваться, и не за горами день, когда интернет будет буквально в каждом утюге и зубной щетке, а пользователи на форумах будут обмениваться идеями, как получить root-доступ к кофеварке или офисному креслу.

Для всей этой электроники потребуется софт. Серьезной проблемой может стать взаимодействие разных устройств и их интеграция в систему умного дома. Для этого потребуется выработка единых для всех производителей стандартов — как самого «железа», так и обмена данными между девайсами. Будем надеяться, что уже в ближайшее время станет возможно позвонить домой и попросить домашний ИИ, чтобы он проверил, выключен ли утюг. А еще пусть включит подсветку в аквариуме и покормит кота!

Безопасность под угрозой

Увы, далеко не всегда разработчики умных устройств способны защитить свой продукт от хакеров. Любой девайс может подвергнуться кибератаке. От момента изготовления прибора на заводе до покупки и установки в доме могут пройти месяцы, а то и год-полтора. Почти наверняка к тому моменту, когда владелец подключит устройство к своей домашней сети, его прошивка уже устареет. Обновление и постоянный контроль за версиями нескольких десятков умных устройств может стать настоящей головной болью для их владельца. Рядовой пользователь (да и большинство продвинутых) никогда не может быть уверен, что в устройстве используется последняя версия программного обеспечения, что в нем исправлены все недочеты и «дыры», которыми может воспользоваться злоумышленник.

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

Мир закрывающихся возможностей

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

Но ПК постепенно отходит на второй план. Играть куда удобнее на игровой консоли или смартфоне. Серфить по интернету или смотреть фильмы можно с планшета. Согласно данным TAdviser, продажи десктопов и ноутбуков сокращаются уже 7 лет подряд — их попросту вытесняют мобильные и консольные устройства.

При этом разработка ПО для них может стать проблемой. К примеру, чтобы выйти на рынок мобильных приложений, потребуются финансовые вложения в регистрацию разработчика в Google Play Market или App Store — и не факт, что доходы от продаж или рекламы в приложениях отобьют уплаченные суммы. Разработка для игровых консолей также сопряжена с трудностями и тратами. И даже успешно преодолев все препятствия, разработчик будет постоянно ощущать давление со стороны владельцев этих платформ: как минимум они подвергают цензуре приложения и контролируют их соответствие внутренним стандартам качества. Это делается, чтобы не допустить распространения плохо написанных, глючных, вредоносных программ. Но это цензура, и программист вынужден прыгать через обруч, который протягивает ему платформа. Все несогласные вынуждены покинуть официальные магазины, что фактически означает запрет на распространение приложения.

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

Впрочем, и свободное распространение программ для ПК уже становится не таким, как прежде. Онлайн-сервисы типа Steam, предназначенные для дистрибуции программ, специализированные магазины приложений (Microsoft Store и т. п.) — все это закрытые системы, требующие от разработчика дополнительных усилий или затрат.

Автономный транспорт

Транспорт — еще одна отрасль, где сегодня программисты мало задействованы, но которая уже скоро будет нуждаться в квалифицированных специалистах. Мы едва-едва привыкли к новостям о беспилотных автомобилях и самолетах, используемых ВВС. Но наступит день, когда и транспортная, и пассажирская авиация перейдут на такой режим. Сейчас автоматика способна поддерживать практически весь полет, включая посадку. Amazon и другие компании уже несколько лет разрабатывают систему беспилотной доставки посылок с помощью дронов, которая в перспективе обещает произвести настоящую революцию в работе почтовых и курьерских служб — кстати, кое-где такая доставка уже работает! А за пределами Земли беспилотные космические корабли исследуют Солнечную систему.

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

Dura lex

Новые реалии потребуют соответствующих изменений в законодательной базе. К примеру, в России требования, относящиеся к беспилотным летательным аппаратам, таковы, что для запуска обычного дрона для фотосъемки требуется пройти семь кругов бюрократического ада: сперва зарегистрировать аппарат, а затем еще и получить целый ряд разрешений. Из-за этого большинство владельцев предпочитают использовать их нелегально, несмотря на риск нарваться на штраф. Не существует и законов, регулирующих эксплуатацию беспилотных автомобилей.

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

Передовые технологии в IT, при всех своих плюсах, открывают новые возможности не только для порядочных граждан, но и для злоумышленников. Порой законодатель, пытаясь оградить общество от реальной или вымышленной киберугрозы, встает на пути прогресса и запрещает технологию в целом или блокирует ее частично. Пример — проект «Золотой щит», более известный под неофициальным названием «Великий китайский файрвол». Эта система фильтрации интернет-контента задумывалась как часть системы безопасности, ограждающей китайских пользователей от потенциально опасной информации. В результате она превратилась в инструмент жесткой цензуры и пропаганды. Другой пример — попытка законодательного запрета VPN в России в 2017 году и мессенджера Telegram в 2018, которая нанесла удар по множеству ни в чем не повинных веб-сервисов и компаний. Никаких положительных результатов эти действия не дали.

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

Будущее туманно, и сделать точные прогнозы удается не всегда. Но мы верим в одно: оно будет таким, каким мы его сделаем сами.

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

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

Новый факультатив от KODE в GeekUniversity уже стартовал!

Совсем недавно на факультете Android-разработки GeekUniversity открылся новый факультатив по языку Kotlin. Его подготовила компания KODE — специалисты, создающие крутейшие мобильные и веб-приложения, а также IoT-кейсы. Мы задали главные вопросы о факультативе комьюнити-менеджеру Марии Кругловой и Илье Некрасову, разработчику программы и ее спикеру.

— Как будет называться ваш курс и чему он будет посвящен?

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

И.Н.: Даже не погруженные в Android-разработку люди из мира IT в курсе, что такое Kotlin и что знать его считается хорошим тоном в профессии. Поэтому перед нами стояла задача сделать «показательный» курс, который продемонстрирует, для решения каких задач используется язык.

— На какую аудиторию рассчитан факультатив? Насколько подготовленными должны быть студенты?

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

— Сколько длится факультатив?

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

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

— Насколько уникален этот курс?

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

М.К.: Перед тем как взяться за работу, мы анализировали, в какой форме материалы будут полезны и интересны слушателю. И поняли, что лучшее решение — поделиться опытом, ведь именно его зачастую не хватает выпускникам курсов.

— Расскажите подробнее про формат занятий.

И.Н.: Несмотря на то что курс практический, заданий для самостоятельной работы мы давать студентам не будем. Причина простая — хочется, чтобы слушатели не выполняли типовые задачи, не повторяли символ в символ код на занятиях, а применяли информацию в своих проектах. А у студентов GeekUniversity их предостаточно. Если будут вопросы — готов помогать в режиме 24/7. Мне самому куда интереснее решать актуальные задачи, чем ретранслировать один и тот же код.

М.К.: Важно понимать: хоть это и факультатив для продвинутых, акцент сделан на применяемость языка. Каких-то сверхсложных вещей в нем не будет. Но если появится потребность усложнить, продолжить на новом уровне — готовы поработать и в этом направлении.

— Чего лично вы ждете от стартующего факультатива?

М.К.: Для меня интересно само сотрудничество с GeekBrains и GeekUniversity — одними из лидеров интернет-образования в области IT. Хочу получить обратную связь от студентов, «повариться» в этой кухне, чтобы в дальнейшем продолжить совместную работу на качественно новом уровне.

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

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

— И главный вопрос — кто и как может попасть на факультатив?

М.К.: Доступ к нашему факультативу получат все студенты направления Android-разработки уже с текущего потока. Подробнее о времени можно узнать на официальном сайте GeekUniversity и у кураторов. Приглашаем всех желающих — скучно точно не будет!

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

11 сен 19, 22:33
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Какие языки программирования сейчас в тренде

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

TIOBE

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

  1. Java.
  2. C.
  3. Python.
  4. C++.
  5. C#.
  6. Visual Basic .NET.
  7. JavaScript.
  8. PHP.
  9. SQL.
  10. Objective-C.

Для тех, кто незнаком с тем, как составляется этот рейтинг, — краткий ликбез. За основу берутся запросы в поисковых системах, в том числе из социальных сетей. Отсеиваются аномальные пики, локальные поисковики (например, из КНР) и данные систем, имеющих низкий рейтинг доверия из-за количества багов, взломов и подобного. Кроме того чтобы попасть в этот топ популярных языков программирования, он должен обязательно иметь страницу в Википедии — своеобразный тест на полноту.

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

  1. Языки, которые изучаются в школах и вузах, имеют конкурентное преимущество. Ученики и студенты чаще «гуглят», а по численности они едва ли уступают готовым профессионалам.

  2. В некоторых случаях система полностью игнорирует поисковики отдельных стран. В частности, за Рунет отвечает только Google.ru. Данные с Mail.ru и Яндекса учитываются в пределах статистической погрешности.

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

То есть формально на вершине хит-парада TIOBE может оказаться условный Basic, если вместе с материалами курса студентам будут говорить, какой поисковой системой пользоваться при выполнении домашних заданий.

PYPL

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

  1. Python.
  2. Java.
  3. JavaScript.
  4. C#.
  5. PHP.
  6. C/C++.
  7. R.
  8. Objective-C.
  9. Swift.
  10. Matlab.

Несмотря на похожие с TIOBE методы анализа, рейтинги языков программирования заметно отличаются. В первую очередь надо обратить внимание на лидерство Python. Как утверждает портал, на сегодняшний день это наиболее стремительно развивающийся язык, в то время как Java движется в обратном направлении. Даже график есть:

Минусы в подсчете рейтингов PYPL и TIOBE близки, но динамика изменения позиций со временем в первом прослеживается куда лучше.

GitHub

Самый популярный и авторитетный портал для работы с кодом тоже составляет рейтинги языков, но только по годам. Подсчет ведется по количеству размещенных исходников за последние 12 месяцев. Рейтинг, опубликованный в начале 2019 года:

  1. JavaScript.
  2. Java.
  3. Python.
  4. PHP.
  5. C++.
  6. C#.
  7. TypeScript.
  8. Shell.
  9. C.
  10. Ruby.

Большое влияние на рейтинг GitHub оказывает продуктивность разработчиков. Именно поэтому в лидерах оказалось много представителей скриптовой направленности — объем кода исходников часто занимает всего несколько строк. Но — в отличие от предыдущих двух порталов — здесь практически не имеет значения сложность языка.

StackOverflow

Формально рейтинг StackOverflow формируется по двум параметрам: частоте упоминания на форуме и рейтингу в специальном ежегодном голосовании. Итоги за 2018 год:

  1. Python.
  2. JavaScript.
  3. Java.
  4. C#.
  5. PHP.
  6. C++.
  7. R.
  8. SQL.
  9. Swift.
  10. C.

В голосовании StackOverflow есть много номинаций для ЯП, в данном случае учтены только ответы на вопрос «На каком языке программирования вы работаете?». В результате не появилось неожиданных позиций, поэтому рейтинг можно считать вполне объективным. Кстати, вы можете посмотреть на изменение списка в динамике и сделать выводы.  

RedMonk

Портал RedMonk задался целью составить топ языков программирования по востребованности, основываясь на топ-листах GitHub и StackOverflow. От первого они взяли количество опубликованных исходников, от второго — упоминания в тегах. Получился такой список: 

  1. JavaScript.
  2. Java.
  3. Python.
  4. PHP.
  5. C#.
  6. C++.
  7. CSS.
  8. Ruby.
  9. C.
  10. Objective-C.

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

Итого

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

  • JavaScript;
  • Python;
  • Java.

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

А что по душе вам?


9 сен 19, 14:02
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Навыки программиста, который идет к успеху

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

Коммуникабельность и умение работать в команде

Нелюдимый компьютерщик «со странностями», не умеющий поддержать беседу и полностью погруженный в собственный гиковский мир — древний стереотип, который в XXI веке уже не имеет права на существование. Современные разработчики — социальные существа. Если 30 или 40 лет назад программист мог в одиночку разработать и поддерживать программное обеспечение для средней компании, то сегодня для этого требуются усилия команды. А это значит, что программисту надо уметь работать в коллективе, обмениваться опытом с коллегами, помогать другим и уметь принимать помощь. А еще один из ключевых навыков программиста — общаться с заказчиками, клиентами и пользователями: без обратной связи хорошую программу не написать!

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

Аналитический подход

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

Почему он так важен?

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

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

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

Умение учиться нон-стоп

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

Технологии, которые недавно казались малозначительными, сегодня вышли на первый план. Кто слышал о блокчейне десять лет назад? А сегодня мировые корпорации, банки и даже госструктуры (в том числе в России) экспериментируют с ним на практике. 

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

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

Умение учиться помогает строить карьеру. IT-компании приветствуют сотрудников, которые хотят развиваться в профессии и готовы над этим работать. Такие специалисты легче переключаются на новые задачи, быстрее втягиваются в работу над новыми проектами, трудятся более продуктивно и креативно. 

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

Упорство и усидчивость

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

Не путайте упорство с упрямством. Если оказывается, что выбранный способ решения задачи не оптимален, нужно найти в себе силы признать ошибку. Если чувствуете, что носите круглое и катаете квадратное, — лучше остановиться и подумать еще раз. Может, придется перечеркнуть часть сделанной работы или начать с нуля. Но это невысокая цена за более качественный код. В итоге умение признать ошибку работает на вас. 

Здоровая лень

Трудолюбивый разработчик пишет 1000 строк кода и потом думает, как его оптимизировать. А ленивый — сначала оптимизирует в уме, а потом пишет 50 строк, которые работают не хуже и даже быстрее.

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

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

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

Языки программирования являются именно такими инструментами: все они призваны упростить общение человека и компьютера. Если бы их не существовало, любую программу приходилось бы составлять в виде шестнадцатиричного или бинарного кода — ведь именно в нем процессор обрабатывает поступающие команды. Поэтому уже на заре компьютерной эпохи появился язык ассемблера с его мненониками (мнемокодами), которые помогали выстраивать логику программы. А потом — и языки более высокого уровня: Фортран, Кобол, Паскаль и другие. Каждая команда и операция в них заменяли сотни, а то и тысячи строк ассемблерного кода — и экономили время программиста. 

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

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

Список навыков и способностей, которые могут быть полезны программисту, можно продолжать. Например, грамотным тайм-менеджментом или лидерскими скиллами. Кто-то скажет, что разработчику не обойтись без математики, знаний SQL, JavaScript или Python. А порой окружающие будут ожидать от вас, что вы с легкостью почините сломанный тостер, решите задачи по физике или воскресите сгоревший ноутбук — как настоящий «тыжпрограммист».

А какие знания, навыки и умения вы считаете необходимыми для современного разработчика?

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

5 сен 19, 17:43
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Горячее предложение: бесплатное обучение в GeekBrains

 

Мы открываем набор на бесплатный курс по обучению Frontend-разработчиков. 50 студентов смогут получить востребованную и высокооплачиваемую специальность, а лучшие из них пройдут стажировку в Mail.ru Group.

Frontend-разработчики верстают сайты и создают интерфейсы, а для этого задействуют технические знания и свой творческий потенциал. Средний доход Frontend-программиста в Москве начинается от 110 000 рублей.

Как поступить

До 12:00 10 сентября оставьте заявку на участие в проекте и пройдите первый этап вступительных испытаний:

  • заполните анкету;
  • посмотрите учебный видеокурс;
  • пройдите онлайн-тестирование.

Те, кто успешно справятся с этими заданиями, перейдут ко второму этапу — еще одному онлайн-тестированию. Последний день сдачи этого теста — 12 сентября.

Третий этап состоит из двух частей:

  • видеоинтервью;
  • интерактивного задания по программированию.

Эти испытания необходимо пройти до 15 сентября включительно.

За каждое задание будут начисляться баллы. По итогам всех испытаний претенденты с наиболее высокими оценками будут зачислены на бесплатный курс «Frontend-разработчик со стажировкой в Mail.ru Group». О результатах испытаний вам сообщат по телефону или электронной почте.

Как учиться

Занятия начнутся в октябре и продлятся до января 2020 года. Каждую неделю студентов ждут два видеоурока от лучших преподавателей-практиков. Закрепить знания помогут практические задания по всем темам.

Студенты освоят HTML & CSS, HTML5 и CSS3, JavaScript, Node.js и принципы командной разработки.

Занятия проходят по вечерам — удобно совмещать с основной работой или учебой. Специальных знаний для обучения не требуется. Программа абсолютно бесплатна.

Что получат выпускники

Студенты получат знания, достаточные для работы junior-разработчиком, и свидетельство, подтверждающее эти навыки. Лучшим выпускникам предложат пройти месячную стажировку в Mail.ru Group со стипендией и перспективой трудоустройства в компании.


Если вы на каждый Новый год обещаете себе начать новую жизнь, обучение от GeekBrains — ваш шанс сдержать слово. Чтобы получить новую профессию уже в январе, записывайтесь на бесплатный курс «Frontend-разработчик со стажировкой в Mail.ru Group» прямо сейчас.

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

5 сен 19, 10:09
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Темы с 11 по 20 | всего: 97

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

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

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

Люди

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