IT для неайтишников: Какими бывают IT-шники? Часть 2
Периодически мне задают вопрос: «Кто есть кто в мире ИТ?». Вопрос этот интересный и объёмный. Чтобы не рассказывать всё по много раз, я напишу несколько статей и буду на них ссылаться. Вторая часть статьи посвящена программистам, с ними тоже не всё так просто. Рассказывать буду простым языком, идя от простого к сложному.
Меня зовут Константин Митин, я сооснователь и руководитель компании АйТи Мегастар/АйТи Мегагруп. Когда-то был простым разработчиком, работал в L3, дорос до тимлида, затем и до руководителя филиала разработки крупной ИТ-компании. Теперь я в АйТи Мегагруп и один из идеологов концепции IT
Я не пишу продающие тексты и не являюсь копирайтером, в конце статьи не будет коммерческого предложения и призыва к действию. Мне более интересно делиться знаниями и опытом. Некоторым людям мои статьи кажутся слишком длинными, если вам более привычен формат небольших сообщений, то обратите внимание на telegram-канал Записки ITBP.
В первой части мы рассмотрели вопрос о том, какими вообще бывают IT-шники, и составили список разновидностей специалистов, которых планируем рассмотреть. Список далеко не полный, видов специализации на самом деле больше. Например, мне напомнили, что есть ещё data team (data engineer, data analyst, data science и business intelligence developer/analyst), это важные для современного бизнеса специализации, попробую рассмотреть и их, но потом.
В этой статье мы попробуем рассмотреть, кто такие программисты и чем они между собой отличаются. Да, они могут писать на разных языках, заниматься мобильной разработкой, разрабатывать десктопные (приложения для ПК) решения либо web-сервисы, но на этом их отличия не заканчиваются.
На самом деле это очень ёмкий термин. Фактически это человек, который специализируется на написании программного кода. Беда в том, что программный код можно писать по-разному, в разных местах и на разных языках.
Кроме того, вспомним, что системный администратор тоже пишет программный код, например, когда что-то автоматизирует в своей работе с помощью скриптов, но всё же его специализация — это настройка и обслуживание инфраструктуры, то есть серверов, сети, операционных систем, софта для мониторинга и прочего. Иными словами, программистом он не является.
С другой стороны, нельзя сказать, что программист только и делает, что пишет программный код. У многих программистов есть навыки настройки сети, серверов и прочего. Иногда на уровне выше, чем у начинающих системных администраторов.
Тем не менее программные продукты создают программисты, это их основная роль — создавать. Именно по тому, что создаётся, как (на чём) создаётся, и где (прикладная область) создаётся, можно отличить одних программистов от других.
Программировать можно на разных языках. Можно писать низкоуровневый код на С для каких-нибудь микроконтроллеров, которые используются, например, в промышленных станках либо коммутационном оборудовании. Можно писать на языке С++, например, занимаясь системным программированием, дописывая кусочек того же Linux. Можно писать на PHP, разрабатывая, например, сайт. Можно использовать Go, реализуя функционал распределенных вычислений для обработки каких-то очень больших данных. Можно писать на VB, делая всё то же самое, что и на C#, так как это одна и та же платформа .Net. А можно писать на том же самом VB (на самом деле VBA) макросы в MS Office. Есть ещё разновидности SQL для написания запросов в базы данных, причём у каждой базы свой диалект этого самого SQL. Для PostgeSQL свой SQL и свои методы оптимизации, для Oracle — свой, для MS SQL Server — свой.
Список актуальных и популярных языков программирования и технологий очень большой. Зачастую программисты владеют сразу несколькими языками и технологиями в той либо иной мере. Кроме того, на своём профессиональном пути программистам приходится изучать новые языки и технологии, потому что мир IT не стоит на месте и постоянно развивается. Здесь, как и в зазеркалье из «Алиса в стране чудес», для того, чтобы стоять на месте, нужно весьма быстро бежать.
Не стоит делать большой упор на знание конкретных языков. По опыту нашей компании разработчик на PHP осваивает Python где-то за две недели. Языки близкие. Разработчик на 1С пересаживается на Python за месяц. Единственное, мы знаем, как их обучать.
В любом случае, программист создаёт некоторое приложение/сервис и систему. Большое влияние играет объём и сложность системы. Если мы работаем с небольшими системами, например, реализуем интернет-магазины, то у нас есть просто программисты. Возможно, что такие системы создаются силами всего одного либо двух программистов.
Ситуация сильно меняется, когда система либо очень большая, либо очень сложная. Тогда появляются уже младшие (junior), средние (middle), старшие (senior) программисты, технические лидеры, лидеры команд, архитекторы и другие ответвления от «просто» программистов. Иными словами, срабатывает масштабный фактор. Поэтому нельзя ставить знак равенства между программистом, который пишет интернет-магазины и middle developer, который на том же стеке технологий реализует внутренний корпоративный портал для большой организации.
На сложных задачах универсальных программистов уже почти не бывает. Человеку приходится выбирать свою специализацию, появляется деление на старших, младших и других разработчиков. Хотя бывают и обратные эффекты, например, наши фронтенд разработчики хорошо пишут на Flutter, то есть разрабатывают кроссплатформенные мобильные приложения. Тем самым они частично вторгаются в область мобильной разработки. Мир IT не стоит на месте, для него такое нормально.
Есть ещё разделение на прикладные области. Программисту следует понимать ту систему, которую он разрабатывает. Понимать финтех — это одно, бухгалтерские приложения — другое, писать внутренние web-сервисы — третье. Поменять прикладную область часто тяжелее, чем изучить новый язык программирования. Но только если мы говорим о небольших системах. В больших системах есть свои сложности, на фоне которых прикладная область уходит на второй план.
Таким образом, в программировании есть основы, освоение которых — это самая затратная часть в обучении. Именно глубина понимания основ определяет масштабы систем, над которыми конкретный программист может самостоятельно работать. Следом идёт понимание прикладной области. И где-то в самом конце находится язык программирования. Хороший программист должен уметь быстро осваивать новые технологии и языки программирования.
Кроме специализации на прикладной области и языке программирования у программистов выделяют ещё и уровни компетентности. Обычно можно выделить зависимость от опыта работы и уровня компетентности программиста.
Однако рассматривать стоит именно опыт коммерческой разработки, а не учебной либо «пет-проектов» (проект, как домашний «питомец»), и смотреть на те задачи, которые решал конкретный человек. Если 10 лет производить по одному «лендосу» в день-два, то выше уровня младшего программиста подняться всё равно не получится. Для роста нужен масштаб проекта.
Младшие программисты — это разработчики с начальными уровнями компетенций. У них не поставлено системное мышление, часто они имеют фрагментарное, фасеточное либо клиповое мышление, из-за чего не способны воспринять всю разрабатываемую систему целиком. Им ещё плохо знакома производственная культура, они могут не понимать, как их действия отражаются на их коллегах. То есть нет понимания, что с их кодом потом будет работать другой программист, а тот функционал, который они реализуют, потом будет тестировать QA, этим будет пользоваться конечный пользователь, а служба технической поддержки будет решать проблемы этих конечных пользователей.
В целом наличие системного мышления, глубина восприятия и размер «оперативной памяти», то есть способность держать и обрабатывать огромные объёмы информации в своей голове, в конечном счёте определяют уровень специалиста в IT.
На самом деле такой человек даже не понимает, что лет через пять к нему может прийти его же код, и нужно будет быстро понять, что он делает и для чего он вообще написан. Кстати, старшие программисты спокойно читают свой код многолетней давности и могут его быстро менять. Младший программист уже через полгода будет воспринимать свой код, как «чужой код», который он не может понять.
Это люди, которые находятся на начальных стадиях своего профессионального пути, но при этом уже умеют писать программный код и готовы вкладываться в своё развитие. Именно для того, чтобы помочь им в развитии, и появляются практики «код-ревью» (работа с наставником), правила «код-стайла» (правила чистописания кода), правила рефакторинга (какой код мы будем считать легко поддерживаемым) и прочие технологии/методологии. По сути это всё костыли, для того, чтобы «начинашка» не убился на своём пути да вреда окружающим не нанёс.
Стоит обратить внимание на масштабный фактор. В больших и средних проектах такой человек участвовать может только под надзором. Но он может самостоятельно делать мелкие проекты, типа «лендосов», корпоративных сайтов, интернет-магазинов, небольших web-сервисов и прочего.
В качестве лирического отступления. Я несколько лет являлся членом государственной экзаменационной комиссии на факультете прикладной математики и информатики, в неё должны входить «не сотрудники университета». В их числе я участвовал в приёмке выпускных работ у бакалавров, то есть у ребят, которые ещё четыре года назад ходили в школу. На защите работы типа «интернет-магазин», «корпоративный сайт», простой web-сервис, даже при наличии акта внедрения (от коммерческого заказчика), это считалось работой начального и среднего уровня.
Иными словами, интернет-магазин и корпоративный сайт вам сейчас и стажёр соберёт. Сегодня это технически несложное мероприятие. А качество итогового продукта зависит больше от UI/UX специалиста, чем от программиста.
В какой-то момент младший программист набирается опыта, после чего перестаёт делать глупые и детские ошибки. Исчезает необходимость тратить много ресурсов других людей на обеспечение работы этого человека. Иными словами, исчезает необходимость в наставнике, появляется возможность самостоятельной работы.
Человек уже имеет смутное понимание, как писать код, чтобы с ним потом было не так сложно работать другим программистам, да и ему самому через несколько месяцев. Он понимает, что потом с продуктом его труда будут сталкиваться QA, пользователи и техническая поддержка. То есть может работать, как исполнитель простых задач и задач среднего уровня.
Но человеку всё ещё не хватает системного мышления и способности воспринимать всю систему целиком, не только в ширь, но и в глубину.
Что такое задача среднего уровня? Например, нам нужен web-сервис для управления работой точек аренды велосипедов в парках. Реализовать весь этот сервис — задача среднего уровня. Почему так? Потому, что можно взять MVC-фреймворк (Model-View-Controller — популярная схема построения приложений), где уже продумана архитектура, решена основная масса типовых, но сложных технических проблем, создана документация по конфигурированию и доработке.
Вот именно такую задачу middle developer должен мочь правильно оценить и реализовать в срок без помощи других программистов, то есть «самостоятельно». Зачем пришлось брать самостоятельность в кавычки? Потому, что разработчик все равно будет работать в команде с UI/UX-специалистом, руководителем проекта, QA-специалистом и другими специалистами, по необходимости.
Если у middle developer много проектов, которые он выполняет «в одного», то появляется замечательная возможность получать обратную связь от окружающего мира, чтобы понимать, что ты делаешь не так. Однако для этого нужно задуматься о том, как сократить количество ошибок, которые доходят до QA, а потом до пользователя, задуматься о том, как разработанный функционал попадёт на продуктив (среда, в которой работают конечные пользователи), будет ли его легко администрировать, задуматься о том, а как это всё будет поддерживать служба поддержки пользователей, как они будут разбирать инциденты, насколько гибко и быстро они смогут компенсировать ошибки системы и много другое.
Фактически, когда у специалиста уровень осознанности вырастает настолько, что он начинает понимать, что он не только «индивидуальность», но и часть окружающего его мира (в том числе и систем, что его окружают), можно говорить о начальной стадии перехода к следующему уровню профессионального мастерства.
Что отличает старшего программиста от обычного программиста? Далеко не уровень «хард-скилов» (технических компетенций), а уровень мышления человека. Совершенное знание языков программирования и инструментов разработки не сделает человека старшим программистом.
Почему такое получается? Старший программист уже воспринимает систему целиком и может находить оптимальные пути реализации, исходя из общего понимания системы. Ещё он обладает коммуникационными навыками для того, чтобы объяснить/договориться с бизнес-аналитиками, UI/UX, QA, руководителем проекта и другими участниками команды о новом для них способе реализации.
Что такое оптимальный путь реализации? Это путь, который удовлетворяет функциональным требованиям, но кратно сокращает трудозатраты. Иногда для этого достаточно «кнопочку переставить». Ещё стоит понимать, что совершенное знание языка программирования и инструментов разработки может повышать эффективность труда на десятки процентов, но не в разы, как того обычно достигают старшие программисты.
Из-за того, что основным препятствием для профессионального роста становятся уровень мышления и степень осознанности, в реальности старших программистов существует не так уж и много. Людям очень сложно даётся такой барьер. Не всем даётся системное и стратегическое мышление.
Ещё такие люди являются хорошими наставниками. Именно наставниками, а не руководителями. Они умеют помогать людям вырасти. В том числе и до своего уровня. Конкуренция их не пугает, скорее они будут радоваться новому соратнику.
Такие люди обеспечивают реализацию сложных задач. Например, реализацию с нуля ERP-системы под нетривиальные модели учёта. Они могут обойти сложные технические проблемы, подобрать технологии, найти оптимальные пути реализации, выполнить декомпозицию задач на средних и младших программистов, и вести команду до завершения всего проекта.
Иногда говорят, что в IT основная рабочая сила это — middle developer. Возможно. Но основная движущая сила — это senior developer. Без их работы техническая часть сложного проекта может просто не сдвинуться с места вне зависимости от количества middle developer.
Мы с вами прошлись по цепочке junior, middle, senior, но фактически не рассматривали «хард-скилы» и не говорили о языках программирования, совсем ничего не сказали про понимание ООП, паттерны проектирования (ну, только MVC упомянули), методы рефакторинга, приёмы построения архитектуры и другом. Почему так?
Рассмотренные стадии роста во многом являются инвариантом в мире IT, который применим не только для программистов. Конечно, нужно знать языки, методологии и инструменты, это само собой разумеющееся, без этого никуда. Однако следует понимать, что все эти «новые технологии» создаются не на пустом месте, а на базе чего-то уже существующего до них. За счёт понимания и осознания этого «чего-то» старшие программисты начинают осваивать «новые технологии» по ходу работы, не сильно отвлекаясь, иногда просто для развлечения.
Нельзя забывать, что мы работаем в области «информационных технологий», то есть области сбора, хранения и обработки информации. Поэтому умение видеть потоки информации в системе, умение оперировать и изменять потоки информации в системе (целиком) будут определять итоговый уровень специалиста. Не важно, программист это, аналитик, руководитель проекта, QA, UI/UX либо ещё кто-то.
Без нужного уровня мышления не бывает нужного уровня специалиста. Опора лишь на матрицы компетентности и теоретические знания до добра не доведёт.
Теперь для простоты понимания:
Junior. Уже обладает базовыми знаниями и компетенциями. Но требует присутствие наставника при своей работе.
Middle. Способен самостоятельно решать стандартные задачи небольшой либо средней сложности. Способен решать небольшие нетиповые задачи.
Senior. Способен воспринимать систему целиком, способен находить оптимальные пути реализации. Имеет развитые коммуникационные навыки, умеет объяснять, убеждать и договариваться. Хорошо проявляет себя в качестве наставника. Может решать большие и сложные задачи как своими руками лично, так и руками middle и junior.
Мы рассмотрели этот вопрос на программистах и не будем его касаться с QC/QA, UI/UX, руководителями проектов, аналитиками, архитекторами, системными администраторами, devops и другими сотрудниками.
Во второй части статьи мы рассмотрели программистов. Основной отличительной чертой программистов является акцент на создании чего-то нового, именно это отличает их от системных администраторов (настраивают и управляют инфраструктурой) и технической поддержки (решают инциденты и проблемы).
Так же мы разобрались откуда берётся деление специалистов по уровням, рассмотрев цепочку младший (junior), средний (middle), старший (senior) на примере программистов. Таким же образом растут системные администраторы, QC/QA специалисты, менеджеры проектов, владельцы продуктов и другие. Это умение охватить своим восприятием систему целиком, управлять потоками информации внутри системы и управлять развитием систем
В третьей части мы разберём руководителя службы технической поддержки, технического лидера (tech lead) и лидера команды разработки (team lead).
Если вы дочитали до конца и написанное было для вас полезным, то спасибо вам.
Чем отличается программист от системного программиста. Системный администратор vs программист. Что он делает
Привет, друзья! Сегодня поговорим о такой профессии как системный администратор. Так как наш век – век технического прогресса. Век машин. Представить себе даже самую захудалую фирму без компьютера невозможно! У директора предприятия, в бухгалтерии, в кабинетах начальников отделов, да и у рядовых сотрудников — у всех стоят компьютеры на рабочих местах.
Корпоративная почта, новости, рынок, банк – все эти блага современного трудового коллектива, несомненно, помогают выжить в жестоком мире бизнеса. Но как заставить всё это работать сообща? Как сделать так, чтобы сотрудники не «в контакте» и «одноклассниках» сидели в рабочее время, а занимались делом? Как уберечь секретную информацию с рабочего компьютера от хакеров? Вот для этого и существует такая профессия как сис админ.
Если спросить у гугла, кто же это такой, он ответит примерно следующее:
Сис админ — сотрудник, должностные обязанности которого подразумевают обеспечение штатной работы парка компьютерной техники, сети и программного обеспечения, а также обеспечение информационной безопасности в организации.
В народе же такого специалиста называют просто «админ» или «сисадмин».
Так давайте же разберёмся.
Что он делает
К обязанностям сис админа относится обеспечение устойчивой работы компьютерной техники.
В этот этап входят:
- установка и настройка (а иногда даже закупка) компьютеров,
- комплектующего и периферийных устройств (принтеров, сканеров и т.д.)
При занятии этим делом, главное проложить компьютерные коммуникации так, чтобы даже самый изощренный работник не выдернул ногой штекер и не залил кофе системный блок.
Самое сложное в работе – объяснить красивой блондинке секретарше шефа, что не надо прикалывать провод мышки кнопками к столу, даже если он сильно мешает)))
- Настройка программ и обеспечение их стабильной, надежной работы будет являться, пожалуй, самым трудоемким в работе. Софт может быть абсолютно разный, в зависимости от специфики предприятия. Например, от обычного Microsoft word’a & excel’я, до СУБД «ORACLE» и бухгалтерских программ.
Основной проблемой в работе программного обеспечения является, к сожалению, именно человеческий фактор, так как обычно жалобы сотрудников сисадмину начинаются со слов: «не туда нажала и всё вдруг куда-то пропало». Синхронизировать работу программ и выставить правильную защиту «от дураков» — вот, считайте, половина работы системного администратора.
- Так же сисадмин должен знать и уметь правильно настроить параметры доступа, чтобы каждый работник мог включить только свой компьютер, свой профиль, запустить только те программы, к которым имеет доступ согласно своему статусу в кампании. Если работа сотрудников связана с интернетом, то системному админу предстоит настроить параметры доступа во всемирную паутину так, дабы ни «в контакте», ни так любимые офисными работниками «одноклассники» не были доступны с рабочих компьютеров.

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

