Какие навыки вы ожидаете и оцените в младшем инженере программного обеспечения? [закрыто]

64

Недавно я закончил магистратуру в области разработки программного обеспечения, и я собираюсь начать свою профессиональную карьеру через несколько недель. Моя роль будет в качестве младшего разработчика для компании, которая разрабатывает программное обеспечение с использованием Java и связанных с ними технологий (в том числе Spring и Hibernate). Честно говоря, я очень рад тому, что грядет, особенно потому, что я хочу развивать свою карьеру в качестве разработчика Java. Я также очень заинтересован в получении опыта в этой области. Кроме того, это будет мой первый опыт работы в качестве профессионального разработчика, поэтому я действительно хочу сделать все возможное с самого начала.

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

Bartzilla
источник
13
Замечательный вопрос, красноречиво заданный.
Адам Кроссленд
2
Найдите наркотик / занятие для шлюза, когда вещи в реальных условиях работы не работают так, как вы себе представляете, но убедитесь, что его эффект не распространяется на утро.
Работа
Внимание к деталям - нет ничего важнее.
Orbling
1
Так как ты JSWE. Будьте компетентны в тех языках, которые, как вы сказали, вы были компетентны. Нет ничего более раздражающего в том, чтобы нанять человека, который говорит, что знает язык, но выучил его только в одном классе. Пример: люди, которые перечисляют C / C ++ в своем резюме, но не могут использовать ни того, ни другого (не дай бог, не могут ни того, ни другого!)
aqua
Что случилось с мечтой о создании видеоигры? Вы "серьезно хотите развить свою карьеру в качестве разработчика Java"? шучу, каждому свое :)
cambraca

Ответы:

50

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

  • Слушай больше, чем говоришь. Учитесь на том, что говорят другие люди.
  • Быть скромным. Не бойтесь делиться своими идеями, но не думайте, что вы правы, а все остальные неправы. Если вы видите что-то, что считаете неправильным, спросите об этом, не делайте заявлений об этом.
  • Продолжай учиться. Основа вашего образования (должна быть) велика, но вы только начали изучать профессию. Учись на практике. Я не думаю, что вы действительно можете учиться, если вы не практикуете то, что вы изучаете.
  • Клиент редко знает, чего он хочет, пока не увидит. Привыкайте к изменению ваших требований. Принять стиль разработки (если это разрешено), который позволяет быстро получить отзывы клиентов.
  • Найдите людей, которые хорошо умеют работать с клиентами, и попросите их наставить вас в том, как развивать отношения с ними.
  • Написать проверенный, надежный код. Сделать это не цель; сделать это правильно Если ты хорош в этом, скорость придет со временем.
  • Прилагать усилия. Не ждите, когда вас попросят что-то сделать; искать или просить, чтобы сделать.
  • Признайте свои ошибки или ошибки своей команды. Не бросайте членов вашей команды под автобус перед клиентом, но будьте честны, когда у вас есть проблемы с кодом.
  • Вы можете думать, что ваши товарищи по команде хотят, чтобы вы были блестящим программистом. Это было бы здорово, но твои товарищи по команде действительно хотят, чтобы ты был компетентным, а не придурком. Если вы собираетесь быть придурком, вам лучше быть великолепным.
tvanfosson
источник
3
+1 за «Клиент редко знает, чего он хочет, пока не увидит ...»
FrustratedWithFormsDesigner
1
+1 за «Продолжай учиться». Это, наверное, самая важная вещь, которую я бы искал у программиста младшего уровня
Рэйчел
+ для "Сделать это - не цель; сделать это правильно - это" Убедиться, что ваш код не только работает, но и тщательно протестирован, очень важно. Кроме того, чтобы сделать это правильно, другой разработчик может посмотреть на ваш код, понять его и прочитать комментарии, а затем взять на себя поддержку упомянутого кода.
Джереми
61

