Привычно ли работать разработчиком, не имея возможности знать важные вещи в проекте? [закрыто]

Немного предыстории:

Я один из двух разработчиков программного обеспечения в моей компании, и в настоящее время мы работаем с C++ на встроенных машинах. Мой коллега давно работает с C, и теперь мой начальник хочет улучшить разработку с помощью C++. После стажировки, посвященной созданию веб-приложений, мой начальник попросил меня поработать с этими машинами, ничего не зная о самой машине.

Когда меня предположили, мой босс знал, что я делал что-то на C++ только в школе и что я не делал ничего более личного, но что я хотел узнать больше о том, как разрабатывать программное обеспечение для встроенных машин.

Источник моих проблем:

Итак, как я уже сказал, я начал с чистого листа, разрабатывая программное обеспечение для машин, которые я никогда раньше не видел. У них очень сложная программа, построенная очень сложным образом, в которой иногда отсутствуют возможности ООП и C ++ (поскольку раньше все было построено на C (чего я не знаю, и мой босс знал это)) и у меня много трудностей понять, как это работает, почему что-то было построено определенным образом, какая идея стоит за чем-то и т.д. и т.п.

Я не могу спросить Старшего, так как он делал что-то на C и не программирует эту новую машину (или, во всяком случае, он делает это на C и не хочет изучать C++), и в любом случае он слишком занят.

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

Собственно проблема :

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

Проблема в том, что я не могу знать, что делает и ведет себя функция, потому что поведение функции закрыто в *.a файлах. Когда я спросил через одно из редких писем, которые я мог отправить, ответ был «название функции и параметры должны прояснить ситуацию, в любом случае у вас есть много документации».

На самом деле ... в этой документации не хватает информации (она заполнена примерно на 30%, чтобы понять идею). И в любом случае это объясняет в целом, что делает функция, предполагая, что я знаю, как работает ОС, какова цель определенной идеи или других случайных вещей, которые я не мог себе представить.

У меня на уме много вопросов, один из которых - уйти из этой компании и заняться веб-разработкой (что меня действительно заинтересовало), но прежде чем приступить к странным идеям, я просто хочу спросить:

Привычно ли работать разработчиком, не имея возможности знать важные вещи в проекте?

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

Здесь мы предпочитаем вопросы с практическими ответами, так чего же вы пытаетесь достичь? Если случайный человек в Интернете скажет да или нет на это, я сомневаюсь, что это что-то решит для вас.
Я действительно не знаю, принято ли скрывать такое количество вещей. И я не могу спросить лучше. Как бы вы спросили..? Я старался изо всех сил спрашивать, но у меня не так много времени здесь на работе, и я чувствую себя очень напряженным, извините...
«У них очень сложная программа, построенная очень сложным образом, в которой иногда отсутствуют возможности ООП и C ++ (поскольку раньше все было построено на C» — такой вопрос о технической ситуации может лучше подойти для Stackexchange для программистов. И вы можете хочу посмотреть, как встроенное программирование выполняется на C++ (и C) в целом.
Да, я не знал, какой Stackexchange мне выбрать, но это больше связано с рабочим местом, чем с техническими проблемами, и в любом случае я думал, что в этом сообществе много программистов из-за StackOverflow, извините, если это неправильное место, чтобы задать такой вопрос.
@MarkWuji Какой сайт зависит от вашего вопроса. Если вы хотите знать, как программировать, когда у вас нет полной картины системы, то это, вероятно, принадлежит Программистам. Если вы хотите узнать, как поднять этот вопрос перед вашим руководителем, это более уместно здесь. Проблема в том, что вы не указываете, что вы хотите сделать здесь. «Распространено ли это» — это просто вопрос «да/нет», ответ на который будет зависеть от отрасли, сектора и личных предпочтений.
Ну, я все равно получил ответ, который мне был нужен, так что спасибо; но у меня не всегда есть время, чтобы все было кристально ясно, знаете ли, я потратил почти 1 час, чтобы правильно задать вопрос, и в любом случае ваши комментарии не добавляют никакой конструктивной критики, например, «в следующий раз напишите« что следует я делаю?' вопрос ^^ ", если мы хотим быть точным. Кроме того, английский не мой родной язык, и я не использую его каждый день.
У меня такое ощущение, что настоящая проблема заключается в вашем боссе, который либо а) невежествен; или б) использовать вас в качестве эксперимента, так как вы, очевидно, знаете C++/ООП. Теперь вы, возможно, обнаружили, что это не очень хорошо работает для встроенной среды. Решение состоит в том, чтобы объяснить это боссу, если это возможно.

Ответы (3)

Совершенно нормально, когда разработчика просят творить чудеса в такой ситуации — в плохой компании .

