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

25

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

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

Вы можете утверждать, что основы никогда не меняются, но, похоже, это имеет значение, когда вы программируете на Delphi в течение 10 лет, и вдруг все используют .NET Framework. Это правда, что опытный разработчик займет меньше времени при изучении новой платформы, но это все еще требует времени и усилий.

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

Hemant
источник
1
Что, ты не думаешь, что сможешь управлять Сингулярностью? Любой хороший разработчик может! - шучу, не слушай меня ...
Klaim

Ответы:

30

Что-то, что вы сказали, выделялось: «Я регулярно вижу многих пожилых людей со стажем 14–15 лет ... они теперь отстой в программировании». Это довольно широкий мазок кисти, который вы используете, чтобы рисовать людей с опытом. Я хотел бы указать на пару вещей для рассмотрения:

  • Младшие / менее опытные практикующие любят указывать, как их пожилые люди не могут выполнить X или Y, когда они не понимают, что опыт показывает, что это были плохие идеи. Тем не менее, каждое новое поколение практикующих, похоже, хочет повторить эти ошибки. Это явление присуще всем профессиям, а не только программированию.
  • Не все люди, которые работали несколько лет, являются опытными, зрелыми или хорошими. Требуется усилие, чтобы стать лучше. Когда вы моложе, вы приложите немало усилий, чтобы получить хороший опыт, который вы сможете использовать позже.

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

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

Берин Лорич
источник
1
Хотите уточнить детали голосования? Тебе может не понравиться то, что я сказал, но это правда.
Берин Лорич
4
Восприятие , что у него есть большая часть его загадки. Все, что я сделал, - имел дело с этим восприятием. Короче говоря, меня больше интересует погоня за инструментом, чем его способность стать опытным хорошим разработчиком. Он может даже стать великим . Этого не случится, если весь его опыт скажет ему, что старшие разработчики отстой. Это ужасный демотиватор, который нужно приложить, чтобы достичь того, чего он хочет.
Берин Лорич
1
@Berin Loritsch: Это справедливо. Ваше намерение было хорошо. // В Соединенных Штатах слишком много людей спотыкаются, чтобы ругать других за обобщение. Я возражал против вашего ответа, потому что казалось, что вы делаете это.
Джим Г.
1
Надеемся, что со временем вы узнаете, когда инвестировать время в изучение новых технологий, а когда игнорировать их. Суть в том, что время является ценным ресурсом. Когда впервые появился SOAP / XML RPC, было еще слишком рано говорить о том, что он действительно будет делать. За несколько лет мы усвоили некоторые болезненные уроки и изменили подход с помощью сервисов на основе REST. Кроме того, нам, старикам, нужны молодые ребята с безграничной энергией, чтобы понять, на что стоит потратить время на обучение. Мы можем немного медленнее нажимать на курок, но у нас не займет много времени, чтобы набрать скорость.
Берин Лорич
2
@Berin Loritsch: Возможно, я понял это сейчас. На самом деле, я видел некоторых пожилых людей (включая моего нынешнего босса), которые просто взволнованы, когда дело доходит до решения проблем. Он не прыгает от радости, когда я говорю, что вы можете легко сделать X, используя этот фреймворк, но он не боится использовать его, когда видит, что он действительно полезен. Так что, возможно, другие старшие, которые не хороши, не хороши, потому что они никогда не были. Не потому что они вне связи из-за новых технологий. Теперь я чувствую себя намного лучше. (Надеюсь, то, что я написал, имеет смысл)
Hemant
20

Трудно предсказать будущее. Но одна вещь, безусловно, самая ценная, независимо от технологии.

Это способность разработчика решать проблемы .

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

Амир Резаи
источник
1
Да, плюс способность / честность знать, когда ваши доступные инструменты / навыки не решают проблему. Итак, вы начинаете изучать что-то новое, а затем возвращаетесь к «способности решить проблему».
Питер Роуэлл
1
эх ... это немного расплывчато, и это немного отговорка. Если разработчик все еще совершенно счастлив "решать проблемы" в vb6 ... ну, я действительно не хочу работать с их кодом. Пребывание в курсе событий не предсказывает будущее, требует времени / работы, и у вас меньше возможностей для этого, когда у вас есть семья.
Стивен Эверс
5

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