К явным достоинствам относится и оклад сисадминов. По данным сайта «job.ru» за услуги подобного рода компании готовы платить в среднем от 1,200$ до 3.000$.
К недостаткам (минусы) профессии относятся:
- Неравномерная и порою высокая загруженность. Компьютеры стараниями нерадивых пользователей глючат и ломаются с завидной регулярностью практически на любом предприятии.
- Непонимание и порою абсолютное нежелание понимать вообще, как работает система. Глючит мышка – виноват сисадмин. Не работает сайт – виноват сисадмин. Перегорел блок питания – виноват сисадмин. И поди, докажи, что от тебя не зависит напряжение в электросети!
- Ограниченные возможности для карьерного роста. Если деятельность компании не связана с оказанием услуг в сфере информационных технологий, то кроме как на прибавку к жалованию больше особо рассчитывать не на что.
Характеристика
Какие же качества необходимы хорошему системному админу?
- Во-первых, он должен иметь хорошее техническое образование. Знание того, что есть системный блок, а что монитор и как переустановить операционную систему – будет явно не достаточно.
- Во-вторых, хороший сис админ должен владеть английским языком на уровне явно превосходящим базовый.
Большинство программ и в особенности техническое описание к ним прилагается именно на английском и пробелы в знании языка могут дорого обойтись, да и в солидной компании без знания иностранного делать нечего.
- И, наконец, в-третьих, коммуникабельность, умение найти подход к коллегам по работе обеспечат сисадмину не только дополнительные печеньки к кофе, но и порою хорошую премию.
Если вы привыкли работать самостоятельно, хорошо владеете английским и умеете находить подход к людям – эта работа для вас. Да и заработная плата позволит обеспечить не только себя, но и семью порадовать, а в нашем информационном обществе человек с подобного рода профессией без работы не останется никогда.
С уважением Алексей!
За свои почти тридцать лет я дослужился до старшего системного администратора. В моем распоряжении было около сорока серверов с linux на борту. Компания росла и расширялась, но задачи сводились к наращиванию мощи уже готового функционала.
И все бы хорошо, но со временем и по определенным причинам дискомфорт начал преобладать над комфортом.
Во-первых, сам процесс поддержки, а точнее его «постоянная» природа или отсутствие какой-либо завершенности. Мелкие задачи, выполняясь, накладываются друг на друга до бесконечности и превращаются в огромный ком, который постоянно меняет свои размеры, — соотношение выполненных и невыполненных задач. Что в итоге порождает вопросы: «Что полезного я уже сделал, Что еще сделаю и к Чему в итоге я двигаюсь?»
В-вторых, прерывания. В деле системного администрирования они особо выделяются из всех проблем и могут вывести из душевного равновесия любого. Когда пишешь код, оптимизируешь сервис и каждые полчаса тебя отвлекают вопросами, срочными задачами и вызовами — вернуться в работу порой очень тяжело и на это тратится время, — минут пятнадцать можно просидеть, вспоминая, откуда тебя выдернули и что вообще ты делал (В книге «Тайм-менеджмент для системных администраторов» Томаса А. Лимончелли об этом хорошо написано). В итоге прерывания формируют утверждение «Мне не дают работать».
В-третьих, привычка к рабочему процессу. Как известно, человек ко всему привыкает и то, что изначально вызывало восхищение и приносило в итоге общее удовлетворение, — становится обыденным и скучным. Когда все крутится и работает идеально, об этом знаешь только ты и максимум руководитель отдела, пользователи же принимают это за данность и не испытывают никаких поводов для гордости. Зато они замечают любую мелкую оплошность, от чего страдает как карма всего отдела, так и внутреннее состояние администратора, — против воли себя убеждаешь — «Я плохой сотрудник».
Все это касается обслуживания в целом и такова его стезя. А я в ней, потихоньку, но разуверился.
Чего же я хотел? Бо́льшего погружения в более творческую работу, уменьшения влияния со стороны по мелочам, видеть конечный результат и получать от этого удовлетворение. И все. Уставшим и отчужденным смотря на наш отдел программистов, читая хабр или смотря gif-ки на developerslife, я понял, что если я не могу получить этого на поприще админства, пора менять профессию, а так как писать код мне нравилось все больше и больше, выбор не заставил себя долго ждать.
Выбор языка для меня всегда был сплошным расстройством. На работе я писал на bash, так как писать на чем-то было нужно, да и его возможностей для системного администрирования хватает с головой. Perl — не нравился по синтаксису. Очень долго пытался приучить себя к ansi C, проработал две книги, — Unix разработка сетевых приложений (Уильям Ричард Стивенс) и Программирование для UNIX Наиболее полное руководство (Марк Дж. Рочкинд). Но так и не нашел применения приобретенным знаниям, до сих пор жалею потраченного времени. По требованиям хотелось, что бы он шел в ногу с linux, был универсальным, умел и sys (для текущих скриптов), и web (с заделом на будущее) и не вырвиглазным по синтаксису. Вокруг Python ходил очень долго, — тормозила его относительная молодость, невысокая популярность, и, не знаю почему, его название. Со временем, наблюдая за компаниями-гигантами, которые все больше используют python на production, и к моменту, когда я решил менять профессию, с языком я уже определился, хотя и выбирать было особо не из чего.
Первые полгода читал Марка Лутца, что-то пробовал писать, но знания были обрывочными и применять их на боевых серверах боялся, да и не видел выгоды в замене bash на python. Время тянулось, а моя затея нравилась мне все меньше и меньше. В итоге, убедил себя, что если не получается у меня, получится у других, — нужны курсы, в короткие сроки, с проработкой практики и чтобы была ответственность за оплаченные деньги. Так будет проще и быстрее.
Я нашел месячные курсы Python в местном институте и уговорил руководство на их необходимость, хотя к моменту оплаты, я уже был готов их сам оплатить. За месяц обучения все встало на свои места. Все накопленное до этого и вычитанное в интернете разложилось по-полочкам и стало понятным и прозрачным. Ни одна книга не заменит живого преподавания, где любая неточность или недосказанность, может быть разъяснена на месте.
Далее как по-накатанной, в течении полугода, постепенно и в свободное от работы время, переписал все скрипты и всю автоматизацию на python, написал сервер статистики для squid (python, wsgi). Уже за свои кровные, прошел курсы через вебинар по ООП и django, так как аргументировать их необходимость текущему работодателю решил даже не пытаться. Переписал все с учетом новых знаний. Далее, ради расширения кругозора, прошел еще курсы по тестированию, но оно мне не понравилось, — оставил как запасной вариант.
Следующие полгода, помимо прямых обязанностей, были потрачены на поддержку и оптимизацию написанного мной кода и на поиск работы. Рассматривал только full-time, — админить уже не мог, мечтая о новой работе и новых возможностях.
За это время прошел около десятка собеседований на позицию junior. Всего около десятка. Но везде требовался или django+frontend, либо с опытом от двух лет. Опыт на production»е отсутствует, а фронтендом заниматься у меня не было и нет до сих пор никакого желания. Что еще странно, вопросов именно по языку было не много, зато было много по теории, — ООП, паттерны, методологии scrum, agile — которых я естественно не знал. Продолжая биться головой о двери конференц-залов и выслушивая стандартную фразу «Мы вам перезвоним», я продолжал ходить по приглашениям. И в конечном итоге меня взяли backend разработчиком в закрытый проект.
На текущем месте работы я работаю уже несколько месяцев и могу подвести итоги.
В общем было потрачено полтора года. Для кого-то это много, но со всеми курсами, ночными домашними заданиями, чтением, написанием и переписыванием кода, а так же с текущими задачами в растущей компании, для меня это время пролетело незаметно.
То к чему я стремился, я конечно получил, хотя и радовался этому не долго, — чувство «У меня получилось, я стал программистом» прогорело очень быстро, примерно за неделю, и на смену ему пришли:
Трудовые будни с дикой нагрузкой. С институтских времен я так не напрягал свой мозг. Как следствие, плохой сон, размышления о коде в свободное время, когда, например, нужно отдыхать с семьей, да и общее плохое самочувствие, хотя сейчас уже вроде втянулся. То, что прошло уже столько времени, я осознал уже при написании этой статьи. Время сильно ускорилось и теперь я побаиваюсь, как бы вся жизнь так же быстро не пролетела перед глазами. Возможно пора учится отдыхать.
Борьба с прокрастинацией. У хороших системных администраторов свободного времени намного больше, чем они говорят. Благодаря чему копится много подписок, каналов на ютубе, профильные сайты, шутки-прибаутки, много знакомых в сети и интересов. Лично у меня могло до трех часов в день уходить на чтение и просмотр всего этого. От чего мне на текущей должности, за неимением времени, пришлось практически отказаться. Изначально просто читал бегло, потом читал просто заголовки, а потом и полностью отписывался. Научился не отвечать на мгновенные сообщения мессенджера за рабочим местом, дабы не отвлекаться и не терять мысли. Сейчас остался подписан на десяток только профильных сайтов.
Изначально эти сложности пытался привязать к своему возрасту и на одном из собеседований мне так и сказали, что компании не выгодно вкладывать в меня деньги и что поздновато я решил менять профессию. Но сейчас могу сказать, что дело вовсе не в этом.
Дело в самой профессии системного администратора. Работа, конечный итог которой стремится к абсолютной ле́ни, сильно расслабляет жизненные позиции и стремления, а общение с пользователями и выслушивание их недовольств, еще больше укрепляет асоциальные начала. И тут уже, кто как я, начинает задумываться о бо́льшей полезности, что приводит к поискам более гармоничной жизни, а кого все устраивает и он продолжает это нелегкое существование.
Заметил, что в последнее время очень много знакомых админов начинает готовится к перепрофилированию или уже поменяли профессию. А развитие облачных технологий и расширение влияния аутсорсинговых компаний, только усиливают эту тенденцию.
Системное администрирование потихоньку теряет свою актуальность и в недалеком будущем, вероятно, эта профессия изменится, станет горячим стартом и, возможно, стажировкой для все более новых программистов и других всенаправленных it-специалистов. Но не более.
Специальности и специализации: цифровое (компьютерное) программирование, программное обеспечение, математика, квантовая механика, математическое моделирование, физика
Требуемое образование (уровень образование, тип учебного заведения)
Наиболее перспективное – высшее профессиональное и академическое образование, получаемое в ведущих академических университетах
Специфические способности, необходимые для успешного освоения профессии:
математические способности, умение легко решать и составлять физические и математические задачи, интерес к сугубо математическим и физическим задачам и проблемам.
Профилирующие предметы школьной программы:
Математика – геометрия, алгебра. Английский язык.
Характер и содержание работы:
Написание компьютерных программ, обеспечение функционирования компьютерных систем и их техническое обслуживание
Очевидные плюсы
Высокий социальный престиж профессии, возможность реализации творческих способностей, большая степень свободы и независимости в работе, возможность работы в составе международных научных групп.
«Подводные камни», очевидные минусы
Индивидуалистический характер работы, высокая степень угрозы профессиональной деформации – трудоголизма, снижение уровня социальных контактов и связей
Возможные профессиональные заболевания: нервные расстройства, опасность сердечно-сосудистых заболеваний, ухудшение зрения и возможность заболеваний, вызванных систематической работой на компьютере, возможны заболевания опорно-двигательного аппарата, остеохондроз, гиподинамия, ишемическая болезнь сердца, другие нарушения, вызванные сидячим и малоподвижным образом жизни.
Вилка зарплаты (в рублях в среднем в месяц):
в Москве и Московской области: 40–130 тыс. рублей;
в крупных областных центрах: 30–80 тыс. рублей;
в отдалённых и сельских районах России – от 15 тыс. рублей.
Программист – главный герой современных анекдотов. Это – статистика. У меня тоже есть любимый анекдот, который также относится и к системным администраторам: «Программист/системный администратор – это такой человек, который решает твою проблему путем создания двух новых». У кого «вис» компьютер, а программы работали непривычным образом или не работали вовсе, меня поймет.
Поймет, потому что больше обращаться не к кому. Есть задача или проблема, которая связана с работой компьютера, его подключениями, то все равно придется обращаться к программисту, любите вы его или нет. Программист – это тот человек, на плечах которого держится вся информационная эпоха. Отсюда – любовь и ненависть.
Про программистов уже давно пишут книги и снимают фильмы в стиле «экшн».
В Википедии сказано, что программи́ст — профессия или увлечение человека, занимающегося разработкой программного обеспечения для программируемых устройств, которые, как правило, содержат один и более CPU . Примером таких устройств являются настольный П К , сотовый телефон , смартфон , коммуникатор , игровая приставка, сервер, суперкомпьютер, микроконтроллер, промышленный и одноразовый компьютер. По ошибке, программистом порой называют системного администратора и других специалистов ИТ. Кстати, Википедия – тоже продукт современной информационной эпохи. Это народная энциклопедия, которую составляют сами люди, по установленным ими же правилам. Такое возможно только в виртуальном пространстве, создаваемом программистами и другими специалистами IT. Достаточно зайти на Википедию и вы уже в совершенно новом мире, у которого если нет хозяев (хотя если исходить из того, что Интернет возник как один из проектов Пентагона, хозяева, может и найдутся, да только вряд ли они могут что-то сделать с этим миром, кроме как попытаться выключить), где есть только «сталкеры» – проводники, специалисты и наставники. Эта вторая реальность обретает все большую силу: только что, в 2008 году, число подключенных к Интернету компьютеров достигло 1 миллиарда, а в 2014 году их будет вдвое больше. Самое главное – кто-то же должен всю эту ораву обслуживать, писать программы, ставить операционные системы, делать апгрейды и текущие ремонты, исправлять сбои, затыкать «дыры» и ругать Билла Гейтса. Один миллиард компьютеров – это нечто! Значит, число компьютерщиков по всему миру приблизилось по численности к врачам, учителям и, самое главное, все они говорят на одном-двух языках программирования, еще более понятных по всему миру, чем древняя латынь в рецептах на микстуру от кашля.
И эта армия продолжает расти. И в их строю есть еще места.
Итак – что нужно сделать, чтобы услышать сокровенное: «You in the Army now!» – ты принят в великое братство, перед которым кольцо Саурона – как бусы индейского вождя?
Эта история началась перед Второй мировой войной, а впервые оформилась в 1948 году, когда Норберт Винер выпустил свою Библию нового времени – «Кибернетику», в которой задал вопрос: «Со страхом думаю о том времени, когда машины заменят большинство людей, которым нечего будет предложить рынку, кроме своих весьма средних способностей». Но время нашло ответ само, как только появился персональный компьютер: а программисты откуда возьмутся?
Сегодня одна из самых популярных вакансий – программист.
Стандартный путь в программисты – факультет программирования любого вуза технического или естественнонаучного направления. Где есть математика, там обязательно будет и математика прикладная, а сегодня это – программирование, программирование и еще раз программирование. Существует уже более 8,5 тысяч языков программирования, благодаря которым происходит общение человека с машиной, реализуется их взаимодействие. Вся остальная карьера – компромисс между реализацией идей, населяющих голову самого программиста, и потребностями различных фирм в их работе.
Программисты бывают разные – в зависимости от специализации наиболее популярными являются специальности: программист 1С; веб-разработчик; Delphi программист; программист.NET; Java-программист; программист C++; программист микроконтроллеров.
На заре становления компьютерной индустрии было актуально деление на прикладных и системных программистов/администраторов. Если первые создали софт для конечных пользователей, то системные программисты создавали софт-инструменты для поддержки прикладных программистов: операционные системы, компиляторы, стандартные библиотеки и драйверы. Поэтому системный программист/администратор – это следующий шаг в развитии собственно программиста.
В отечественной практике сложилась собственная фигура системного администратора – ведущий программист. Ведущий программист, как правило, имеет высокий уровень подготовки в области разработки программного обеспечения и имеет опыт разработки программных продуктов с применением большого спектра технологий. Его главной задачей является координация проектов с первой стадии разработки и до завершающих стадий тестирования и технической поддержки и непосредственное участие в разработке в качестве квалифицированного специалиста.
Главными качествами ведущего программиста являются умение мыслить системно, в перспективе, видеть все стадии разработки проекта, отслеживать тенденции современного рынка и уметь применять самые перспективные и современные технологии в своих проектах, если э это потребуется. Ведущий программист, как правило, также решает некоторые административные вопросы, среди которых – управление персоналом, согласование договоров, составление технических заданий, улаживание споров с заказчиками. Он часто служит промежуточным звеном между программистами и менеджментом, а также исполняет обязанности менеджера в том, что касается распределения работ и соблюдения сроков их исполнения, соответствия выделенным бюджетам. Он обычно является техническим советником для менеджмента и участвует в проработке всех технических вопросов при подготовке договоров, проведении переговоров или разработке требований.
Практическая деятельность программиста обеспечивается рядом инструментов. среди которых ведущую роль играют интегрированная среда разработки, ярким примером которой является изучаемая в вузах России среда Delphi; инструменты разработки софта; инструменты разработки драйверов; компилятор, который транслирует исходный код, понятный программисту, в машинный язык, понятный CPU или виртуальной машине, или интерпретатор, который исполняет непосредственно код программы; отладчик, участвующий в поиске ошибок, детально анализируя разнообразные переменные, стэк, память, регистры процессора, слово состояния CPU; компоновщик, который собирает компилированные файлы и статические библиотеки в исполняемый файл, структура которого понятна операционной системе.
Международный язык общения программистов – английский.
Всякая социальная группа быстро формирует свой собственный профессиональный язык, свой профессиональный жаргон. Как правило, такой язык служит важной социальной задаче – быстрому распознаванию в общении «своих» и «чужих». Этот язык частично придумывается, частично заимствуется. В среде программистов давно сложился такой квази-язык, который быстро развивается, претерпевает изменения, слова которого заимствуются из профессиональной английской терминологии, образуются из сокращений и аббревиатур, заимствуются из жаргонов других социальных групп.
Чайник, юзер, макрушник, тачка, астматик, насильник, движок, блин, крыса/мышка, реаниматор, мама, тормозить, сносить, висеть, глюк, железо, леталка, стрелялка, бродилка, пентюх, писюк, сидюк, кликать, коннектить – это только небольшая часть словарного запаса рядового программиста. Как и всякое живое образование, компьютерный язык находит себе образцы, примеры и образы во всем. Говорить со всеми на таком языке вовсе не обязательно. Но владеть им, умело ввернув в разговоре пару соответствующих выражений, и понимать его – обязательно для любого, кто профессионально работает в компьютерной среде, чтобы быть «своим» среди «своих».
Особое место в среде программистов занимают хакеры. Изначально это слово было частью английского студенческого сленга, обозначая простое, но грубое решение какой-либо проблемы; чертовски хитрую проделку студентов (обычно автора и называли хакером). До того времени слова «hack» и «hacker» использовались по разным поводам безотносительно к компьютерной технике вообще. Среди компьютерщиков первоначально появилось жаргонное слово «to hack» (рубить, кромсать). Оно означало внесение изменений «на лету» в чужую программу (предполагалось, что имеются исходные тексты программы). Отглагольное существительное «hack» означало результаты такого изменения. Весьма полезным и достойным делом считалось не просто сообщить автору программы об ошибке, а сразу предложить ему такой хак, который её исправляет. Слово «хакер» изначально произошло именно отсюда.
Хакер сегодня – это человек, фактически живущий в киберпространстве, воспринимающий Интернет, компьютерные программы как среду обитания. Именно с этой точки зрения воспринимаются ими действия некоторых фирм как нарушение принципов свободы, а сами объекты киберпространства – как предметы своего быта и обустройства. Они приспосабливают эти предметы под свои нужды, пробуют их на «качество», ведут борьбу против нежелательных, с их точки зрения, объектов и программ, иногда согласуя между собой те или иные действия, вплоть до атак неугодных сайтов, взлома программ и кодов. Такова личностная установка хакера. Существует и определенным образом организованная хакерская деятельность, в виде атак на сайты, их взлома и т.д., которая, как предполагается, может быть заказной. Однако реальных подтверждений появления такого заказов с чьей-либо стороны пока в открытой печати нет. Только предположения.
Существует компьютерная преступность , когда знания и умения в области программирования используются для незаконного обогащения – путем перекачки денежных средств с одних электронных счетов на другие, «перехвата» кредитных карточек, незаконного обналичивания и т.д. А также в террористических целях, препятствуя работе правоохранительных органов или государственных структур. Это – опасные явления, с которыми ведут борьбу государства и международные правоохранительные организации (Интерпол).
После окончания вуза возможны несколько вариантов – самые энергичные, сумевшие зарекомендовать себя еще со студенческой скамьи могут рассчитывать на многое – на приглашение в состав интересной международной команды, работающей над каким-либо проектом. Для ряда стран специальность программиста – как пропуск в свою жизнь. Например, Канада ежегодно выделяет квоты на въезд для специалистов по программированию. Есть крупные международные компании – разработчики программ; благодаря всемирной паутине их сотрудники могут жить и работать на всех континентах, даже не встречаясь друг с другом.
Кому не улыбнулось такое интернациональное счастье, есть занятие и дома: обслуживание нескольких фирм или клиентов. Как правило, такой программист устраивается на работу в какую-либо фирму, не обременяющую его дисциплиной и работой. Но теперь у него есть постоянное место – после этого обычно не составляет труда обслуживать еще несколько организаций. У него много работы – достаточно рутинной и монотонной: как правило, надо перестанавливать глючащие программы, поддерживать работу внутренних сетей и связи с Интернетом, обновлять защиту рабочих мест, вести первичный инструктаж работников по вопросам компьютерной организации фирмы, писать программы или делать их подгонку для бухгалтерии, секретариата, менять железо и перестанавливать софт. Другие работают, создавая и поддерживая сайты. Кто-то находит место, на котором занимается пополнением электронных ресурсов – сканируя книги и иллюстративный материал.
Даже работая в группе над решением какой-то большой общей задачи, программист всегда достаточно лично свободен и не связан формальными требованиями дисциплины.
Жить, не завися от других и быть самостоятельным в суждениях – не об этом ли мечтали римские стоики, говоря о счастье человека? Тем более, под рукой у каждого из компьютерщиков – программистов, системных администраторов, специалистов по работе с Интернет-пространством – целый виртуальный мир, в котором есть место для всех и каждого.
А быть владельцем целого мира – разве этого мало?
Немного философской получилась статья. Да и не так часто я пишу вообще для этого блога. К сожалению.
Сентябрь 2016 года оказался ярким для меня на события. Сжав волю в кулак, я распрощался с работой, которой посвятил 4 последних года. И просто в ужасе понял, что это дорога в никуда.
Не знаю, кризис ли это среднего возраста (мне уже 31 год исполнился в этом году) или понимание, что для семьи нужны заделы гораздо серьезнее в материальном плане, но факт остается фактом – я порвал с работой и тем, чем занимался все эти годы. И теперь могу вам, уважаемые читатели, дать некое напутствие, чтобы вы не повторяли подобных ошибок.
Итак, как я уже написал, последние годы я работал тем, кого раньше яро высмеивал даже на своем блоге. Я работал сисадмином . Причем, должность была с «потрясающей» записью в трудовой книжке – системный инженер. И лишь спустя 4 года я только узнал, что, оказывается, это такое завуалированное название эникея в нормальных конторах. Да, именно в нормальных, потому как прошлую контору я не могу назвать таким словом.
Начало 2013 года мне надолго запомнится. У меня был выбор устроиться андроид-разработчиком, программистом 1С или же системным администратором в контору, о которой кроме матерных слов ничего хорошего сказать не могу. Победила жадность. Так как разработчиком мне везде предлагали вначале 25 тысяч (Ростов-на-Дону). Понимаю, что программист даже до года работы это всего лишь джун. Тем более, что Андроид я бросал до этого, а 1С занимался постольку, посколько. Но через год бы перспективы выросли. Скилл бы рос, а с ним и уровень зарплаты. Но я пошел по пути наименьшего сопротивления, так как мне предложили 35 тыров! На руки! Белыми! И это было началом моего профессионального краха.
Офис был мелким до безобразия. Одноранговая сеть, без AD или вообще намека на LDAP хотя бы на Samba. С древними компьютерами под не менее древней XP. Один сервер видеонаблюдения, одна файловая помойка и один настроенный через одно место шлюз на 5-м Центосе…
Когда я увидел все это «хозяйство», у меня возник резонный вопрос – а за что платить то такую сумму? Ответ я получил незамедлительно – за командировки. Именно меня брали для пусконаладочных работ в командировках. На мне висели системы видеонаблюдения, сервера и коммутационное оборудование. В 2014 году мне все это и аукнулось – почти весь год я пробыл в Сочи, начиная с Олимпиады, где работал без сна и выходных два месяца, а потом безвылазно жил в условиях, в которых не всегда гастарбайтеры будут согласны находиться, в силу жадности директора конторы.
Да, я много чего узнал. Я изучил Cisco на уровне CCNA, хотел уже подниматься до CCNP, но передумал. Я узнавал много смежных технологий типа настройки радаров (да, именно РЛС) и много чего прочего. Я узнал столько о ВОЛС и всем коммутационном оборудование, что можно было смело после этого идти в телекомы работать. И вместе с тем я тупел. От однообразия, от рутины и т.д.
Я бросил этот блог. Я бросил программирование. Я свыкся с мыслью, что я просто сисадмин. Получаю зарплату ну и ладно.
Но с каждым годом тревога все росла. Сначала на новый 2015 год мне пришла первая весточка с Суперджоба о том, что как бы нужно в 30 лет уже переквалифицироваться с сисадминов. Потом все было по нарастающей.
Я смотрел дайджесты технологий и буквально офигевал от того, что произошло за эти 4 года. Xamarin, в iOS разработка пошла на SWIFT, в вебе появились многие новые фрэймворки, Rust появился и тут же сделал вызов C++. Да и последний претерпел изменения – вышел C++ 14, который стал больше java напоминать.
Изменений была куча. И все это прошло мимо. И когда в контору устроилось еще два админа, гораздо старше меня, тогда я понял, какая это тупиковая ветвь. И уволился.
Причем, абсолютно ни капли не жалея. И вам, уважаемые читатели, просто могу на своем опыте передать то, с чем столкнулся я после увольнения.
Итак, на руках трудовая книжка с такой «отвратительной» записью, два резюме – на программиста и сисадмина. Вот вводные данные. И тут понеслось.
Ради интереса начал рассылать резюме сисадмина, пока попутно читал книги по тому, что упустил за прошедшее время. Результат был, мягко говоря, не ахти. Нет, меня много куда приглашали. Я проходил часто собеседования. Но за спиной часто слышал: «Боже, мужчине 31 год и он пришел сисадмином!». Но была еще куча мест, где резюме летело в шредер с диагнозом – «Дед. Старый сильно для этой должности». Причем, сеть гетерогенная в таких организациях. Есть и виртуальные сервера на ESXi, крутятся веб-сервера на Apache и Nginx под Debian и Centos 7, куча АТС на Asterisk, сложные леса AD, MS SQL Server 2014, Exchange, скрипты в совершенстве на bash и powershell, Cisco, Huawei, Microtik – всего не учесть. И опыт для всего этого от 3 до 6 лет. Но не старше 30 лет для соискателя. Так что кто тешит себя скиллами, часто против вас будет идти главный документ – паспорт. Так по крайней мере в Ростове обстоит дело.
С программистом был вообще цирк – часто видели, что работал сисадмином последние 4 года и тут же резюме в шредер или начинали истерить. В городе больше 100 франчей 1С, но почти у всех них как эталон нормы набора программистом было одно – пробыть стажером. И пофиг, сколько у тебя стаж – нет вообще опыта или 10 лет за плечами. И тут вставал вопрос о зарплате, которой во франчах традиционно нет. Насчет других программистов тут кроме веба и мизерной доли C# опять же для ASP.Net ничего нет. И даже C#, который я знал версии 4.0, уже применялся 6.0. Вновь учить даже его. Хотя на блоге я вел вебинары по нему (вернее, по 5.0). Но с ним проще было, однако в коллектив не проходил опять же возрасту. Сидят молодые парни до 25 лет и к ним дядя 31 летний заваливает…
Тем не менее, я вообще не сваливался в пессимизм. Искал много чего смежного и за неделю после увольнения нашел работу java разработчиком. Да, зарплата серая. Но в трудовой снова засияет запись «инженер-программист». И одно я знаю наверняка – больше никогда уже в сисадминство ни ногой. Да и возраст не позволит).
Надеюсь, что эта статья с такими стонами была кому-то интересна и полезна. Самое главное, всегда развивайтесь. Мир не стоит на месте. А IT – и подавно. Иначе рискуете остаться за бортом, как некогда я.
Часто приходится сталкиваться, что люди не понимают разницы между системным администратором и программистом и всех IT-шников называют программистами. Некоторые обижаются, а кто-то уже привык. Но я хочу попытаться разъяснить эту разницу, чтобы было понятно большинству, прочитавшим эту статью:)
Если в организации есть IT отдел (инженерно-технический), а проще говоря компьютерный, то в нем есть следующее разделение:
— основная задача контролировать работу серверов и серверного ПО, администрирование телефонных станций, политика безопасности — в общем это мозги всей компьютерной структуры организации.
Специалисты (или инженеры) технической поддержки — это ребята, которые занимаются обычными компьютерами пользователей, настраивают их, помогают пользователям решать текущие проблемы, ловят вирусы на компьютерах пользователей и т.д. и т.п. По сути, Специалист — это будущий системный администратор, т.к. системный администратор так же может выполнять работу специалиста. Специалист может выполнять работу системного администратора, если ему разрешит руководство — к системному администратору у руководства больше доверия:)
Программисты — это ребята, которые постоянно пишут различные тексты на непонятном для обычного пользователя языке. Эти тексты потом превращаются в полезные программы, утилиты, или просто модули (дополнительные опции) к полезным программам.
Чтобы проще было понимать приведу пример на различие системного администратора от программиста. Программист написал программу, которую в последствии назвал, ну например Windows, а системный администратор ее настроил (используя функции, которые предусмотрел в своей программе программист) для пользователя.
Системный vs Прикладной программист?
Ну для студента 2 курса, без опыта, слишком уж категорично откинули WEB.
Так или иначе все основные системы выходят в web.
Смотрите сами, выбирайте сами, но не рубите с горяча.
- Вконтакте
1. Вакансий больше всего под веб программирование и разного рода финансовый софт. Java, C#, Python, PHP.
2. Зарплата примерно одинаково у всех. Лучше всех тем кто работает удалено на заграничных заказчиков.
3. Стабильность зависит от компании. Например в jetbrains и в google всегда будут вакансии. У мелких компаний соответственно работы меньше и такая компания может внезапно разорится.
4. Google будет всегда. Машинное обучение будет всегда. Игры тоже будут всегда.
5. Муторность. Gamedev — делаешь игровой AI, графику и т.п. В основном геометрия(произведение векторов, матриц и т.п. Google и т.п. web — работаешь со строками, с базами данных, с машинным обучением и т.п.
Сменить сложную область на web всегда можно, т.к. там учить особо нечего. Тем более после написания игрового сервера на котором можно играть с ботами. Разница пожалуй в том что если быть хорошим веб или Java, C# программистом, то можно в молодом возрасте стать senior или нач. отдела с соответствующей зарплатой(более 100 тыс. руб. мес.). В игрострое стать senior C++ не так то просто, а начальником отдела тем более.
В целом к игрострою я отношусь прохладно, поскольку от игр нет практической пользы, зато бывают случаи когда из за игр человек портит свое здоровье. На мой взгляд лучше делать медицинские тренажеры и оборудование, промышленных роботов, автопилоты для гражданских машин и самолетов, т.к. если работать на военных то может появиться запрет на выезд, а хорошие программисты часто уезжают, потому что за границей лучше.
Ликбез по современной классификации It-профессий

Вне работы редко пишу на тему IT, всё больше про литературу, но тут что-то захотелось. Почему — до сих пор иногда, бывает, читаешь романы про будущее — и там «программист» где-нибудь на космической станции. Или, того хуже, «компьютерщик». Ладно, если «сисадмин». Всё ещё хуже, если пытаются писать киберпанк и сыпать айтишными словечками. Там непременно — «хакер». Как правило, перечисленными терминами у большинства опыт знакомства с IT-специализациями и должностями исчерпывается. Потому — очень кратко, и, конечно, далеко не всё.
Нынешний спектр IT-специальностей включает в себя:
I Системных администраторов и инженеров IT
Грубо обобщим, сисадминами и айтишниками часто называют всех, работающих в It-депаратаменте, но не пишущими программы (см. ниже «программисты»), хотя это не совсем верно.
Во-первых, это «эникеи» — низшее звено, специалисты техподдержки, т.е. люди, непосредственно контактирующие с пользователями и решающие вопросы по их рабочим местам. Чаще всего в конторе, не заморачивающейся за ITIL-принципы, на них навешана ещё куча обязанностей, про которые вы не знаете, наивно полагая, что в свободное от вас время они режутся в танчики (хотя — бывает и такое). Вообще, ТП (техподдержка) обычно делится на внутреннюю и клиентскую (если компания продаёт какой-то продукт или услугу), и специалисты разделены на 1-2-3 линии. Первая линия часто даже не инженеры, а операторы-диспетчера, принимающие и классифицирующие заявки, вторая — специалисты с более высоким опытом и т.д.
Чуть выше рангом стоят серверные системные администраторы — это те, кто администрируют сервера (блин, если вы не знаете, что такое сервер — не пишите, пожалуйста, ничего, кроме романтического фэнтези). Они (грубо) подразделяются на администраторов Windows-систем («форточники», виндузятники) и администраторов Linux-(Unix)систем (линуксоиды). Если я сейчас углублюсь в их описание для тех, кто не знает — то это будет не одна страница текста. Коротко — Linux круче (а FreeBSD — «фряха» — ещё круче), используется в бизнесе крупнее среднего, таких инженеров чуть меньше (хотя сейчас в крупных городах уже почти сравнялось), им платят, как правило, побольше. Хотя есть и «форточники», которые умеют строить и админить такие сложные системы на базе MS, что заткнут за пояс по опыту любого линуксоида.
Я вам раскрою один секрет. «Сисадмином» в приличной организации называться уже немодно и даже постыдно. Да и «айтишником» тоже не особо. Моя нынешняя должность, к примеру, называется «ведущий инженер IT-инфраструктуры«. По сути, здесь совмещены функции администратора всех серверных платформ + знания коммутационных систем. Чтобы сервера и рабочие места на предприятии работали, и всем была доступна сеть (Интернет либо корпоративная), всё это ещё нужно как-то связать. Для этих целей служат железки, называемые роутерами, маршрутизаторами, коммутаторами, хабами, свичами (если не разбираетесь, что из этого синонимы, но очень хотите использовать, давайте вы просто будете эти словечки равномерно распределять по тексту произведения — всё равно читатели такие же). Самые популярные, и, как считает, надёжные производители — Cisco (вообще, читается как «сиско», но в России принято из цензурных соображений произносить «циска», «киска», «кошка» отсюда варианты сетевых инженеров, их обслуживающих — цисководы или кошкодавы, реже — сетевики — просьба не путать со специалистами сетевого маркетинга).
Ещё в крупных компаниях бывают редкие касты админы VMWare (систем виртуализации и контейнеризации — серверов-«матрёшек», хотя часто это тоже реализовано разновидностями Linux — докер, кубер, проксмокс, опенВЗ, все дела), отдельно-вынесенные по функциям администраторы СУБД (по задачам и функционалу — от обезьянок-операторов до «Data Scientists» — учёных, строющих модели данных), инженеры (и диспетчера-операторы) ServiceDesk (см. выше — систем техподдержки — приёма и обработки заявок), инженеры систем IP-телефонии и поддержки CallCentre («телефонисты«) и т.д.
UPD — тут напомнили, есть же ещё специалисты по hardware и оргтехнике — «техники-ремонтники» и т.п.
Над всеми ними реют различные начальники групп, руководители IT-отдела и IT-директора (которых от этого не менее часто тоже просят поменять картридж).
Об отдельных (самых прибыльных на сегодняшний день) разновидностях напишу чуть ниже, после
II Программистов
Это вовсе не те, кто «тыжпрограммист» и «поменяй нам картридж», а вовсе даже наоборот. Это те, кто пишут код на языках программирования, т.е. либо создают (в отстойных учреждениях — в одиночку, в приличных — в команде) какой-то новый программный продукт (мобильное, десктопное, веб-приложение, программно-аппаратную среду), либо занимаются модернизацией/поддержкой/»допиливанием» старого.
Если в команде, то структура примерно
— джуниор (юниор) дев — разработчиков, либо «младших инженеров-программистов» — описывают классы, функции, в общем, фрагменты кода внутри большой команды, часто — вчерашние студенты, знающие 1-2 языка
— миддл (средний) дев — он же рядовой инженер, либо «старший», занимающийся более крупными задачами внутри проекта / большой частью проекта, как правило, уже с опытом, со знанием разных продуктов, паттернов программирования и т.д.
— сеньор — ведущий, руководитель проекта разработки, крупных задач. Оно же бывает TeamLead — тимлид, лидер команды, наставник молодняка — тьютор.
Да, если вас раздражает количество иностранных и хипсторских слов в наименованиях профессий, то рекомендую изобрести машину времени и вернуться лет так на 40-60 в прошлое, изменить ход истории СССР так, чтобы лидирующее место в IT и мировых языках программирования заняли языки на базе русского. Я тоже человек, в целом, вполне патриотичных взглядов, но использовать в разговоре сленг/термины на базе английского — это вынужденная мера, потому что а) адекватных по оттеночному значению вариантов на русском часто просто нет б) это устоявшиеся термины, используемые в профессиональной речи везде в) из-за среды общения ты неизбежно переходишь на чтение или даже разговор на английском во время работы. Как-то так.
Отдельно есть такая категория как FullStack-разработчик — т.е разработчик-универсал, также разбирающийся в аппаратной среде, чаще это касается веб-приложений (а сейчас уже практически всё десктопное — веб). Часто водятся в «молодых перспективных стартапах». Отдельное есть каста программистов микроконтроллерного оборудования, пишущих на питоне, жаве и древних хтонических C и Ассемблере программное обеспечение для датчиков, систем мониторинга, модных сейчас «систем умного дома», «интернета вещей», «индустрии 4.0» и т.д.
Если у вас на предприятии «программист» и «сисадмин» по набору обязанностей — одно и единственное лицо, а вы, типа, «молодой современный развивающийся бизнес», и у вас +100 человек штата — бегите, ваше руководство либо дико жмотливое, либо застряло в 90-х, либо и то, и другое.
III (В продолжение темы про программистов.)
При этом в организациях, занимающихся разработкой и продажей программного обеспечения, есть отдельная элитная каста инженеров — DevOps-ов — системных интеграторов, инженеров, обслуживающих разработчиков, и совмещающих обязанности как «серверного сисадмина», так и админа средств виртуализации, так и разработчика различных обвязок, систем мониторинга, оркестрации и т.д. (если интересно, уровень их зарплат в Екб на 2019 год — примерно в районе 100000 р., в Мск — в 2-2,5 раза выше, но я вам это не рассказывал). Недавно возникла отдельная подкаста NetOps-ов — инженеров-ЛВС-ников (коммутационщиков) в стане разработчиков — те управляют выдачей диапазонов сетей, связанностью маршрутов, доступностью машин на колокейшнах, провайдерами и т.д. Это у вас на предприятии одна локальная подсеть вида 192.168.1.0/24, а у них на западе, говорят, есть уже даже должность «менеджера сетей», в чьи обязанности входит только контроль и разграничение диапазонов IP-адресов внутри одного большого предприятия (на самом деле, и в компании из 500-1000 человек рабочих подсетей и диапазонов может быть больше сотни).
Давайте в этом же блоке упомяну, а то куда их ещё.
QA Engineer (инженер качества предоставления, тестировщик) — занимается тем, что проверяет качество работы программиста, ищет ошибки, баги в системах. Подразделяется на ручного и авто-тестировщика (который сам программист и пишет авто-тесты, скажем, для прогонов написанной системы на стендах под нагрузкой)
Технический писатель (техпис) — пишет/переводит инструкции, сценарии, бложики ведёт и т.д., сюда же копирайтеры.
IV Администраторы (инженеры) информационной безопасности
Специалист, занимающийся ■■■■■■■■■■■, ■■■■■■■■ и ■■■■■■■■■■■■■■■ на ■■■■■■■■■■■, чтобы всякие ■■■■■■■■ не ■■■■■■■■ информацию куда-нибудь в ■■■■■. Занимается охраной и соблюдением режима ■■■■■■■■■■■■, ■■■■■■■■■■■ ■■■■■ на предприятии, ■■■■■■■■■ ■■■■■■■■ ■■■■■. Если серьёзно, то тут примерно та же градация спектра компетенций, что и у сисадминов, с тем отличием, что сисадмин вам открывает, предоставляет сервисы (если у него и у руководства нет синдрома вахтёра, то именно это он и должен делать), а инженер информационной безопасности их вам закрывает, сыпя цитатами из ФЗ Минкомсвязи, нормативных документов ФСТЭК и приказов директора, например. Как правило, их не любят все, особенно сисадмины (если эти должностные обязанности из-за упомянутой жмотливости руководства объединены в одном человеке — тем более не любят). Есть более элитная каста аналитиков информационной безопасности, аудиторов, которые не столько запрещают, сколько говорят — «как нужно запрещать», либо «как нужно предотвращать» НСД и т.п.
Всё, я утомился, т.к. пишу этот пост поздно ночью в черновик. Дальше — коротко
V Вообще Аналитики — (продуктовые, системные и т.д.) — пишут, скажем, ТЗ программистам, переводя язык заказчика в язык разработчика. Либо пишут предписания, проводят аудит и т.д. Качественные системные аналитики получают поболее всех вышеперечисленных.
VI SEO-специалист — специалист поисковой оптимизации, интернет-маркетолог, ещё бывают какие-нибудь асессоры и т.п.
VII дизайнеры всякие (думал написать здесь про разновидности специализаций в GameDev, но уже устал, да и всё это уже есть).
Где-то ещё водятся архитекторы информационных систем, инженеры-проектировщики ЦОД-ов, Data Scientist-ы, инженеры в области машинного обучения и т.д
Кого-то точно забыл, потому что про что-то и сам не слышал ввиду туннельного мышления.
Напоследок — одно правило (прим. — статья изначально для писателей). Не знаешь как назвать персонажа — называй «инженер». 90% из этих профессий — инженерные, и, даже если ошибёшься, это куда менее обидно, чем назвать сисадмина «программистом», а FullStack-программиста — «компьютырщиком». Вообще, забудь слово «компьютырщик», либо применяй его, только чтобы унизить собеседника.