Достижение статуса промежуточного программирования [закрыто]

32

Я инженер-программист, у которого было программирование позиций в VBA (хотя я не осмеливаюсь учитывать этот «реальный» опыт, так как это было методом проб и ошибок!), Perl с CGI, C # и ASP.NET. Последние два постдипломные, с моим входом в «реальный мир». Я 2 года не учусь в колледже, и у меня было 5 лет опыта (всего) по языкам, которые я упоминал. Тем не менее, когда дело доходит до моего резюме, я могу отложить только 2 года для C # и менее года для ASP.NET.

Я чувствую, что знаю C #, но мне все еще приходится тратить время на размышления «Что делает этот метод?», Тогда как некоторые из инженеров более высокого уровня могут сразу сказать: «О, метод X делает это, даже не взглянув на это. метод раньше. " Так что я знаю эмпирически, что там есть пропасть, но я не совсем уверен, как ее преодолеть. Я начал программировать в Project Euler и взял книгу о шаблонах проектирования, но я все еще чувствую, что трачу каждый день на воду, вместо того чтобы двигаться вперед.

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

Мой вопрос таков: как вы преодолели это плато? Сколько времени это заняло у тебя? Какие методы вы можете предложить, чтобы помочь мне в этом?

Я прочитал Code Complete , The Mythical Man Month и CLR через C #, 2-е издание - мой вопрос: что мне теперь делать?


Редактировать : я только что нашел этот вопрос о проектах для программистов среднего уровня. Я думаю, что это добавляет к обсуждению (хотя это не вытесняет мой вопрос). Поэтому я добавляю его к вопросу как «Для получения дополнительной информации».

Джордж Стокер
источник
2
Я недавно играл с Project Euler, и он охватывает лишь ограниченный диапазон методов. Это все очень хорошо оптимизирует функцию путем запоминания или динамического программирования, но это не поможет вам написать GUI или веб-приложения. Трудные задачи предназначены для сложной математики, а не для сложного кодирования.
Забавно, несмотря ни на что: я ничего не имею против, он просто не предназначен для того, чтобы помочь вам выучить язык, выходящий за рамки базовых типов данных, структур и, возможно, нескольких методов оптимизации, если вы, как и я, предпочитаете получать свои решения 0,1 с, где это возможно.
@ Горток, я согласен, что есть много конкретных вещей, которые вы можете сделать, чтобы улучшить свой набор навыков, но это, безусловно, зависит от того, какое программирование вы делаете. Например, разработчикам Windows нужны разные навыки, чем программистам встроенных устройств. Я думаю, что заданный вопрос на самом деле слишком широк, чтобы получить хороший ответ.
Натан Феллман
1
Я занимаюсь программированием с 2 лет. Мне не удалось стать лучшим программистом в мире, и теперь я ненавижу свою жизнь. Я хочу , чтобы моя цель состояла в том, чтобы стать крупнейшей в мире порнозвездой вместо этого.
Вы не чувствуете, что продвигаетесь вперед, потому что ваша интуиция говорит вам о разрыве между академической практикой и деловой (реальной) практикой. И ваша интуиция верна. Академическая практика - это все о небольших самостоятельных задачах и упражнениях. Бизнес - это исправление ошибки или добавление функции / веб-страницы и т. Д. К бегемоту (обычно) Академическая практика - это рекурсия. Бизнес это удобочитаемость и ремонтопригодность. Академическая практика - знание математики и информатики. Бизнес - это навыки людей и анализ требований, а также кодирование. Поставил бы это как ответ, но вопрос закрыт.
Брэд Томас

Ответы:

41

Поздравляем!

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

Эта фаза продлится около 3-8 лет, в зависимости от вашей готовности учиться выше и за пределами проблемы момента

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

Или вы могли бы жить вне программирования ;-)

Серьезно, будь в курсе и самоанализ, но время от времени выключай #% $ @.

Приложение: когда вы выходите на улицу, не забудьте надеть брюки.

Стивен А. Лоу
источник
17
и остерегайтесь цитирования Толкина, это хоббит, которого трудно сломать
Стивен А. Лоу
1
Хорошо играл мистер Лоу, хорошо играл.
kemiller2002
1
Серьезно, жить вне программирования. Один: в жизни есть нечто большее, чем код. Два: многому можно научиться из других дисциплин.
kemiller2002
1
+1 - Отлично сделано. Ничто не заменяет практику (или хорошее чувство юмора).
15

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

Норман Рэмси
источник
8
Мне не нравится эта теория, у людей есть постоянная работа, а затем и другие обязанности. Не следует предполагать, что те, у кого нет сторонних проектов, недостаточно любят программирование или являются плохими программистами. Как гласит принятый ответ, «Иметь жизнь вне программирования».
10
Я не согласен - лучшие программисты похожи на лучших писателей: они буквально не могут помешать себе делать то, что у них получается лучше всего.
Норман Рэмси
2
Возможно, они не смогут себя остановить, но жизнь может и по некоторым воле.
Шеннон Северанс
@ShannonSeverance, для многих это будет, а не только для некоторых.
Pacerier
9