Случайные мысли:

  • Не каждому программному проекту или компании нужна абсолютно новейшая технология - даже в программном обеспечении. Изменения наиболее драматичны на переднем крае - у компаний, которые немного отстают от передового края, часто есть множество возможностей для роста и изменений, но нет широкого срочного спроса на постоянные изменения немедленно.
  • Чем опытнее становится программист, тем больше у него должно быть возможности использовать опыт вместо последнего / самого лучшего модного слова. Я заметил, что люди, которым я больше всего восхищаюсь в отрасли более 20 лет, имеют массу метафор о том, что последняя вещь C # является идеальным ответом на проблему, с которой они сталкивались в конце 80-х годов с помощью C. Используя предыдущие проблемы и решения, они принести больше понимания к столу с меньшим количеством исследований.
  • Каждый раз, когда мне приходилось оценивать программистов в команде, способность справляться с делами и хорошо играть с другими превосходила спектр технологий, с которыми программист пришел на работу. Несмотря на то, что в отрасли будет развиваться множество конкурирующих новых языков, API-интерфейсов и инструментов, велика вероятность того, что проект будет использовать только конкурента одновременно. Но выполнение задач и оказание помощи другим делают то же самое, что никогда не выходит из моды, и то, как это делается, развивается гораздо медленнее - не то, чтобы IM, социальные сети, смартфоны и все остальное в эпоху цифровых технологий не изменило этот аспект программирования , слишком.
bethlakshmi
источник
Также может быть интересно работать в компании, которая немного отстает от истекающего кровью, скажем, 3-4 года. Вы можете более четко видеть ошибки, допущенные другими, и иметь преимущество более зрелых инструментов и реализаций.
Майкл К
Я согласен. На самом деле я сам немного работаю за гранью, и мне нравится знать, что другие немного били себя по голове, прежде чем я попробую. :)
bethlakshmi
5

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

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

В-третьих, не путайте устаревшие знания с неспособностью использовать новейшие и лучшие средства, когда в этом возникает необходимость. Обычно достаточно просто знать, что там. Например, до недавнего времени мои познания в области веб-программирования были устаревшими в конце 90-х, но когда я захотел создать веб-сайт для своего брата, я знал достаточно, чтобы проверить «новомодные» технологии, такие как CSS, jQuery и системы управления контентом, и был довольно до скорости в пару недель. Другими словами, если вам что-то не нужно в течение последних 10 лет, у вас вряд ли возникнет чрезвычайная ситуация, когда вы захотите, чтобы вы были в курсе событий прямо сейчас.

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

Карл Билефельдт
источник
3

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

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

бит-бездельник
источник
Таким образом, вам не трудно оставаться в курсе новых технологий, когда они становятся зрелыми?
Hemant
1
Эта отрасль циклична. Большинство новых технологий - это не более, чем перепакованные старые идеи. Если у кого-то есть сильные основы, у него не будет проблем с продолжением. Помните, не нужно быть на переднем крае технологии, чтобы заработать достойную жизнь в качестве инженера-программиста.
немного крутил
2

За мой многолетний опыт работы:

  • Языки изменились (как правило, относительно медленно).
  • Круг проблем, которые могут быть практически решены, увеличился (несколько быстрее);
  • Размер и сложность решений увеличились (относительно быстро);
  • Было что-то flavor of the day(иногда хорошее, часто плохое).

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

В отличие от многих других областей, все еще много чего не является обычной практикой. Я видел много передовых вещей приходят и уходят. Многие из них были перефразировкой техник, уже применяемых на практике, и те, которые обычно достигли успеха в некоторой степени. Другие более или менее ушли, и большинство, где новые подходы. (Кто-нибудь видел язык пятого поколения в последнее время?)

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

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

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

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

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

BillThor
источник
2

Никто не может идти в ногу со всем. Вы, вероятно, были довольно заняты, не отставая от предложений Microsoft. Вы рассматривали Ruby для баз данных RAILS и Python и NoSQL, а также для создания Hadoop и мобильных приложений, CSS, HTML5, jQuery, ExtJS и ...?

Я был в программном обеспечении довольно давно. Я стараюсь не отставать от действительно новых технологий, таких как новые идеи для массивно параллельных баз данных, и максимально игнорирую уродливые (например, MFC, WinForms, SOAP, XML, EJB) и тривиальные. В основном мы просто видим большие старые идеи, переупакованные и наконец принятые. Функциональное программирование? Я использовал INTERLISP в 1977 году. Приложения для мобильных телефонов? Это тот же управляемый событиями пользовательский интерфейс и 2D-графика, которыми мы занимались не менее 30 лет. Конечно, есть умение разработать удобное приложение для небольшого сенсорного экрана, но программирование вовсе не ново.

Кевин Клайн
источник
1

Я согласен с @Amir, что ваше мастерство - это решение проблем, а не предметная область, но я ценю вашу заботу, поэтому:

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

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

Стивен Бейли
источник
1

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

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

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

Новее не всегда лучше, и многие не живут.

JeffO
источник
1

Я не в области медицины, но как насчет аналогии между разработчиком и врачом? За последние 20 лет в обеих областях произошли огромные изменения, и темпы изменений становятся все быстрее. Все врачи идут в ногу? Все ли разработчики идут в ногу? Нет. Можете ли вы сделать какие-либо обобщения о разработчиках или врачах с опытом работы 14-15 лет? Больше опыта означает, что у вас больше ответов на подобные проблемы. Опыт превосходит интерес? Не в долгосрочной перспективе.

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

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

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

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

Кевин Хсу
источник