Ищем способы официально заняться разработкой ПО, не теряя при этом текущей зарплаты (> 160 тысяч долларов). Есть несколько путей, которые я могу рассмотреть, исходя из своего опыта и интересов.
Я занимаюсь проектированием аппаратного обеспечения (в основном, печатных плат, бытовой электроники, некоторых аналоговых схем на уровне интегральных схем) в течение примерно 20 лет, в то же время постоянно занимаясь программным обеспечением в качестве хобби в фоновом режиме и постоянно возясь с инструментами, используемыми для самого инженерного проектирования. Я всегда единственный в группе, кого больше интересуют инструменты, чем результаты работы, и я легко потрачу месяц на написание какого-нибудь сценария, чтобы уменьшить часть скуки, которая в противном случае могла бы занять всего несколько дней для какой-то конкретной задачи.
На самом деле я написал материал для работы, в том числе настоящие прошивки, выпущенные в полевых условиях, некоторые калибровочные материалы на заводе, некоторые внутренние инструменты. Я участвовал в нескольких обзорах кода, нескольких agile-спринтах и могу ориентироваться в git. Так что это не похоже на то, что я играю гитарного героя с кодом; Я думаю, что у меня лучшие навыки кодирования, чем у других EE, для которых это просто хобби. У меня сейчас лежит книга по архитектуре, и несколько лет назад я влюбился в SICP, что и пробудило во мне интерес к функциональному программированию.
Я увлекаюсь системами CAD/EDA, инструментами для рисования, программами для черчения, Spice и/или цифровыми симуляторами, схемами, макетами, библиотеками, SolidWorks, пользовательскими интерфейсами и т. д., и у меня есть длинный список функций, которые я хотел бы увидеть. реализовано в следующем величайшем и новейшем программном обеспечении для проектирования. Я также недавно занимался интересной работой со встроенными инерциальными измерительными приборами и некоторыми навигационными элементами, калибровкой датчиков, разработкой моделей на основе измеренных данных и т. д. У меня есть несколько других мимолетных интересов, но если бы они были мне так интересны, я бы что-то уже сделал по этому поводу.
В настоящее время моим предпочтительным языком является Clojure, хотя при необходимости я могу делать некоторые законные вещи в Matlab, Python, C/C++ и Verilog. В основном я работаю в Windows, но при необходимости могу перемещаться в Linux довольно прилично как пользователь, а не как администратор.
Итак, я вижу следующие варианты:
Я не верю, что у меня есть опыт, необходимый для поддержания моего стажа/зарплаты в SW, но роль дизайнера HW действительно становится утомительной.
У вас на самом деле есть огромное преимущество с определенной точки зрения. Что вам нужно сделать, так это извлечь из этого выгоду. Вы думаете о том, чтобы устроиться на работу, и это неправильный подход, если вы хотите сохранить поток доходов.
Ваше преимущество — глубокое знание оборудования, процессов и инфраструктуры, которые с ним связаны. Вы также получаете удовольствие от оптимизации.
Найдите нишу (а их много) и напишите программное обеспечение, чтобы покрыть ее, и займитесь собственным бизнесом, продолжая работать.
Я едва умею программировать, мне даже не нравится программировать, я профессиональный инженер. Но я зарабатываю на программном обеспечении больше денег, чем большинство разработчиков в этой стране, именно потому, что я нахожу ниши, для которых у них нет знаний, и я сохраняю право собственности на продукты, а не работаю на кого-то другого. Вы находитесь в лучшем положении, чем я, вы действительно можете кодировать и вам не придется платить людям за рефакторинг вашей работы, как только она станет проверенным продуктом, как это делаю я.
Любой специалист с целостным взглядом на свою область может найти нишу для обслуживания, вам не нужно всемирно известное невероятно сложное программное обеспечение и миллион клиентов. Лишь немногие дают вам по паре тысяч каждый месяц за то, что вы сделали в свободное время.
Не вижу ни малейшей проблемы.
По сути, вы просто говорите
«Я хочу работать с программным обеспечением. Но я ненавижу облачные технологии и социальные сети. Мне нравятся инструменты / САПР / датчики».
я люблю/ненавижу то же, что и ты; существует целый мир программного обеспечения, которое необходимо разработать.
Пока не проблема.
Вас встретят с распростертыми объятиями весь мир программного обеспечения, который также ненавидит облака/социальные сети/приложения.
Как было указано миллионы раз, программное обеспечение это:
Вы ничего не делаете, когда вы неопытны/непроверены, тогда вы делаете безумие денег, когда вы опытны/проверены. Будьте готовы сделать ноль на некоторое время.
Очень сложно «вломиться». Когда-то, хорошо, если вы «в деле», спрос на вас сходит с ума. Но. Очень сложно «вломиться».
Имейте в виду, что программирование похоже на игру на гитаре. Вы не можете научиться быть Джо Уолшем. Верно? И это почти всегда то, где вы начинаете рано. Большинство «настоящих» программистов просто «имеют это», когда им 13, 14 или около того (например, гитаристы) и набираются опыта оттуда. Отличная математика также является непременным условием. Это не игра для начинающих.
Огромная проблема с программным обеспечением заключается в том, что каждый может стать программистом-любителем. Итак, до смешного легко взять Unity и выбить «игру». Это сильно отличается от того, чтобы поглотить все богатство информатики, алгоритмической структуры, взаимодействий в реальном времени, параллелизма и математики программирования и иметь возможность делать с этим такие вещи, как, знаете, «управлять самолетом».
Удачи. Если это сработает, вы скоро будете получать достойную зарплату ;-)
Кстати, ваша позиция почти скромная! Все отчаянно нуждаются в программистах, которые также могут делать аппаратное/встроенное оборудование и т. д. Верно? Я имею в виду, что я не могу подключить чертову релейную плату. Ты действительно кажешься золотым. Я только что просмотрел дюжину контрактов, которые вы могли выбрать на сайте SO вакансий. Наслаждаться!!
ОТЛИЧНЫЙ , ВЫДАЮЩИЙСЯ "в" для вас, чтобы создать часть платного программного обеспечения, которое продается где-нибудь.
Это сразу полностью решает две проблемы : (i) это лучшая визитная карточка. В вашем положении наниматели ХОТЯТ ВЕРИТЬ, что вы компетентный программист как таковой благодаря вашему опыту. Коммерческий продукт достигает этого, и
И (ii) сама по себе работа над такой вещью ускорит работу на обычном языке, скажем, с # в порядке или (я прикусываю язык) вариантах Java. (Кстати, идея «не любить» питона, положить его в коробку и уплыть :))
Какое место? В наше время очень много " магазинов активов " - отличная вещь. Например, пример магазина активов Unity (связанный с игровым проектированием) продает много прекрасных программ, которые, одним словом, сделали разработчика практически лучшим в своей области с нуля.
Помните, что на самом деле вам не нужно продавать так много. Просто упомяните, что это, ммм, "успешно" и приукрасьте цифры. Никто не заботится.
Вы не можете проиграть с условно-бесплатным подходом
Создать такой небольшой программный продукт «в нерабочее время» — то есть сидеть в прачечной по несколько часов каждую ночь, как когда авторы пишут свою первую книгу, еще имея работу (с вашей верной женой, стиснувшей зубы и присматривающей за дети и т. д.) - довольно сложно, это "игра для молодых парней". Легче сделать это, когда тебе около 20, чем 40, так что приготовься к вызову. (Наоборот, конечно, ваш обширный опыт в области инженерии чрезвычайно в вашу пользу.)
Удачи
Сониксглад
Толстяк