Вы должны пройти стадию личинок.

Хотя я сейчас программирую в VB.NET для Windows, я прошел этап личиночки в Linux x86 с ассемблером в качестве основного языка.

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

Овцы становятся как овцы, а овцы - как овцы, но ни один из них не очень длинный в мире. С [деревьями и] энтами все быстрее и ближе, и они вместе идут сквозь века. - Толкиен

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

Это путь к величию.

Джошуа
источник
2
Это как-то связано с cheetos? Картинка в моей голове включает в себя Читос.
2
LOL "Это не так просто, сырный!"
gnovice
Личиночная стадия или стадия ларавеллы? ;)
Брэд Томас
9

Я программирую с 8 лет ... Мне будет 33 года в канун Рождества. Я все еще вижу гору на расстоянии. Неважно, как далеко вы продвинулись, всегда есть чему поучиться.

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

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

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

BenAlabaster
источник
9

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

Вот некоторые симптомы, о которых вы могли подумать:

  1. Вы попадаете в редактирование войн онлайн? Если это так, вы можете показывать, что вам нравится спорить о деталях внутри вашей зоны комфорта больше, чем вы пытаетесь понять точку зрения другого человека.
  2. Вы думаете о языках как о совершенно разных вещах? C # и Java предоставляют свои собственные платформы и ресурсы, но обе являются эффективными моделями вычислимости. Можете ли вы выучить новый язык и платформу достаточно быстро, чтобы получать оплату за работу?
  3. Вы все еще думаете о программных задачах как о наборе текста? Если вам дают задание на работе, почему? Для чего этот код будет использоваться? В какую систему он будет входить? Эта информация может кардинально изменить предложенное вами решение.
  4. Вы оставили всезнайку фазу ? Слушаете ли вы остальную часть команды или просто пытаетесь придумать, что сказать дальше?
  5. Вы поняли, что «потянув за собой всю ночь», чтобы получить ошибочное решение в последнюю минуту, уже не впечатляет? После первых восьми часов вы можете легко представить, что остальное время просто использовалось для ввода ошибок.

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

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

Боб Кросс
источник
8

То, что вы делаете сейчас, прекрасно, но если вы хотите невероятно ускорить свой прогресс, вы можете сделать две дополнительные вещи:

1) «Обучить» - простой способ сделать это - завести блог и попытаться внести что-то полезное на регулярной (возможно, еженедельной) основе. Старайтесь рассказывать о вещах, которые вы недавно узнали или о которых вы еще не знали . Это означает, что вы заставите себя исследовать, понимать и заново раскрывать.

Кстати, вы можете очень легко зарегистрировать учетную запись SingingEels, на которую вы получите бесплатный блог в существующем сообществе разработчиков.

2) Пишите много мини-программ - под этим я подразумеваю около 1 в неделю. Вы можете использовать это в сочетании с вышеуказанным ... или просто для удовольствия. Я, молодой разработчик, просто выбрал (не шучу) пространство имен в .NET Framework. В этом случае выберите класс, который вы никогда раньше не видели / не использовали, и создайте небольшую программу, которая его использует.

Тимоти Хоури
источник
8

Попробуй

Читать больше книг Возьмите эти большие названия из Амазонки и прочитайте их. Например, автор Code Complete написал отличную книгу по разработке программного обеспечения - Rapid Software Development, купите одну и прочитайте ее.

Выучить другой язык программирования сценариев, такой как python / ruby, стоит изучить. Или, может быть, функциональный язык программирования :) Это может изменить ваше мнение о программировании. Возможно, вы знаете, что некоторые шаблоны GOF не нужны для языков такого типа.

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

риппер
источник
4

Найдите умных программистов и учитесь у них. Подражать им. Обратите внимание на то, что они делают иначе, чем вы.

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

Дэвид Норман
источник
3

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

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

и это хорошо видно вместе с твоим резюме. :)

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

melaos
источник
-1

Чтобы преуспеть в качестве разработчика на C #, прочитайте следующие два. Обратите внимание, что основное внимание в этих книгах уделяется языку (C #), а не структуре (.NET).

  1. Essential C # : ссылка на последнюю версию. Я на самом деле читал предыдущий (C # 4.0), но я предполагаю, что чем новее, тем лучше. В этой книге также есть некоторые базовые вещи, но будьте терпеливы, прочитайте эту обложку.
  2. C # in Depth : ссылка снова на последнее издание, которое выйдет через 10-15 дней. Я только просмотрел книгу, но мои коллеги, которые читали ее, высоко ценят это.

Вы уже читали CLR через C # , иначе это, вероятно, третье предложение для разработчиков C #.

Это также должно сделать вас лучшим разработчиком: Руководства по разработке инфраструктуры и Эффективная работа с устаревшим кодом .

Асим Гаффар
источник
Не хочешь объяснить, почему проголосовали?
Асим Гаффар