Инженер или программист что выбрать
Время. Инженер или программист?
Моя микробиблиотека про программирование вообще. В этот же список стоит добавить «Джоэль о программировании» Джоэля Спольски. Очень хорошая книжка)
Будь как я: инженер-программист ))))
В плане книг начать с ОБЯЗАТЕЛЬНО C ЭТОГО:
1. «Код», Чарльз Петцольд
2. «Как программировать на C++», два Дейтела
Не слушай никого. Достань эти книги как хочешь и начинай с них. Вторая очень популярна и постоянно переиздается, так что можно будет купить в бумажном виде. Гарантирую, затрешь книги до дыр. Особенно последнюю. Она стоит того, чтобы купить. Я с ней весь универ прошел и года три на работе непрерывно пользовался. Всех программеров в нее тыкал носом, как котят. Начитаются Керниги и Ритчи или Кнута, а сути не знают. Вообще не представляют как программа живет. Затем можно читать что угодно, но с этих двух книг нужно начинать по любому. И времени тебе такой подход сэкономит просто офигенное количество.
Еще вещь «Совершенный код». Но это перед тем, как пойдешь на работу. Чтобы не быдлокодить.
Когда за активностью твоей клавиатуры следит начальник.
Коллега на работе выполнил свое задание, но активность клавиатуры должна быть) в помощь кодерам пришли инженеры, ржали всем офисом.
Житие инженера
На одной из машин в настройках нашел пасхалку.
Человек-все
Не спрашивайте, почему я в свое время ушел от этого работодателя. Насчитал 5-6 профессий. Кто больше?
Про облака.
Есть старый, 15 лет назад сделанный механизм расчета. Считает медленно, с их слов, но они это воспринимают как данность.
Я говорю «Что-то тут неправильно, както медленно. Может пересмотреть уже подходы? Есть же новые инструменты, есть математика, в конце концов. «
Мне говорят «Да забей. Там знаешь какие люди делали? Это на века сделано, и лучше не бывает. «
Мне говорят «Ну давай, надо посчитать вот это. «
Они выкатывают кучу требований, описывают вычисления итд. Делаю за пару дней, тестим, 30 секунд.
Вышел в курилку. Вышел один из инженеров. Стоим курим.
И он мне выдает «Да оно у нас и на втором шаге уже часы считало, и это год говорят делали. А последний никто и не пробовал даже. А что такое облака, про которые ты говорил?»
Вот так. «Что такое облака?» 21 век на дворе. Часы считало 15 лет. Прогресс. И дождь пошел.
Полезные блоги для IT-специалистов
На окончательное осознание того, что содержимое хабра не отражает реального положения дел в IT-индустрии и всесторонне вредит профессиональному развитию, ушло около пяти лет.
Объяснять причины, приводить доказательства не буду: долго и выглядеть будет неубедительно для тех, кто пока не дошел до этой мысли самостоятельно. Однако перечислю ряд источников, которые, на мой взгляд, крайне полезны для ознакомления IT-специалистам любого профиля.
Также укажу примеры постов, чтобы сразу можно было открыть и начать читать.
6) Статьи Игоря Ашманова
Дополняйте в комментариях, у кого тоже есть интересный материал
Проект «Недовольный пылесос»
Что-то меня потянуло на пылесосную тематику.
Где-то 6 лет назад мною был приобретен робот-пылесос Румба. Сначала он не сильно прижился: на съемной квартире ему мешала пылесосить не самая удачная, но единственно возможная планировка мебели. Высланный в Калининград к родителям тоже стоял голодный и пылился, потому что мама мыла пол быстрее, чем тот пачкался. Окончательно пылесос осел со мной в Дании, освоился, резво пылесосил большую комнату и кухню и провожал меня на работу, за что был назван Бобиком.
А потом, в один из долгих зимних датских вечеров мне пришла в голову идея научить Бобика разговаривать. Идея простая: пылесос едет, натыкается на препятствие и говорит недовольным голосом «понаставили тут». Или «позасирали тут», если натыкается на грязь.
Идея простая, но реализация оказалась далеко не такой тривиальной. Дальше всякие технические детали.
Собственно, имелось следующее:
1. Сам пылесос Румба 500й серии и спецификация интерфейса, через который можно было общаться с пылесосом (через серийный порт)
2. Миникомпы (ардуино, распберри пай и свифт), с которых планировалось запускать программу для контроля сенсоров и проигрывания аудио записей
3. Куча проводов, макетная плата и прочие радости юного инженера
1. Динамик для проигрывания аудио записей. И как выяснилось позже, набор для создания аудио усилителя, потому что по умолчанию динамик слишком тихий, чтобы перекрыть 70 Дб пылесоса
2. Всевозможные трансформаторы напряжения, чтобы запитать миникомпьютер от батарейки пылесоса и чтобы настроить соединение через серийный порт.
Неделя была потрачена на поиск и закупку трансформаторов со всевозможными емкостями, проводов, резисторов, динамика и прочего барахла.
Первым делом надо было разобраться с аудио усилителем. В интернете нашелся прекрасный сайт с не менее прекрасными схемами. Простите за шакальную картинку
Заработало почти с первого раза, хоть и выглядело довольно убого. Тем не менее до 80 Дб звук дотянулся, что было уже вполне достаточно. На фотке как раз убогий вариант.
Окей, дальше надо было заставить распберри общаться с Румбой через серийный порт. Тут пришлось немножко попаять (шикарно слово, я считаю) регулятор напряжения. Ну и конечно разобраться, где вход-выход-земля. Это я осилила далеко не сразу, но в итоге что-то получилось.
Научилась двигать пылесос по прямой путем отправки специальной команды через Румба-интерфейс. И всё, казалось бы, шло хорошо, пока я не попыталась получить данные с сенсоров (грязевого и бампера, чтобы как раз отследить, когда надо начинать разговаривать). Румба начинал включать моторы, кататься вперед-назад, дергаться, двигать щеткой, затихать на 20 минут и начинать всё по новому. Заткнуть несчастного Бобика можно было только вынув батарейку, что задалбывало.
На этом потерялось довольно много времени, и в итоге было принято решение заставить распберри общаться не с пылесосом, а с ардуино (хорошо иметь больше двух миникомпьютеров). И тут это зараза и попалась. Ардуино слал распберри сообщение в стиле «Привет, лох, чо как там?», а распберри предлагал.. ВВЕСТИ ПАРОЛЬ. Всего-то надо было поменять настройки. Заработало. Счастье.
Кодеры vs инженеры: как не остаться «кодировщиком» на всю жизнь?
В эпоху популярного тренда «войтивайти» с новой силой вспыхнула дискуссия о том, кто сегодня приходит в индустрию — «кодеры» или инженеры, кто из них на самом деле нужен компаниям и и за кем будущее в профессии. Как не остаться «кодером» на всю жизнь и совершить качественный скачок в инженеры-программисты, рассказали основатели курса cron.is Юрий Петранков, Илья Яскевич и Игорь Куценко.
— В чём разница между «кодером» и инженером-программистом?
— Инженер-программист — это инноватор, который с помощью технологий не только создаёт что-то новое, но и постоянно ищет способы, упрощающие решение однотипных задач. Закончив программировать модуль, он уже думает о том, как его ускорить, сделать оптимальнее, безопаснее и пр. Основатели Google создали поисковик, потому что знали, что смогут «заставить» его работать быстрее и лучше, чем у конкурентов (Yahoo и Lycos).
А вот кодировщик не создаёт ничего, он пользуется готовыми решениями, день за днём выполняя одно и то же. Такие люди тоже приносят пользу, но их бич — невысокая зарплата по сравнению с первыми и отсутствие карьерного роста. Пример такого специалиста — PHP-программист, создающий только интернет-магазины. Это не значит, что PHP — плохой язык (профессионалы создают нём поразительные вещи), просто так сложилось, что это лучший пример кодера, пишущего примерно одинаковый функционал на одном и том же движке.
— Как понять, к какому «классу» разработчиков принадлежишь?
— Каждый человек сам выбирает, что ему ближе. У инженера-программиста нет стандартного графика 8 часов в день, потому что он не знает счёта времени, и ему это нравится.
А вот кодировщику ближе стабильная, неспешная и предсказуемая работа. Алгоритм такой:
Взгляните на следующий код:
Инженер-программист очень настороженно отнесётся к данному коду, так как он изобилует подводными камнями и, с большой долей вероятности, в итоге приведёт к проблемам с дальнейшим развитием продукта.
С точки зрения трёх базовых принципов ООП всё верно: код декомпозирован на объекты.
С точки зрения популярных паттернов проектирования код использует паттерн «одиночка» (singleton).
Но личный опыт, полученный на болезненных ошибках, или целенаправленное изучение шаблонов проектирования GRASP подскажут:
Все эти ошибки очень сильно затрудняют переиспользование данных классов и усложняют отладку.
Чтобы видеть все эти проблемы в коде, вам необходимы определённые фундаментальные знания.
— Что имеется в виду под «фундаментальными знаниями»?
— Прежде чем ответить на этот вопрос, нужно обрисовать сегодняшнюю ситуацию в ИT. Люди из других специальностей стремятся попасть в индустрию, и некоторым это даже удаётся. Но такие «специалисты» спустя годы остаются на том же уровне и с той же зарплатой, с которой начинали. Причина застоя кроется в нежелании изучать информатику.
Для большинства из нас информатика ассоциируется со школой, набором текста в Microsoft Word и рисованием в Paint. Но слово «информатика» переводится на английский язык как Сomputer Science. Именно Computer Science необходимо знать для «качественного скачка» или, другими словами, превращения кодера в инженера-программиста.
В действительности информатика затрагивает очень широкий спектр тем: теорию алгоритмов, структуры данных, архитектуру компьютера, анализ производительности, компьютерную безопасность и криптографию, компьютерные сети, базы данных и многое другое.
Заметьте, что в списке перечисленных дисциплин нет популярных фреймворков ASP.NET MVC, AngularJS, Laravel и других. Все они функционируют, опираясь на фундаментальные основы информатики.
— Что конкретно, по-вашему, нужно знать, чтобы стать хорошим разработчиком?
— В ИT существует два типа знаний: узкоспециализированные (по определённому языку, технологиям или фреймворку) и фундаментальные (по разделам информатики).
Как правило, курсы — это ориентированная на один продукт программа, дающая знания по определённому языку. Вы получаете знания по функционалу какого-то одного фреймворка, но при этом понятия не имеете о том, как он создан, какие механизмы заложены в его основу. А фундаментальные разделы информатики, которые мы преподаём студентам, показывают, как работают фреймворки, базы данных, поисковые алгоритмы, как оценивать и оптимизировать работу программ.
Без знаний фундаментальных разделов информатики построить карьеру в ИТ сложно. Некоторые аспекты этой области освещает университет, но не все студенты стремятся постичь информатику, отмахиваясь, что им это не пригодится.
Зная, что лежит в основе работы языков и систем, вы можете легко «переключаться» с одних технологий и фреймворков на другие.
Фундаментальные знания не устаревают, а время, потраченное на их освоение, даёт дивиденды.
— Почему многие, с вашей точки зрения, пренебрегают этими знаниями?
— Проблема в том, что не каждому под силу самостоятельно разобраться в их тонкостях. Большинство учебников и статей преподносят информацию в недоступной для понимания форме. Причины этого разные: слишком сложный математический аппарат, нежелание автора расписывать детали тех или иных алгоритмов, подходов или структур данных, незнание автором всех технических деталей.
Знания, необходимые для целостной картины фундаментальной информатики, фрагментированы и содержат ошибки. Поэтому могут понадобиться годы, чтобы разобраться во всех нюансах информатики. А таких временных ресурсов на информатику, как правило, ни у кого нет.
— К слову, один из ваших преподавателей два года проработал в Google. Какое там соотношение инженеров и кодеров?
— Стоит начать с того, о ком именно идет речь: в Google есть несколько разновидностей работников:
Среди первой категории кодеров не может быть в принципе, поскольку все интервью направлены именно на то, чтобы отобрать исключительно инженеров-программистов. Google — это продуктовая компания, ей нужны люди, которые создают что-то новое, а не делают каждый день одно и то же.
Что касается трёх оставшихся групп, сказать сложно, в их наборе участвуют посредники и только финальное интервью проходит непосредственно с представителями Google. Уровень знаний у этих инженеров порой меньше, чем у «гуглеров», но всё равно — они должны быть инженерами.
Каждый работник Google — это высокомотивированный специалист, которому не сидится на месте: ему хочется разрабатывать, разбираться, учиться. Учиться без конца — это суть человека, без которой нельзя попасть в компании такого уровня. Некоторые инженеры Google сидят на работе по 10, порой 16 часов, потому что это им действительно интересно. И для этого «весёлого» времяпрепровождения компания создаёт всевозможные условия. При этом, никто не заставляет вас работать более 8 часов — люди делают это исключительно по своему желанию.
— Можно ли ожидать, что «кодеров» заменят роботы? А инженеры-программисты рискуют?
— Стоит обратиться к исследованию оксфордского университета: профессия инженер-программиста выглядит достаточно перспективной и «безопасной». В исследовании Оксфорда за 2013 год было установлено, что инженеры-программисты имеют 8-процентный шанс на автоматизацию в ближайшие 20 лет. И, конечно же, инженеры-программисты не единственные, кто рискует. В исследовании прогнозируется, что 47% всей занятости в США, скорее всего, будет автоматизировано к 2030 году. Другими словами, учиться на инженера-программиста нужно и как можно скорее.
«Мы учим не языкам программирования, мы учим программировать»
— Создавая курс, вы имели в виду, что программист не может самостоятельно «переквалифицироваться» из кодеров в инженеры? Или пытались облегчить ему задачу?
— Каждый человек, желающий совершить скачок из кодера в инженеры-программисты, должен ответить на вопрос: знает ли он, где искать нужную для этого информацию и сколько времени ему понадобится? Если ответ «да» — начинайте прямо сейчас. Но рассчитывайте, что путь будет не из лёгких.
Понимание подводных камней этого процесса привело нас к созданию курса Cronis, в котором мы объясняем все тонкости фундаментальной информатики, убрав из материалы всю «воду» и не вовлекая в объяснения избыточную, ненужную сложность.
Создавая курс, мы ставили перед собой две цели: максимально понятное объяснение самых сложных вещей и решение сложнейших задач, встречающихся на интервью в лучшие компании мира.
Наша идея очень проста: убрать те мучения, через которые в своё время прошли мы и через которые проходят тысячи кодировщиков и студентов. Сэкономить годы бессмысленных попыток понять книги, для прочтения которых необходимо иметь серьёзнейший математических аппарат.
— Речь идёт о теории?
— Мы говорим не только о теории. За время обучения человек проработает несколько тысяч строк кода, оттачивая свои способности на задачах, которые спрашивают на интервью такие топовые компании мира, как Microsoft, Google, Amazon и Facebook.
— Учите ли вы конкретным языкам программирования и фреймворкам?
— Нет, мы учим программировать. В курсе намеренно не затрагиваются языки программирования и фреймворки, поскольку для этих целей существует сотни других тренингов.
— Кто ваши преподаватели?
— Люди с реальным 10-летним опытом, через который пропущены все знания, которые мы даём. Каждый преподаватель является практикующим программистом, поэтому знания курса актуальны и применимы в реальных проектах. Наши преподаватели работали как у нас, так и за рубежом: в финансовых и полупроводниковых отраслях, космической промышленности, имеется двухлетний опыт работы на Google.
— Хватит ли на усвоение всех этих материалов двух месяцев обучения?
— Это два месяца интенсива. Время обучения оптимально: как показывает опыт, это лучшее соотношение с точки зрения эффективность\скорость — скучать точно не придется.
— Можно ли понять фундаментальные темы информатики без высшего образования в сфере Computer Science?
— Действительно, может показаться, что без высшего образования программиста понять фундаментальные темы информатики невозможно. Это неверно — на самом деле всё, что необходимо иметь человеку, это инженерный склад ума, а также целеустремленность, усидчивость и желание развиваться.
— Для кого всё-таки предназначен курс и кто ваши сегодняшние слушатели?
— Курс отлично подходит для студентов, программистов с опытом, кодировщиков, желающих стать инженерами-программистами, а также людям, тем или иным образом связанным с ИT.
Стоит заметить, что если человек никогда не программировал, ему мы помочь не сможем. Нужно иметь базовые знания о любом языке программирования, а также уметь писать «ифы» и циклы.
У нас учатся парни и девушки от 17 до 35 лет. Студенты, люди с 6- и 10-летним опытом разработки. Среди наших клиентов, например, присутствуют сотрудники компании Wargaming — являясь специалистами одной из самых престижных компаний, они растут и совершенствуются.
За время существования курса никто из наших студентов не бросил обучение. Это говорит о том, что наш формат нравится и нужен людям, желающим развиваться.
— Приведите конкретные примеры того, в чём ваш курс отличается от других.
— За созданием курса стоит 10-летний опыт и обобщение всех знаний, которые получил каждый из нас за время своей карьеры. Было разобрано, переработано и исправлено множество информации. В большинстве своих объяснений мы апеллируем к вещам, которые разъясняли сами их создатели.
Например, тема рекурсии в большинстве статей затрагивается довольно поверхностно. Мы же обращаемся к тому, кто первым ввёл рекурсию в программирование — Эдсгеру Дейкстре.
На логичный вопрос, «зачем уделять столько времени рекурсии?», можно ответить так: алгоритмы сортировок, поиска, деревьев и графов в большинстве своём являются рекурсивными. То же самое касается алгоритмов парсинга (разбора) компилятором языков программирования. В конечном счёте, большинство вещей существующих в информатике, сводится к рекурсии. Также, чтобы инженер мог оценить скорость работы рекурсивной программы и потребляемую ей память, необходимо знать, как работает рекурсия на самом «низком» уровне.
Тоже самое касается деревьев, графов и других структур данных. 99% людей не напишут «с головы» удаление узла из АВЛ-дерева. В курсе эта тема даётся так, что вы никогда не забудете, как это сделать. Потому что мы рассказываем ту суть, которую вкладывали авторы в эту процедуру. А зная суть, вы всегда сможете написать данный код без «зазубривания».
— Делитесь ли вы полезными материалами бесплатно?
Время от времени мы проводим бесплатные открытые лекции, чтобы заинтересованный человек мог оценить, подходит ли ему наш курс.
Эта публикация подготовлена в партнёрстве с обучающим центром Cron.is.
Хотите сообщить важную новость? Пишите в Телеграм-бот.
А также подписывайтесь на наш Телеграм-канал.
😱 Разработчик прошел 3 собеседования в Facebook, Amazon и Google. И рассказал про самую кошмарную часть — behavioral interview. Читайте, как это было.
Стоит ли иди в программирование, будучи инженером?
Оценить 1 комментарий
В программировании ты точно также рано или поздно уткнешься в потолок. Будь то финансовый, будь то моральный, как сейчас. Айтишников сейчас в скором времени будет как грязи. И зп в 100 тебе просто так никто не даст. Не верь сказкам.
Сайт, на котором начинающие программисты делятся впечатлениями об том, как их обидели?
Как можно при такой востребованности ИТ и таком дефиците мало-мальски квалифицированных спецов так нагибаться?
Не знаю как у вас, сэр, а у меня и моих друзей имеется очередь из клиентов.
Длиной примерно в пару месяцев.
Да, Kubernetes устанавливаю
😉
Но знания уже должны быть, совсем нулевого человека не возьмёт никто.
Не стесняйтесь отправлять резюме на вакансии, даже если не под все из указанных требований подходите. Я пришёл на работу не зная трёх фреймворков, которые были указаны в требованиях, а уже через несколько дней нормально писал код под них, хоть и не очень быстро, переодически сверяясь с документацией и разбираясь, что откуда берётся.
В общем, устроиться вполне реально, если вы каждый день занимаетесь самообразованием и готовы, что на поиски может уйти два-три месяца или даже побольше.
Инженер VS Программист. Или куда уходят инженеры
За последнюю неделю на Хабре появилось как минимум три поста о том, как люди разного возраста, пола и полученной специальности становились программистами. Успешными программистами. Эти истории отвечали на вопрос «как», но почти упускали вопрос «почему».
Сейчас я еще работаю инженером, причем по моей вузовской специальности «Радиофизика и электроника», и по профилю кафедры Антенн и Радиопередающих устройств. Но уже активно шагаю в сторону переквалификации.
Почему же я, инженер с 14 годами стажа, решил перейти в программисты?
Востребованость
В России сейчас инженер СВЧ не нужен. Новых разработок очень мало. Интересных проектов почти нет. Есть ВПК, где еще что-то разрабатывают, но там сидят деды, которые не дадут дергаться сильно. Секретный допуск и документация для передатчиков начинается от «совершенно секретно», что лишит вас радости путешествия за пределы России и повесит дамоклов меч службы Гостайны у вас над головой. Разработки только из элементов, доступных в перечне импортозамещения. Новые технологии? Слышали, но не можем. Ах, да, слышать и читать вы их не будете, интернет на работе запрещен.*
*данная информация является личным опытом автора поста
В частном секторе все еще хуже и печальнее. Если считать, что СВЧ в нынешнем его понимании начинается от 10ГГц и не включает сотовую связь, то мест, где вы найдете работу для разработчика, да еще по специальности, да еще за деньги — почти нет.
Оплата труда
Из причины выше можно увидеть, как работают законы рынка. Спрос на работу превышает предложения, поэтому зарплаты идут вниз. Оно и раньше инженер получал меньше рабочего.
Сейчас кажется, что всё осталось также. Средняя зарплата инженера-разработчика в Петербурге — 40 000 рублей. Данная цифра соответствует действительности. Причем разброс небольшой — от 23 до 60. Не нравится – иди работай в другом месте, на твое место есть очередь. Хотя в последнее время ситуация стала меняться еще в том, что на 30 000 руб приходят свеженькие выпускники вузов.
Поэтому я могу точно сказать – уровень образования технических вузов стремительно пикирует вниз. Потому что те, кто понимает на этапе обучения, что высоких зарплат не будет, сразу уходят в программисты.
Одна среда
Опять логический переход. Отличия инженера от программиста у нас небольшое. Системный подход, аналитическое мышление, умения решать поставленные задачи. Даже привычка делать код с костылями выросла из волшебного свойства синей изоленты. Более того, инженер-разработчик в нынешнее время — это в любом случае программист, потому что от микроконтроллеров, обработки сигналов и прочей алгоритмов никуда не деться. От инженера в программисты — всего пара шагов.
Перспективы
Опять выигрывает программист. Инженеры нужны все меньше и меньше. Все более узконаправленные и узконаправленные. В программировании все иначе, это как пучок технологий, где тренды меняются каждый год. «Нам нужно больше программистов». Этот рефрен можно услышать даже из чайника, по WiFi. Я боюсь, что станет, когда инженеров станет слишком мало, но радуюсь, что до этого не доживу. Пока что еще слишком много инженеров и слишком мало программистов.
Вывод напрашивается один. Идти в программисты. Почему я не сделал этого раньше? Одна единственная причина – я создаю устройства. Готовые, технологичные и полезные в пределах целого мира. За небольшую зарплату, с переработками и мыслями по ночам о том, как сделать лучше. Я могу подержать их в руках, я могу вспомнить, как они выглядели, каков был их нелегкий путь от идей к воплощению. Но, наверняка они будут продолжать создаваться и без меня…