Что означает аббревиатура ide
Что такое IDE? Обзор 10 лучших IDE
Что такое IDE (интегрированная среда разработки) и чем она отличается от текстового редактора?
IDE (integrated development environment) включает в себя эти компоненты, как и ряд других. Некоторые из них поставляются с дополнительными инструментами для автоматизации, тестирования и визуализации процесса разработки. Термин «интегрированная среда разработки» означает, что предоставляется все необходимое для превращения кода в функционирующие приложения.
Microsoft Visual Studio
Интегрированная среда программирования NetBeans
Бесплатная IDE для C (и многих других языков программирования) с открытым исходным кодом. Подходит для редактирования существующих проектов или создания новых. NetBeans предлагает простой drag-and-drop интерфейс, который поставляется с большим количеством удобных шаблонов проектов. Среда в основном используется для разработки Java приложений, но можно устанавливать пакеты, поддерживающие другие языки.
Недостатки: эта бесплатная среда разработки потребляет много памяти, поэтому может работать медленно на некоторых ПК.
PyCharm — лучшая среда разработки для Python
Поддерживаемые языки: AngularJS, Coffee Script, CSS, Cython, HTML, JavaScript, Node.js, Python, TypeScript.
Недостатки: пользователи жалуются, что эта среда разработки Python содержит некоторые ошибки, такие как периодически не работающая функция автоматического заполнения, что может доставить определенные неудобства.
IntelliJ IDEA
Поддерживаемые языки программирования: AngularJS, CoffeeScript, HTML, JavaScript, LESS, Node JS, PHP, Python, Ruby, Sass, TypeScript и другие.
Недостатки: эта среда разработки JavaScript требует времени и усилий на изучение, поэтому может оказаться не лучшим вариантом для начинающих. В ней есть много сочетаний горячих клавиш, которые нужно просто запомнить. Некоторые пользователи жалуются на неуклюжий интерфейс.
Eclipse
Поддерживаемые языки: C, C++, Java, Perl, PHP, Python, Ruby и другие.
Code::Blocks
Недостатки: относительно компактная IDE для СИ, поэтому она не подходит для крупных проектов. Это отличный инструмент для новичков, но продвинутые программисты могут быть разочарованы ее ограничениями.
Aptana Studio 3
Самая мощная из IDE с открытым исходным кодом. Aptana Studio 3 значительно улучшена по сравнению с предыдущими версиями. Поддерживает большинство спецификаций браузеров. Поэтому пользователи этой IDE могут с ее помощью быстро разрабатывать, тестировать и развертывать веб-приложения.
Недостатки: есть проблемы со стабильностью, и она работает медленно. Поэтому профессиональные разработчики могут предпочесть более мощную HTML среду разработки.
Komodo
Поддерживаемые языки: CSS, Go, JavaScript, HTML, NodeJS, Perl, PHP, Python, Ruby, Tcl и другие.
Недостатки: бесплатная версия среды разработки программного обеспечения не включает в себя все функции. В то же время премиум версия явно стоит своих денег.
RubyMine
Поддерживаемые языки: CoffeeScript, CSS, HAML, HTML, JavaScript, LESS, Ruby и Rails, Ruby и SASS.
Xcode
Поддерживаемые языки: AppleScript, C, C++, Java, Objective-C.
Выбор подходящей IDE
Какая IDE окажется лучшей именно для вас зависит от используемой операционной системы, языка программирования и тех платформ, которые вы хотите развивать.
Дайте знать, что вы думаете по данной теме статьи в комментариях. Мы очень благодарим вас за ваши комментарии, дизлайки, отклики, подписки, лайки!
Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, отклики, подписки, лайки, дизлайки низкий вам поклон!
Что такое IDE и SDK? «Страшные» термины простыми словами
Современному человеку нередко приходится сталкиваться с различными малопонятными терминами из мира компьютеров, даже если он никогда не занимался и не планирует заниматься программированием.
Пусть даже вы хотите сосредоточиться исключительно на вопросах бизнеса, взвалив всю нагрузку по созданию приложений для вашей компании на разработчиков, некоторое понимание совершаемых ими действий будет совсем не лишним. Ранее мы уже рассматривали такие понятия, как API и Webhook. На этот раз хотелось бы раскрыть тему SDK и IDE.
Что такое IDE?
Термин IDE расшифровывается как Integrated Development Environment или «интегрированная среда разработки» (в русском языке иногда используется аббревиатура ИСР). Это набор инструментов, позволяющих создавать приложения. Иными словами, если говорить очень просто, то IDE – это программа, в которой создаются другие программы.
Изначально, на заре развития компьютерной техники, программисты записывали код на бумаге, после чего его вводили в ЭВМ при помощи перфолент или перфокарт (кстати, и то и другое также изготовлялось из бумаги). Одна малейшая ошибка могла привести к неработоспособности программы. Со временем, когда вычислительная техника достигла определённого уровня развития, появилась возможность редактирования кода прямо на экране терминала. А несколько позже появились и средства, позволяющие набирать текст программы на экране, избегая «бумажной волокиты».
IDE – это не специализированные текстовый редактор!
На самом деле, это куда более сложный инструмент. Сама по себе среда разработки обычно включает в себя и специализированный текстовый редактор, «заточенный» для работы с кодом. Но для полноценного программирования этого, конечно же, недостаточно.
Требуется также наличие хотя бы компилятора и отладчика. Первый необходим для того, чтобы перевести текст программы, созданный с использованием команд, написанных на английском (обычно) языке, в машинные коды, понятные компьютеру. Отладчик же используется для нахождения и устранения ошибок, неизбежно возникающих при написании кода.
По факту же современные IDE включают в себя множество самых разнообразных инструментов, призванных решать те или иные задачи. Например, там могут присутствовать инструменты для визуальной разработки, позволяющие буквально «нарисовать» программу, используя для этого специальный графический редактор.
Самые первые IDE имели простой (даже скажем больше, примитивный) текстовый интерфейс. Затем появились и решения с графическим интерфейсом. Некоторые современные среды разработки отличаются высокой сложностью, и подчас просто чтобы разобраться в них, даже опытному разработчику необходимо сначала прочитать соответствующую документацию.
Какие сегодня существуют IDE
Современные IDE могут быть бесплатными или платными. Существуют также и условно бесплатные решения. В последнем случае среду разработки можно просто скачать в Сети и тут же начать использовать. Но при этом она будет иметь ряд ограничений. Например, в бесплатном варианте популярная среда разработки IntelliJ IDEA позволит работать только с Java, в то время как оформление подписки откроет доступ к ещё целому ряду языков программирования.
Тут уместно будет привести несколько примеров популярных IDE (в алфавитном порядке):
Естественно, что это только некоторые примеры. По факту же количество IDE в мире значительно больше.
Какой IDE самый лучший?
Сам по себе вопрос некорректный. На сегодняшний день в мире существует немало самых разнообразных IDE, предназначенных для решения самых разных задач. И выбор зависит от разных факторов, из которых самым главным является список стоящих перед программистом задач.
Например, если планируется создавать программные продукты для экосистемы Apple, то вполне логичным выглядит решение воспользоваться таким решением, как XCode. Разработчики под Windows нередко используют Visual Studio. А среди пишущих на языке программирования Python популярность завоевала среда разработки PyCharm. Список примеров можно продолжать.
Влияет также и то, насколько опытным является разработчик. Так, новичка вполне может удовлетворить среда разработки Code::Blocks – с открытым кодом, для разных платформ, простая и нетребовательная к ресурсам, предназначенная для тех, кто пишет на C, C++ или Fortran (да, этот динозавр всё ещё используется, причём довольно активно). Однако целый ряд ограничений делает невозможным применение данного решения в сложных проектах, профессионалам оно точно не подойдёт.
Немалую роль могут сыграть и личные предпочтения. Например, человеку может банально не понравиться внешний вид среды разработки. Иными словами, можно посоветовать разработчику использовать ту или иную IDE, в зависимости от стоящих перед ним задач, но назвать однозначно самую лучшую – невозможно.
Что такое SDK и чем он отличается от API
Как показывает практика, понять термин SDK новичку бывает несколько сложнее, нежели описанный выше IDE. Нередко также возникают сложности с пониманием различий между SDK и API. И действительно, эти термины часто используются вместе. Но синонимами они при этом не являются!
Простая расшифровка термина – Software Development Kit, набор средств разработки – мало что объясняет. Попробуем объяснить всё максимально простым языком (для начала рекомендуем ознакомиться с нашим материалом про API, если вы ещё не сделали этого ранее).
Итак, SDK – это набор средств, при помощи которого разработчики могут создавать программное обеспечение под самые разные платформы. Данный набор может включать в себя самые разнообразные инструменты (утилиты, библиотеки, драйверы, документацию, фрагменты готового кода и многое другое), позволяющие писать и внедрять приложения. При этом SDK включает в себя и API (а иногда и сразу несколько), который используется для взаимодействия с платформой, под которую и пишется софт.
Простыми словами про SDK
Представьте себе дом, к которому подведена электрическая проводка, для которой существует подробная спецификация (описание). Вот данная спецификация и является API. А SDK – это набор инструментов и комплектующих, позволяющий вам создавать самые разнообразные приборы, которые вы потом сможете подключать к этой электрической сети. То есть описание сети (платформы, для которой мы пишем приложения) важно, но одним только этим описанием для создания приборов не обойтись.
Приведём и другой, более «программистский» пример. Так, язык программирования, который используется при написании программы, можно представить себе как API. А в качестве SDK при этом будут выступать инструменты для написания и отладки кода.
Конечно же, оба этих примера очень поверхностны, их задача – лишь передать суть. По факту же, для глубокого понимания таких понятий, как SDK и API необходимо обладать специальными знаниями и опытом. Иначе говоря, быть разработчиком.
Откуда берётся SDK
Набор средств разработки предоставляется создателем платформы, заинтересованным в том, чтобы под неё создавались приложения. Обычно его можно просто скачать из интернета, нередко бывает и так, что SDK распространяется совершенно бесплатно. Это делается для того, чтобы заинтересовать сторонних разработчиков в использовании платформы, убедить их создавать приложения для неё.
Но SDK могут быть предназначены исключительно для внутреннего применения и недоступны для сторонних разработчиков. В таком случае программист получает доступ ко всему необходимому лишь после трудоустройства в контору, создавшую платформу.
Часто SDK имеют лицензию, с которой нужно считаться при написании приложений. Например, проприетарные наборы не подходят для создания программ с открытым кодом.
Порой первая буква в аббревиатуре SDK меняется для того, чтобы сделать название более близким к тому, для чего именно создавался данный набор. Например, DDK или Driver Development Kit – набор средств, предназначенный специально для написания драйверов устройств. Впоследствии компания Microsoft пошла ещё дальше, заменив термин DDK на WDK – Windows Driver Kit. Или другой пример – JDK или Java Development Kit. В данном случае речь идёт о наборе средств разработки для языка Java.
Apix-Drive — универсальный инструмент, который быстро упорядочит любой рабочий процесс, освободив вас от рутины и возможных денежных потерь. Опробуйте ApiX-Drive в действии и убедитесь, насколько он полезен лично для вас. А пока настраиваете связи между системами, подумайте, куда инвестируете свободное время, ведь теперь его у вас будет гораздо больше.
Что означает аббревиатура ide
Смотреть что такое «IDE» в других словарях:
ide — ide; ide·al; ide·al·ist; ide·ate; per·ox·ide; ac·e·to·tol·u·ide; epim·er·ide; ide·al·is·ti·cal·ly; ide·al·iz·er; ide·a·tion·al·ly; lip·ide; … English syllables
-ide — ♦ Élément, du gr. eidês, de eidos « aspect, forme » (⇒ oïde) qui désigne, en chimie, certains groupements d homologues : glucides. I. ⇒ IDE1, IDES, suff. I. Suff. patronymique issu du gr. et marquant gén. la dépendance, l appartenance. A. Suff.… … Encyclopédie Universelle
IDE — may refer to:* Insulin degrading enzyme, an enzyme * Intact dilation and extraction, a form of abortion * Integrated development environment, a software development system * Integrated Drive Electronics (AT Attachment), a computer hardware bus… … Wikipedia
Ide — steht für: Ide (Mythologie), kretische Nymphe, Schwester der Adrasteia, Erzieherin des Zeus Ide ist der Familienname folgender Personen: Henry Clay Ide (1844–1921), US amerikanischer Politiker und Gouverneur der Philippinen Juri Ide (* 1983),… … Deutsch Wikipedia
ide — [ id ] n. m. • 1785; lat. zool. idus, suéd. id ♦ Poisson d eau douce (cyprinidés) au corps allongé, aux nageoires rouges. On élève l ide rouge pour orner les pièces d eau. ⊗ HOM. Ides. ● ide nom masculin (latin scientifique idus, du suédois id)… … Encyclopédie Universelle
IDE — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. <<
ide — ÍDE s.f. pl. Nume dat zilei (zi) a cincisprezecea din lunile martie, mai, iulie şi octombrie şi zilei a treisprezecea din celelalte luni din calendarul roman. – Din fr. ides, lat. idus. Trimis de gall, 13.01.2003. Sursa: DEX 98 íde s. f. pl … Dicționar Român
IDE — IDE: Интегрированная среда разработки (англ. Integrated Development Environment) система программных средств, используемая программистами для разработки программного обеспечения. IDE (англ. Integrated Drive Electronics) … … Википедия
-ide — [īd, id] 〚/span> (OX)IDE〛 Chem. suffixChem. suffix 1. forming the second word in the name of a binary compound: added to part of the name of the nonmetallic or electronegative element or radical [sodium chloride, potassium hydroxide] 2. forming… … Universalium
Ide — Ide, n. (Zo[ o]l.) Same as first
IT-словарик для не-айтишников
Приходилось ли вам объяснять IT-понятия людям из других сфер? Это хитрая задача: при объяснении одного термина нельзя пользоваться другими, потому что они тоже будут непонятными. Представим, что ваш знакомый захотел «войти в айти», впервые открыл Хабр и офигел — как объяснить такому человеку хотя бы основные слова?
Мне захотелось описать популярные понятия неформальным языком — так, чтобы доходчиво донести главное, а не запутывать нюансами. Для этого местами пришлось пойти на упрощения. Но думаю, новичкам не требуется знать «правильнее писать Linux или GNU/Linux». Для начала понять бы, что в разговорах айтишников слово «перформанс» — это не про современное искусство.
Конечно, большинству хабравчан уже не требуется читать такой текст. Смысл публикации в том, чтобы ссылку можно было кидать неайтишным знакомым. А ещё хабрачитатели могут помочь дополнениями в комментариях: у меня описана лишь часть важных понятий, и мои описания наверняка несовершенны, так что совместными усилиями можно сделать всё полезнее.
Оглавление
Технологии
Люди и роли
Технологии
Все знают, что программисты пишут код. А где они его пишут? По сути своей код — просто набор символов, так что в принципе можно хоть в программе «Блокнот». Но это как ретушировать фотографию в Paint, вручную меняя цвет отдельным пикселям: странно мучиться так, когда есть программы помощнее, куда встроены специальные инструменты. И для того, чтобы писать код, тоже делают «программы помощнее».
Есть «редакторы кода», там базовый набор инструментов: например, подсветка разных составляющих кода разными цветами, помогающая быстро видеть нужное. Самый популярный такой редактор в мире — Visual Studio Code от Microsoft.
А есть более мощный вариант — IDE (вообще произносится «ай ди и», но в России говорят «и дэ е»). Аббревиатура означает «integrated development environment» («интегрированная среда разработки»), и это значит, что туда включен не только редактор кода, но и другие инструменты для самых разных задач разработчика (подробнее о них ниже) — компиляции, отладки, контроля версий, вёрстки интерфейса. То есть это такой «швейцарский нож».
Компиляция
Как известно, в компьютерах вся информация хранится единичками и ноликами. Но человеку воспринимать информацию такими битами неудобно. Поэтому, когда мы пишем текст, компьютер показывает нам понятные буквы, а дальше сам разбирается, как ему их внутри себя сохранить единичками и ноликами.
Нечто подобное с кодом. Компьютер принимает в качестве команд машинные инструкции, но ему они понятны, а вот человеку с ними иметь дело неудобно. И люди создали современные языки программирования, где код куда более человекочитабельный. А когда человек написал на таком языке понятную ему программу, дальше требуется перевести её в формат, подходящий для исполнения компьютером. Примерно это и происходит при компиляции. В больших проектах она может требовать много времени, что даёт поводы для шуток:
Отладка
Как люди представляют себе работу разработчика: человек с умным видом пишет код, который делает что надо. Как на практике эта работа выглядит заметную часть времени: человек с глупым видом пытается понять «почему уже написанный код не делает что надо».
Слово «debugging» в России то просто произносят как «дебаггинг», то переводят как «отладка». Как можно догадаться по самому слову, речь о процессе избавления от багов. Есть популярная шутка «отладка — это как быть детективом в фильме, в котором ты сам и есть убийца». Ты где-то накосячил, а теперь надо ещё суметь разобраться, где именно и как.
В этом могут помочь разные инструменты, в первую очередь — созданные как раз для этого отладчики (debuggers). Отладчик позволяет, запустив программу, следить за происходящим «внутри» неё, и помогает заметить, где именно что-то пошло не так, как задумывалось.
Контроль версий и git
Вам когда-нибудь приходилось совместно с другими людьми работать над файлами, когда все поочерёдно вносят в них изменения, и на всякий случай требуется сохранить промежуточные версии? Обычно такое заканчивается папками «finally_final_v5_2021» и письмами «Re: Re: Re: Fwd: Re», во всём этом чёрт ногу сломит.
А заглядывали ли вы в историю правок у страниц на Википедии? Там вместо груды файлов есть одна сущность (страница) с её историей, где автоматически отмечается, какой пользователь какие изменения в страницу внёс. Благодаря этому можно сравнить две разных версии, увидеть, что именно изменилось, и при необходимости откатить всё к старой версии.
Над кодом тоже работают совместно, обращаться к истории изменений приходится регулярно, и чтобы не сойти при этом с ума, всё делают примерно как в Википедии. Для этого созданы системы контроля версий (version control system, сокращённо VCS). Самая популярная из таких систем, ставшая стандартом — git.
Также есть целый набор понятий, связанных с этим, вот только некоторые:
Коммитить (commit) — вы что-то сделали и теперь вносите эти изменения в git.
Бранч (branch) — ветка: это как создать отдельную копию файла, с которой можно смело экспериментировать, не боясь испортить «основную», с которой в это время может работать кто-то другой.
Мёрджить (merge) — объединять код: если удачно поэкспериментировали, надо влить результат в основную ветку, которая тем временем могла ощутимо измениться.
Open source
Представим, что программист написал код, скомпилировал — получилось то, что можно запустить. Дальше можно делиться с миром этим результатом работы, и люди смогут им пользоваться, не зная, как именно он сделан «внутри». Но можно, кроме готовой программы, поделиться и её исходным кодом тоже. Тогда другие программисты, разобравшись в нём, смогут предложить свои улучшения или создать на основе программы что-то своё. Когда код открыт всему миру, это и называют open source.
Звучит здорово, но есть нюансы. Например, на программе с открытым кодом сложнее зарабатывать: больше не требуется покупать её, когда можно взять код и самостоятельно скомпилировать. И в Microsoft не спешат делиться кодом Windows. Зато с операционными системами Linux всё наоборот: ядро Linux — это открытый бесплатный проект, куда вносили вклад разные люди и компании со всего мира, а основать на нём свою ОС может кто угодно, поэтому у Linux есть много разновидностей.
Производительность
Английское слово performance применяется не только к художественным представлениям, но и к компьютерам, где его используют в значении «производительность».
Разработчики заняты не только тем, чтобы код выполнял нужные действия, но и оптимизируют производительность, чтобы он делал это быстрее. Есть случаи, когда это означает «чтобы не тормозило»: например, если мобильное приложение очень долго запускается и это раздражает пользователей, можно попробовать исправить эту ситуацию. А есть случаи, где раздражения пользователей нет, но ускорять всё равно есть смысл: если код работает на сервере, и там выполняется сколько-то операций в секунду, а потом всё оптимизировали и стало выполняться больше операций, то понадобится меньше серверов и можно будет сэкономить на них.
Чтобы улучшать производительность, для начала её надо измерять: точно определять, сколько времени требуется на выполнение какого-либо кода, разбираться, где всё «застревает». Поэтому рядом с «перформансом» нередко можно встретить ещё слово «бенчмаркинг», и это отдельное искусство — измерять нужно уметь.
Фронтенд и бэкенд
Зачастую, пользуясь чем-то, мы видим только «надводную часть айсберга». Можно столько ездить на автомобиле, что руль и приборная панель начнут сниться, но ни разу не заглядывать ему под капот: «ну оно там как-то работает, в автосервисе разберутся».
В софте «руль и приборная панель», которые пользователь видит и с которыми взаимодействует — это фронтенд, а часть «под капотом», где хранятся данные и обрабатывается логика — бэкенд. Слева от любого хабрапоста есть кнопка «вверх» — её добавил фронтендер, и когда вы её нажмёте, на это отреагирует ваш браузер. Но если вместо этого вы напишете комментарий, то кнопка «отправить» (тоже добавленная фронтендером) приведёт уже к взаимодействию с бэкендом: ваш комментарий отправится на сервер и будет там сохранён.
Хайп: AI/ML, VR/AR, blockchain
Не-айтишники слышат в новостях про самые хайповые технологии, поэтому могут думать, что все программисты занимаются такими и ежеминутно двигают мир в будущее. На самом деле всё скучнее, обычных фронтендеров наберётся куда больше, чем VR-специалистов (просто потому что пользователей сайтов куда больше, чем пользователей VR-шлемов). Но свои ниши у этих технологий есть:
«ИИ» (искусственный интеллект) или «AI» (Artificial Intelligence) — это расплывчатое бессмысленное понятие, которое люди исторически применяли к самым разным вещам. Но в последние годы так обычно обозначают машинное обучение (ML, machine learning), и вот это куда более конкретная штука. Её суть в том, чтобы учить компьютер выполнять задачи не стандартными строгими алгоритмами («если на фото есть такие-то элементы, то изображена кошка»), а другим подходом: «вот тысячи фотографий, на них всех кошки, сам реши, что у них общего, и дальше ищи на новых снимках то же». Для многих задач, где чёткий алгоритм составить затруднительно (как с тем же распознаванием изображений), это оказывается куда эффективнее.
VR (virtual reality) — виртуальная реальность, когда видишь вокруг полностью другой мир, как со шлемами Oculus. AR (augmented reality) — дополненная реальность, когда к настоящим объектам вокруг пририсовывают какие-то ненастоящие: как в случае, когда Google на вашем телефоне готов показать тигра прямо в вашей комнате. Над VR и AR работают давно не первый год, и супервзрыва пока не произошло, но развитие продолжается.
Блокчейн — технология, лежащая в основе Bitcoin и других криптовалют, но подходящая и для других задач, связанных с хранением данных. Одна из её главных идей в децентрализованности: у блокчейн-систем нет единоличного «владельца» (в случае с Bitcoin люди даже не знают, как выглядит его создатель Сатоши Накамото, но это и не принципиально). Несколько лет назад с ростом стоимости биткоина возник бум, когда людям казалось «достаточно реализовать любой проект с использованием блокчейна, чтобы озолотиться». Этого не произошло, и волна хайпа схлынула, но сама технология осталась и ещё может пригодиться.
Люди и роли
Программист / разработчик / кодер
В детстве мы все привыкли к слову «программист». Сейчас в вакансиях пишут «разработчик» («developer») или «software engineer». А ещё можно встретить слово «кодер». В чём разница? В интернете (в том числе и на Хабре) есть дискуссии об этом, и некоторую разницу там находят: например, «кодер» порой считают уничижительным определением, когда человек механически пишет код, сам не вполне его понимая.
Но определения из разных текстов расходятся друг с другом, а сами представители профессии не заморачиваются и называют себя как придётся. Так что, в принципе, можно считать это всё синонимами. В индустрии самый распространённый вариант — «разработчик», но в целом можете говорить как вам удобнее. Куда важнее осознать, что все эти определения относятся именно к пишущим код, и не говорить «тыжпрограммист, почини мой принтер» — это задача совсем другого профиля.
Джуниор, миддл, сениор
Разработчиков делят по градациям опытности. Junior — начинающий, за которым нужен глаз да глаз, middle — «крепкий середнячок», а senior — опытный, который может хорошо присмотреть за джунами и наставить их на путь истинный.
Про «синьора Помидора» пошутили уже миллион раз, но это по-прежнему смешно, так что, если разработчики пишут «помидор», они про это. Ну или про тайм-менеджмент по технике Pomodoro, тут уж смотрите по контексту.
В вакансиях, как правило, сразу указывают, ищут в конкретном случае джуна или сениора, и в зависимости от этого зарплата может различаться радикально. Сениоров не хватает, компании за них конкурируют, так что они в выгодном положении — но до сениора надо ещё дорасти, пройдя этап джуниора, когда вы нужны работодателям куда меньше. Так что не слишком верьте платным курсам программирования, которые обещают золотые горы немедленно после прохождения.
А стадия «senior» — это тупик, дальше неё развиваться некуда? Не совсем так. Есть роли «архитектор» и «тимлид», порой можно увидеть должности вроде «principal engineer» (отвечает не за конкретный проект, а за разработку во всей компании). Но всё это уже не линейное движение «кодить лучше прежнего», развитие здесь идёт не в сторону непосредственного написания кода, а в сторону других задач.
Full stack developer и T-shaped-специалист
В любой деятельности можно развиваться по-разному: «вглубь» (очертить узкий круг задач и становиться асом конкретно в них) и «вширь» (уметь больше, но не настолько хорошо). У обоих вариантов свои преимущества и недостатки (как говорилось про «вглубь» ещё в XIX веке у Козьмы Пруткова, «специалист подобен флюсу: полнота его одностороння»).
«Фуллстек» — это про развитие разработчика вширь. О точном значении слова можно спорить (писал об этом отдельный пост), но общий смысл в том, что фуллстек-разработчик — это «человек-оркестр», совмещающий разные умения. Самое частое сочетание умений — «фронтенд + бэкенд», то есть такой человек способен в одиночку сделать сайт, от кнопочек в браузере до базы данных.
А «специалист в форме буквы Т» — это совмещение развития вглубь и вширь. Идея в следующем: есть главное направление, куда забираешься глубже всего, и есть смежные, где проходишься по верхам. Вертикальная черта в букве «Т» отвечает за основное глубокое, горизонтальная — за смежные.
После слайда из доклада @jbaruch вы не сможете забыть понятие «T-shaped», даже если захотите
Тестирование, QA, QC
В случае с IT чаще всего говорят о разработчиках, но вообще-то есть много других специалистов: например, тестировщиков. Сделать что-то — это полдела, надо ещё проверить «всё ли сделано как задумывалось», убедиться «не всё» и разобраться, что надо переделать. В сложных системах неизбежны баги, с которыми поведение продукта не будет соответствовать ожидаемому, и очень желательно выявлять их до того, как продукт выйдет на рынок.
О тестировщиках то вообще не задумываются (всем ясно, что кто-то пишет код, но не что кто-то его проверяет), то считают их какими-то врагами разработчиков, цель которых — «сломать всё к чертям». Но это не просто безумные крушители, а поиск багов — не просто небольшое дополнение к программированию: это отдельная трудоёмкая область работы со своими особенностями. Разработчики тоже участвуют в тестировании, но ещё не факт, что хороший программист будет хорошим тестировщиком (и наоборот).
Существуют свои различия между понятиями «тестирование», «QA» (quality assurance) и «QC» (quality control), но на первых порах можно не вдаваться в них и воспринимать все три термина как примерно одно и то же. Зато вот различие, которое понятно сразу: одно дело — проверить «точно ли сайт при нажатии на кнопку отреагирует как должен», а другое дело — проверить «точно ли сайт выдержит нагрузку в миллион запросов». То есть внутри тестирования есть очень различающиеся задачи, поэтому возникают подвиды вроде «нагрузочное тестирование».
DevOps
Код пишут, затем тестируют, затем он выполняется на каких-то устройствах (серверах, смартфонах, чём угодно) — и всё это создаёт много вопросов, связанных не с самим кодом, а с инфраструктурой. Возникают задачи администрирования — вот и у Хабра, помимо раздела «разработка», есть отдельный раздел «администрирование». А в английском есть слово «operations», которое сокращают до «ops».
Такими задачами могут заниматься отдельные люди. Но в последние годы постоянно слышно слово «девопс», которое родилось как объединение «development» («разработка») и «operations». Как можно по нему догадаться, речь о том, чтобы эти две составляющие шли навстречу — и разработчик не просто писал абстрактный код в вакууме, а разбирался в инфраструктурных вопросах. Это помогает избегать ситуации «лебедь, рак и щука», когда люди, вроде бы занятые общим делом, не могут наладить диалог и винят в проблемах друг друга.
С тестированием ситуация похожая (между ним и разработкой тоже нужен общий язык и понимание), поэтому иногда в понятие DevOps включают и его:
Энтерпрайз, аутсорс, фриланс
Были слова о том, какие специалисты могут работать в IT — а теперь напоследок пара слов о разных вариантах компаний, где они могут работать.
Одно из различий: бывают маленькие юркие стартапы, а бывает крупный консервативный «энтерпрайз». В начинающих компаниях больше свободы, но зачастую и больше хаоса. Солидные корпорации обычно бюрократичнее, зато стабильнее.
Другое различие — продуктовая компания против аутсорса. В первом случае компания разрабатывает собственный продукт, во втором — занимается разработкой на заказ для других компаний. К своему продукту можно «прикипеть душой», а переключение между проектами разных заказчиков позволяет поработать с разными технологиями.
Ну и можно вообще не работать в компании, а быть фрилансером, находя заказы на бирже вроде Upwork. Но среди разработчиков это не так распространено, как среди, скажем, фотографов.
Заключение
Вполне допускаю, что можно написать такой текст гораздо лучше, чем это сделал я. Поэтому давайте считать его опенсорсным проектом: если хочется дополнить, исправить, послать к чёрту за слишком грубое упрощение — смело делайте это в комментариях, и в итоге страница станет полезнее для всех оказавшихся на ней не-айтишников.
А напоследок — минутка рекламы:
Мы в JUG Ru Group проводим конференции для опытных IT-специалистов. Так что, если при чтении поста вы поплёвывали в потолок «ну это всё понятно» — вам будет интересно на наших конференциях, там вы узнаете куда больше нового, чем из этого текста. Сейчас у нас анонсированы пять весенних конференций: Heisenbug (тестирование), Mobius (мобильная разработка), JPoint (Java), HolyJS (JavaScript), DotNext (.NET).