Вот краткий список с моей головы:

  • Выполнить (закончить то, что вы начинаете)
  • Честность (скажите мне, если вы застряли)
  • Любопытство (узнайте лучшие способы сделать вещи)
  • Открытость (как критике, так и идеям, которые не принадлежат вам)
  • Щедрость (поделитесь тем, что вы узнали; обучите следующее поколение)
Алекс Фейнман
источник
1
Я согласен со всеми перечисленными качествами. Если бы меня попросили наставить такого младшего программиста, я был бы рад сделать это, и это сделало бы мой рабочий день намного более приятным.
Адам Кроссленд
3
Я думаю, что этот список в значительной степени подводит итог, единственное, что я мог бы добавить, это общение. Я видел, как многие многообещающие молодые разработчики остались позади, потому что они просто не хотели общаться с членами своей команды. Одно только кодирование в наши дни не помогает, вам нужно поговорить с пользователями, членами команды и принять участие. Кроме того, научитесь хорошо писать, потому что вы будете делать больше этого, чем думали.
Nodey The Node Guy
14
+1 Честность: Учимся говорить: «Я этого не понимаю». - сначала для себя, а затем для ваших коллег - это действительно важно. Это открывает двери для общения и обучения. Я видел слишком много программистов, которые позволяли своему эго мешать расширению своего разума. Я работаю в этой отрасли почти 4 десятилетия и каждый день сталкиваюсь с тем, чего не понимаю. Поэтому я гуглю, читаю, пишу тренировочный код, а затем у меня есть еще один навык, который я могу принести к столу.
Питер Роуэлл
Об непредубежденности - это особенно касается исключений из правил. Я потерпел неудачу в этом вопросе. Часть опыта - это учиться, когда нарушать правила. Иногда, заставляя все соответствовать вашим идеалам, все усложняется. OTOH, вообще не зная книги правил ...
Steve314
1
Что касается честности: то, что я говорю людям, работающим на меня, - это потратить полчаса, пытаясь выяснить это самостоятельно, а затем попросить меня о помощи или указателе. Если у меня нет немедленного ответа, постучите в течение четырех часов или около того, прежде чем дать мне понять, что это займет больше, чем это. Именно тогда мы начинаем тянуть людей с других задач, чтобы помочь. В эти дни я также советовал бы им искать, а затем спрашивать в переполнении стека и в целом в Google, в начале этого процесса. Моя цель здесь состоит в том, чтобы предотвратить мгновенный ответ прерывания, который может убить производительность людей вокруг вас.
Hack Saw
8

Две вещи: готовность учиться и способность учиться.

Дима
источник
4

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

Хорошие технические знания - это здорово, но вы должны показать, как вы примените эти знания.

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

Питер Лори
источник
4

Мотивация. Вы знаете, как мотивировать себя? Знаете ли вы, какая тактика может работать лучше, чем другие? Речь идет о самосознании, которое некоторые люди могут ожидать, что вы узнаете из всего образования, которое вы получили, чтобы выяснить это на стороне.

Базовые навыки тестирования и отладки. Вы знаете, что такое юнит-тест? Знаете ли вы несколько способов отладки проблемы? Дело не в том, чтобы точно знать, что делать в среде, а в том, чтобы понять, какими могут быть самые базовые тесты и какие стратегии иметь при рассмотрении проблемы.

Навыки коммуникации. Насколько вы точны с языком? Насколько хорошо вы можете перейти от технического к нетехническому? Конечно, это то, что нужно развивать, но это то, на что нужно обратить внимание, и в некоторых случаях спасите кого-то, кто может оказаться в беде, не понимая последствий того, что они утверждают. Насколько хорошо вы ладите с людьми? Не то чтобы это было строгим требованием, но если вы можете иметь хорошие отношения с коллегами по работе, это может сделать некоторые задания немного проще в выполнении. Честность и порядочность также входят в эту группу навыков, так как обычно могут возникнуть вопросы о том, насколько хорошо вы говорите, что имеете в виду, и имеете в виду то, что говорите. "Офисное помещение" Есть много примеров плохого общения, и хотя работа вымышленная, возможно, было много сцен, которые были действительно близки к реальности для некоторых людей с точки зрения работы в офисе.

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

