IT-словарик для не-айтишников

в 12:12, , рубрики: AI, devops, Full Stack, IDE, open source, qa, изучение языков, отладка, Учебный процесс в IT, Читальный зал
IT-словарик для не-айтишников - 1

Приходилось ли вам объяснять IT-понятия людям из других сфер? Это хитрая задача: при объяснении одного IT-термина нельзя пользоваться другими, потому что они тоже будут непонятными. Представим, что ваш знакомый захотел «войти в айти», впервые открыл Хабр и офигел — как объяснить такому человеку хотя бы основные слова?

Мне захотелось описать популярные понятия неформальным языком — так, чтобы доходчиво объяснить главное, а не запутывать нюансами. Для этого местами пришлось пойти на упрощения. Но думаю, новичкам не требуется знать «правильнее писать Linux или GNU/Linux». Для начала понять бы, что в разговорах айтишников слово «перформанс» — это не про современное искусство.

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

Оглавление

Технологии

Люди и роли


Технологии

IDE

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

Есть «редакторы кода», куда встроены базовые инструменты: например, подсветка разных составляющих кода разными цветами, помогающая быстро видеть нужное. Самый популярный такой редактор в мире — Visual Studio Code от Microsoft.

А есть более мощный вариант — IDE (правильно произносится «Ай Ди И», но в России говорят «И Дэ Е»). Аббревиатура означает «integrated development environment» («интегрированная среда разработки»), и это подразумевает, что туда включен не только редактор кода, но и другие инструменты для самых разных задач разработчика (подробнее о них ниже) — компиляции, отладки, контроля версий, вёрстки интерфейса. То есть это такой «швейцарский нож».

IT-словарик для не-айтишников - 2

Компиляция

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

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

IT-словарик для не-айтишников - 3

Отладка

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

Слово «debugging» в России то просто произносят как «дебаггинг», то переводят как «отладка». Как можно догадаться по самому слову, речь о процессе избавления от багов. Есть популярная шутка «отладка — это как быть детективом в фильме, в котором ты сам и есть убийца». Ты где-то накосячил, а теперь надо ещё суметь разобраться, где именно и как.

В этом могут помочь разные инструменты, в первую очередь — созданные как раз для этого отладчики (debuggers). Отладчик позволяет, запустив программу, следить за происходящим «внутри» неё, и помогает заметить, где именно что-то пошло не так, как задумывалось.

IT-словарик для не-айтишников - 4

Контроль версий и git

Вам когда-нибудь приходилось совместно с другими людьми работать над файлами, когда все поочерёдно вносят в них изменения, и на всякий случай требуется сохранить промежуточные версии? Обычно такое заканчивается папками «finally_final_v5_2021» и письмами «Re: Re: Re: Fwd: Re», во всём этом чёрт ногу сломит.

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

Над кодом тоже работают совместно, обращаться к истории изменений приходится регулярно, и чтобы не сойти при этом с ума, всё делают примерно как в Википедии. Для этого созданы системы контроля версий (version control system, сокращённо VCS). Самая популярная из таких систем, ставшая стандартом — git.

Также есть целый набор понятий, связанных с этим, вот только некоторые:

  • Коммитить (commit) — вы что-то сделали и теперь вносите эти изменения в git.

  • Бранч (branch) — ветка: это как создать отдельную копию файла, с которой можно смело экспериментировать, не боясь испортить «основную», с которой в это время может работать кто-то другой.

  • Мёрджить (merge) — объединять код: если удачно поэкспериментировали, надо влить результат в основную ветку, которая тем временем могла ощутимо измениться.

IT-словарик для не-айтишников - 5

Open source

Представим, что программист написал код, скомпилировал — получилось то, что можно запустить и пользоваться. И можно делиться с миром этим результатом работы, когда люди смогут им пользоваться, но не смогут узнать, как именно он сделан «внутри». Но можно, кроме готовой программы, поделиться и её исходным кодом тоже. Тогда другие программисты, разобравшись в нём, смогут предложить свои улучшения или сделать свою версию программы. Когда код открыт всему миру, это и называют open source.

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

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

IT-словарик для не-айтишников - 6

Производительность

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

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

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


Фронтенд и бэкенд

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

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

IT-словарик для не-айтишников - 7

Хайп: AI/ML, VR/AR, blockchain

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

«ИИ» (искусственный интеллект) или «AI» (Artificial Intelligence) — это расплывчатое бессмысленное понятие, которое люди исторически применяли к самым разным вещам. Но в последние годы так обычно обозначают машинное обучение (ML, machine learning), и вот это куда более конкретная штука. Её суть в том, чтобы учить компьютер выполнять задачи не стандартными строгими алгоритмами («если на фото есть такие-то элементы, то изображена кошка»), а другим подходом: «вот тысячи фотографий, на них всех кошки, сам реши, что у них общего, и дальше ищи на новых снимках то же». Для многих задач, где чёткий алгоритм составить затруднительно (как с тем же распознаванием изображений), это оказывается куда эффективнее.