Я работал в кооперативах, где владелец компании ожидал, что я превзойду Билла Гейтса и произведу революцию в его бизнесе. Я сделал все, что мог, но, будем честными, все вышло не совсем так, как они надеялись.

Проблема в том, что многие менеджеры не разбираются в разработке программного обеспечения .

Они не понимают, насколько один язык может отличаться от другого. Они не понимают, что одни области разработки не очень тесно связаны с другими (например, веб-разработка против машинного программирования). Они не понимают сроков разработки сложного программного пакета, последствий изменения масштаба проекта — даже незначительного — и т. д.

Это проблемы, с которыми вы будете постоянно сталкиваться в ходе своей карьеры. Вам нужно будет научиться сообщать о своих опасениях, оценивать сроки доставки (хорошее правило: взять время, которое, по вашему мнению, потребуется, и умножить на 3), а также узнать, когда наступает время GTFO.

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

На этом этапе вы можете стать более громким, высказать свои опасения и объяснить, каковы ваши собственные планы и сроки выполнения их требований.

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

Я также хотел бы обратиться к вашему комментарию в адрес Килиси:

я не собираюсь изучать С++ дома или что-то в этом роде

Как разработчик, вы должны будете постоянно повышать свои знания в течение своей карьеры. Только очень плохой разработчик застаивается.

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

В конечном счете, если вы хотите заниматься веб-разработкой, вам следует искать новую работу.

Что касается комментария, который я просто хотел объяснить, это не значит, что я действительно не хочу учиться дома, я действительно делаю это, конечно! Но я не хочу этого делать, потому что в моей компании от меня требуют невозможного (потому что мне будет казаться, что я поработаю дома). В остальном вы поняли суть!
@MarkWuji - есть так много разных аспектов разработки. Если вы не хотите сосредотачиваться на разработке машин, вам следует поискать новую работу, прежде чем вас «привязывают» к званию разработчика C++. Ищите работу в веб-разработке, пока ваш опыт в этой области еще недавний/актуальный. Через год или два может быть очень сложно получить работу веб-разработчика, если все, что вы делали в это время, — это C++. Мне было трудно переходить после 3 лет бэкенд-разработки, потому что компании не верили, что я в курсе последних технологий.

Не принято давать новичкам в отрасли такие задачи, если только они не считаются способными. Кажется, что вас забросили на самое дно (что довольно часто).

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

На первом собеседовании вице-президент и президент сказали мне, что меня должны были подвергнуть некоторому тестированию, чтобы сделать первый подход к программе. Этого никогда не было; случилось то, что мой босс сказал мне делать что-то понемногу. Но теперь он решил, что "хватит, и я могу начать делать что-то серьезное", но я не собираюсь изучать C++ дома или что-то в этом роде. Так что я чувствую, что попал в нечто большее, чем я!

Помимо других ответов. Ожидается, что разработчики будут использовать репозитории для хранения своего кода. Даже если они покидают компанию, они должны оставить источник компании, которая заплатила за их работу. Я считаю, что восстановление исходного кода будет полезно не только для вас, но и для компании, которая может потерять это ноу-хау, если о нем забудут. Однажды им может понадобиться изменить одну функцию в файле .a, и никто не сможет ее изменить.

Я предполагаю, что этот код был от вашей собственной компании. Бывают случаи, когда исходный код недоступен. Это может включать:

  1. Соглашение о неразглашении или другие договорные причины
  2. Проблемы безопасности или национальной безопасности. Особенно, если вы работаете в военных или охранных фирмах.
  3. Сотрудники, уничтожающие все следы или их код. (не только непрофессионально, но и преступно).
  4. Фрилансеры отказываются выпускать код, если им не платят.
  5. Иногда менеджеры могут быть обеспокоены тем, что вы кодируете не для интерфейса, а для реализации. Если реализация функции изменится, она перестанет работать.

При кодировании по сравнению с кодом других компаний эта ситуация довольно распространена и неизбежно усложняет ситуацию. Хороший код обычно не требует слишком много объяснений, но хороший код не является нормой, а исходный код полезен для отладки, когда вы не знаете, что происходит. Удачи.

Архитектор был частью компании до недавнего времени как внешняя компания. Итак, вы говорите мне, что это обычное дело; ну ладно :) но и тяжелее, особенно в моем положении!
Но, насколько я понял, они наняли архитектора, а не часть работы. Обычно это означает, что его/ее код должен быть доступен для вашей компании, хотя это зависит от политики компании, контракта и национального законодательства. Стоит проверить сохранение этого кода от потери. Если вы обнаружите ошибку в их функциях, как вы собираетесь ее решить?
Я могу добавить, что на самом деле есть некоторые ошибки. Но спасибо за совет, я спрошу у своего менеджера