JB King
источник
1
+1: я бы хотел добавить честности в раздел «Навыки общения». Если вы совершенно незнакомы с чем-либо или если у вас возникли какие-либо проблемы, то если вы заранее сообщите старшему коллеге или руководителю группы, это поможет избежать более серьезных проблем в будущем.
oosterwal
2
Подождите ... "Офисное помещение" является вымышленным ???
БП
3

Для меня как для младшего разработчика без какой-либо степени моя готовность усердно работать и совершенствоваться очень помогла в моей карьере. Кроме того, я заметил, что мои начальники ценили способность справляться с некоторой критикой (положительной или нет), а также способность следить за этим.

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

Zsub
источник
Да. Принимать критику - значит задавать много дополнительных вопросов, чтобы «критиковать» было удобнее. Спросите, что еще вы можете изменить, чтобы сделать лучше. Покажите следующий пример с той же проблемой - вы сделали лучше на этот раз? Вы улучшаете? Когда всем действительно становится комфортно с конструктивной критикой, начинается самое интересное. Просто помните, что ваши деловые люди не могут так думать;)
Майкл Даррант
3

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

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

Уэс Бейкер
источник
++ Хороший вопрос, Уэс, хотя я должен задаться вопросом. Если в эти дни я спрашиваю людей, читали ли они то-то и то-то, ответ обычно - читать?
Майк Данлавей
2

Отличные ответы всем. Я бы только добавил, из моего ограниченного опыта полета - вы знаете, что они называют лицензией пилота?

Лицензия на обучение.

Майк Данлавей
источник
2

Много хороших ответов.

Даже если я не работаю на «больших парней» и я не гуру, я добавлю свои 2 цента.

Будьте добры к людям .

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

Другими словами, попытайтесь создать «сообщество», если его нет, или стать его частью, если оно существует.

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

см
источник
2

Как и все хорошие материалы, представленные сообществом (см. Выше), я также ожидаю увидеть свидетельства некоторых сложных навыков. Не совершенство или сверхъестественные способности, но хорошее знание основ и основных понятий. Вы уже получили работу ( кстати, поздравляю !), Так что вы в значительной степени там.

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

Гипотетический идеальный младший разработчик будет знать основы таких вещей, как

  • язык.
  • I / O
  • ОО понятия как наследование
  • Объектные интерфейсы
  • доступ к базе данных (особенно в отношении того, как они это делают в магазине нового кода)
  • модель HTTP
  • CSS
  • JavaScript / JQuery
  • проектирование базы данных
  • SQL и хранимые процедуры
  • IDE, которые вы собираетесь использовать
  • соответствующие рамки (вы упоминаете весну)

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

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

Если вы сможете делать все основные вещи эффективно, у вас есть более интересные вещи, которые можно делать довольно быстро, и это, конечно, поможет продвинуть вашу карьеру.

И, повторяя сказанное выше, мир компьютеров и кода постоянно развивается. Вам нужно будет изучать новые вещи через день. Держите свой ум широко открытым и постарайтесь не забывать о том, почему вы взялись за это в первую очередь - потому что вы <3 это. В последующие годы могут быть моменты, когда это не будет в центре вашего внимания. Энтузиазм поможет вам преодолеть большинство препятствий.

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

Удачи в вашей карьере.

5arx
источник
1
+1 за ответ, в котором упоминается что-то специфическое для программирования, и поэтому его нельзя перенести в редакцию руководства по бойскауту.
PSR
Лол. Да, в этом вопросе много банальностей;)
5arx
1