VR (virtual reality) — виртуальная реальность, когда видишь вокруг полностью другой мир, как со шлемами Oculus. AR (augmented reality) — дополненная реальность, когда к настоящим объектам вокруг пририсовывают какие-то ненастоящие: как в случае, когда Google на вашем телефоне готов показать тигра прямо в вашей комнате. Над VR и AR работают давно не первый год, и супервзрыва пока не произошло, но развитие продолжается.

IT-словарик для не-айтишников - 8

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


Люди и роли

Программист / разработчик / кодер

В детстве мы все привыкли к слову «программист». Сейчас в вакансиях пишут «разработчик» («developer») или «software engineer». А ещё можно встретить слово «кодер». В чём разница? В интернете (в том числе и на Хабре) есть дискуссии об этом, и некоторую разницу там находят: например, «кодер» порой считают уничижительным определением, когда человек механически пишет код, сам не вполне его понимая. 

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


Джуниор, миддл, сениор

Разработчиков делят по градациям опытности. Junior — начинающий, за которым нужен глаз да глаз, middle — «крепкий середнячок», а senior — опытный, который может хорошо присмотреть за джунами и наставить их на путь истинный.

Про «синьора Помидора» пошутили уже миллион раз, но это по-прежнему смешно, так что, если разработчики пишут «помидор», они про это. Ну или про тайм-менеджмент по технике Pomodoro, тут уж смотрите по контексту.

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

А стадия «синьор» — это тупик, дальше неё развиваться некуда? Не совсем так. Есть роли «архитектор» и «тимлид», порой можно увидеть должности вроде «principal engineer» (отвечает не за конкретный проект, а за разработку во всей компании). Но всё это уже не линейное движение «писать код ещё лучше», в этих случаях развитие идёт не в сторону непосредственного написания кода.

IT-словарик для не-айтишников - 9

Full stack developer и T-shaped-специалист

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

«Фуллстек» — это про развитие разработчика вширь. О точном значении слова можно спорить (писал об этом отдельный пост), но общий смысл в том, что фуллстек-разработчик — это «человек-оркестр», совмещающий разные умения. Самое частое сочетание умений — «фронтенд + бэкенд», то есть такой человек способен в одиночку сделать веб-сервис, от кнопочек в браузере до базы данных.

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

После слайда из доклада @jbaruch вы не сможете забыть понятие «T-shaped», даже если захотите
После слайда из доклада @jbaruch вы не сможете забыть понятие «T-shaped», даже если захотите

QA, QC, тестирование

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

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

Существуют свои различия между понятиями «тестирование», «QA» (quality assurance) и QC (quality control), но на первых порах можно не вдаваться в них и воспринимать все три термина как примерно одно и то же. Зато вот различие, которое понятно сразу: одно дело — проверить «точно ли сайт при нажатии на кнопку отреагирует как должен», а другое дело — проверить «точно ли сайт выдержит нагрузку в миллион запросов». То есть внутри тестирования есть очень различающиеся задачи, поэтому возникают подвиды вроде «нагрузочное тестирование».


DevOps

Код пишут, затем тестируют, затем он выполняется на каких-то устройствах (серверах, смартфонах, чём угодно) — и всё это создаёт много вопросов, связанных не с самим кодом, а с инфраструктурой. Возникают задачи администрирования — вот и у Хабра, помимо раздела «разработка», есть отдельный раздел «администрирование». А в английском есть слово «operations», которое сокращают до «ops».

Такими задачами могут заниматься отдельные люди. Но в последние годы постоянно слышно слово «девопс», которое родилось как объединение «development» («разработка») и «operations». Как можно по нему догадаться, речь о том, чтобы эти две составляющие шли навстречу — и разработчик не просто писал абстрактный код в вакууме, а разбирался в инфраструктурных вопросах. Это помогает избегать ситуации «лебедь, рак и щука», когда люди, вроде бы занятые общим делом, не могут наладить диалог и винят в проблемах друг друга.

С тестированием ситуация похожая (между ним и разработкой тоже нужен общий язык и понимание), поэтому иногда в понятие DevOps включают и его:

IT-словарик для не-айтишников - 11


Энтерпрайз, аутсорс, фриланс

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

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

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

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

IT-словарик для не-айтишников - 12

Заключение

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

А напоследок — минутка рекламы:

Мы в JUG Ru Group проводим конференции для опытных IT-специалистов. Так что, если при чтении поста вы поплёвывали в потолок «ну это всё понятно» — вам будет интересно на наших конференциях, там вы узнаете куда больше нового, чем из этого текста. Сейчас у нас анонсированы пять весенних конференций: Heisenbug (тестирование), Mobius (мобильная разработка), JPoint (Java), HolyJS (JavaScript), DotNext (.NET). 

Автор: Евгений Трифонов

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js