(1) Открытый разум. Вы не хотите, чтобы кто-то официально использовал язык X и среду Y для каждого проекта. Вы хотите кого-то, кто может распознать, когда определенная технология не решит проблему и предложит хорошие альтернативы. Кроме того, вам нужен человек, который может бросить вызов традиционному мышлению и предложить решения, которые мотивируют бизнес. Вы можете испытать это на себе, но я обнаружил, что люди настолько привыкли к процессу, что не меняют его, но все равно жалуются на количество боли, которое он им причиняет. Обычно, когда я приезжаю, я смотрю, как это улучшить, и предлагаю решения своему менеджеру. Теперь я бы также сказал, что персонал должен быть «дипломатичным» в отношении его / ее предложений :)

(2) Хорошие навыки моделирования предметной области. Это довольно большой, который я нашел, что некоторые люди упускают из виду. В некоторых местах, где я работал, изучение бизнеса - это «загрязнение рук», и люди уклоняются от чисто технических проблем, таких как интеграция средств проверки орфографии в контроль версий и т. Д., И они не тратят много времени на улучшение бизнес. Будучи способным взглянуть на бизнес и создать из него модели (упрощения) и сообщить, что разной аудитории, будь то разговорная, визуальная (UML, SSADM или что-то еще) или что-то другое, вам нужен человек с таким менталитетом.

По этой теме я могу порекомендовать две книги: «Страстный программист» и «Прагматичный программист» . Обе книги предлагают полезные советы младшим и старшим программистам.

Пустынная планета
источник
+1 за рекомендации книги; Навыки моделирования домена OTOH требуют времени, чтобы взрослеть, поэтому я не ожидаю этого от младшего. Но стремление понять точку зрения бизнеса и решить реальные проблемы пользователей действительно важно на любом уровне.
Петер Тёрёк
Питер, через университет (по крайней мере, из того, что я видел) разработчик приобрел бы сильный набор аналитических навыков. Это действительно цель моделирования, извлечения знаний и обучения других людей. Итак, я бы сказал, что это фундаментальный навык, который я ожидал бы от большинства разработчиков. Возможность сформулировать конкретную проблему на уровне микро / марко и объяснить ее, говоря финансовому трейдеру, получить обратную связь и сообщить об этом своим партнерам по команде. Это только мой взгляд на это.
Пустынная планета
1

Взять на себя инициативу. У меня было много людей, которые вообще этого не делают и всегда ждут, чтобы мне точно сказали, что делать. Если вы видите что-то, что должно быть улучшено, сделайте это. У вас есть идея что-то улучшить? Вынеси это вперед. Нужен еще один навык, чтобы улучшить что-то? Узнать его.

Показывает, что вы заботитесь о том, что вы делаете, и хотите улучшить.

jmq
источник
1

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

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

Следующий сигнал тревоги, который я бы порекомендовал, это максимум 2-3 параметра в методе. Если вы видите методы с примерно 10 входными параметрами, скажите привет функциональному программированию на языке OO ...

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

Пожалуйста, возьмите себе копию Роберта. С Мартинс Чистый код . Прочитайте его еженедельно, возьмите его на ужин, спите с ним под подушкой, возьмите его с собой в унитаз, распечатайте несколько страниц и наклейте их на потолок, чтобы, когда вы ложитесь спать, вы могли прочитать их раньше ты киваешься;).

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

Мартин Блор
источник
1

Единственный совет, который я могу предложить - никогда не прекращать учиться. Способ, который получили эти разработчики Rockstar, заключается в том, что они занимаются изучением новых технологий и языков - это их свободное время. Хотя это здорово, если вы останетесь там на 10 лет, когда выйдете, вы будете знать только Java + Spring + Hibernate. Вот почему в свое свободное время я смотрю на платформу .NET, Python и случайный код C ++, чтобы оставаться активным. Как человек, который работает над MS в течение секунды, время может быть драгоценным, и его нужно тратить с умом.

Woot4Moo
источник
1

Возможность использования Google. В самом деле.

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

Мой совет юниору софт. Инженеры должны сделать ваше должное усердие в решении проблем. Используйте google, wikipedia или stackoverflow старательно и методично, когда вы ничего не знаете.

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

В других организациях, где люди всегда злы друг к другу, вам, возможно, придется потратить несколько дней самостоятельно (задокументировав все, что вы сделали и везде, где вы исследовали), прежде чем обращаться за помощью. В таких компаниях поможет документирование того, что вы сделали, чтобы вы могли показать им, что «вы сделали это в Google», потому что это будет первая реплика, которую они вам бросят.

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

luis.espinal
источник
1
  • Страсть к работе

  • Готов узнать больше, больше и больше ..

  • честность

  • консистенция

Джигар Джоши
источник
1

Хорошие ответы там, если вы будете следовать всему тому, что люди говорят здесь, я уверен, что кто-то будет хорош в том, что он / она делает,

Просто хочу подчеркнуть несколько моментов.

  • Будьте скромны, не бойтесь высказывать свое мнение, но как только мнение будет разделено, не держитесь за него, будьте готовы учиться у других.
  • Формируйте отношения с членами вашей команды, людьми настолько, насколько мы хотим работать с умными и хорошо зарекомендовавшими себя программистами, нам по-прежнему нужны люди, с которыми мы можем поговорить, и здоровые отношения с вами, членами команды, очень помогут вашей карьере.
  • Будьте активны, не ждите, когда вам дадут работу, найдите работу, предложите новые идеи для окружающей среды, даже если они не будут приняты, это повысит вашу ценность для компании.
  • Поделитесь с другими тем, что вы узнали, это повысит уровень вашего понимания, повысит вашу ценность для компании и для сообщества.
  • Завершите то, что вы начали, обязательство - это отличное качество.
  • Оставайтесь счастливыми и не разочаровывайтесь, когда дела идут не так, как запланировано, будут взлеты и падения, но держитесь там

Всего наилучшего в вашей работе

Брайан Пол
источник
1

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

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

Захари К
источник
-3
  • Сильная неприязнь к Java и C ++.
  • Основное понимание внутренних компонентов операционной системы, алгоритмов и структур данных.
  • Отличное владение Си и хотя бы один язык сценариев.
  • Рабочие знания одного основного VCS (Mercurial, Subversion или Git).
  • Умение умело работать в командной строке.
  • Неприязнь к Windows и случайное домашнее использование производных от Unix ОС, таких как Linux, BSD или Solaris, для разработки или общего использования.
Мэтт Джойнер
источник
Я не думаю, что сильная неприязнь к Java / C # / C ++ важна так же, как понимание того, что мир не начинается и не заканчивается ими. У Java есть свои применения, но также и у Ruby, PHP, Erlang, Lisp и т. Д.
Zachary K
Сколько времени нужно, чтобы развить рабочие знания основного VCS?
Андрей М
@ Эндрю М: Это может занять несколько недель, чтобы освоить множество инструментов, окружающих VCS. Различия, ветки, исправления, слияния. Тогда есть работа вокруг ограничений, или чрезмерных осложнений каждой VCS.
Мэтт Джоунер
@Matt: Понятно, спасибо. Так каков наилучший способ сделать это самостоятельно? Будет ли достаточно просто использовать его для своих любимых проектов?
Андрей М
2
Ваши первые и последние пункты имеют мало общего с умением разрабатывать или изучать (основные вещи, которые вам нужны от новых разработчиков). Наличие «сильной неприязни к XYZ» полезно только в том случае, если все в команде разделяют эту неприязнь. Если не все, это только вызовет раскол. Нет разницы между ненавистником Windows и ненавистником Linux, за исключением того, что они оба ненавистники. С другой стороны, те, у кого есть причины испытывать неприязнь к чему-либо, основанные на личном опыте, имеют в виду, что им есть что принести на стол - ЭТО стоит иметь ... Но использование Suse дома не сделает вас умнее.
CorsiKa