Стать профессиональным программистом / инженером-программистом
Это не строго о программировании, а о программировании, так что я извиняюсь, если это не тот вопрос, который нужно задавать на этом форуме (мод, пожалуйста, удалите, если это не так)
Я - компьютерный техник в армии США, и как только я выйду, у меня будет восемь лет на работе. Я собираюсь получить степень в онлайн-школе (единственный способ заставить армию платить за нее, пока я еще учусь), и я серьезно думаю о получении степени по компьютерным наукам.
Я отлично разбираюсь в компьютерах. Я могу разобрать один и положить его обратно с закрытыми глазами. Я получил сертификат A+ и Network+, и я получаю пару других сертификатов CompTIA, прежде чем выйти. Я могу работать с Windows так же, как и с любым другим на этой планете, и я не ужасен с Linux. Работа в компьютерах - это то, чего я всегда хотел.
Но, помимо того, что он компьютерный техник, кажется, что каждая работа в этой области требует умения программировать. Я люблю программировать как хобби. Я запрограммировал TI BASIC в старшей школе, и я учу себя Python, но это мой опыт. Это приводит меня к моим вопросам:
Я всегда слышал, что первый язык - самый сложный, и как только вы хорошо его выучите, все остальные для вас встают на свои места. Это правда? Например, если я потрачу следующие восемь месяцев на освоение Python, смогу ли я хотя бы в течение месяца освоить хотя бы честное владение любым другим ОО-языком или что-то еще?
Насколько легко выгореть? Самая большая вещь, которой я боюсь, это просто сгорать от программирования. Я могу идти весь день, если я программирую строго по собственному желанию, но я могу себе представить, что после нескольких лет программирования к определенным срокам и определенным спецификациям это действительно легко перегореть. Особенно, если это большой проект с участием десятка разных дизайнеров.
Исходя из того, что я рассказал вам о себе, я бы уже был квалифицирован, чтобы работать штатным техником (типа гиков, или, возможно, управлял мастерской по ремонту компьютеров).
Является ли Python хорошей базой для изучения? Я слышал, что это заставляет вас ненавидеть другие языки, потому что они чувствуют себя более запутанными при изучении, но также и что это отличный язык для начинающих.
Если вы профессиональный программист, у вас были какие-то страхи?
Вы бы порекомендовали мне заняться ремонтом компьютеров и Python, а не пытаться заниматься корпоративным программированием? (во всяком случае, из того, что вы читали в этой теме)
Спасибо, что нашли время, чтобы прочитать все это и ответить (если вы сделали)
13 ответов
первый язык самый сложный,
Первое что-нибудь самое сложное. Попробуйте переключиться с лыж на сноуборд.
если я потрачу следующие восемь месяцев на освоение Python, смогу ли я хотя бы в течение месяца освоить хотя бы честное владение любым другим ОО-языком или что-то еще?
Месяц? В конце концов? Да.
Насколько легко выгореть?
Это работа. Насколько легко выгореть на любой работе?
Является ли Python хорошей базой для изучения?
Это заставляет вас ненавидеть другие языки, потому что они чувствуют себя более запутанными при изучении.
Так? Это работа. Каждые несколько лет появляется новая технология, которую (а) вы должны изучить и (б) не очень хорошо сравнить с любой предыдущей технологией.
Облом на этом. После 35 лет программирования могу только сказать, что вы правы. Все новое плохо, а все, что ты уже знаешь, лучше.
Если вы профессиональный программист, у вас были какие-то страхи?
Нет. Ничто из того, что вы упомянули, не имеет большого значения вообще.
Бойтесь, что преступно неуправляемые компании обанкротятся. Это то, чего бояться.
Боитесь новой технологии? Пожалуйста. Погрузись. Получи работу. Если вам это не нравится, развивайте новые навыки, ищите другую работу.
Вы бы порекомендовали мне заняться ремонтом компьютеров и Python, а не пытаться заняться корпоративным программированием?
Опять же, это не имеет значения. Через 30 лет ничего этого не будет, и мы все будем программировать на языках, которые еще не были изобретены для пользовательских интерфейсов, которых даже нет в фильмах.
Когда я начинал, мы перфорировали наши программы на бумажных карточках. В самом деле.
Если вы боитесь будущего, вы боитесь самой жизни. Не беспокойся Развивайте новые навыки как можно быстрее.
Питер Норвиг, руководитель отдела исследований в Google, имеет большой пост о становлении профессионалом:
http://norvig.com/21-days.html
Вот несколько основных моментов из его статьи (прямая цитата, слова Питера):
Занимайтесь программированием и занимайтесь чем-нибудь, потому что это весело. Убедитесь, что это будет достаточно весело, так что вы будете готовы положить через десять лет.
Поговорите с другими программистами; читать другие программы. Это важнее, чем любая книга или учебный курс.
Программа. Лучший вид обучения - это обучение на практике. Говоря более технически, "максимальный уровень производительности для людей в данном домене не достигается автоматически в зависимости от расширенного опыта, но уровень производительности может быть повышен даже опытными людьми в результате преднамеренных усилий по улучшению ". (стр. 366) и "наиболее эффективное обучение требует четко определенной задачи с соответствующим уровнем сложности для конкретного человека, информативной обратной связью и возможностями для повторения и исправления ошибок". (стр. 20-21) Книга "Познание на практике: разум, математика и культура в повседневной жизни" является интересным справочным материалом для этой точки зрения.
Если хотите, отведите четыре года в колледж (или больше в аспирантуру). Это даст вам доступ к некоторым работам, требующим полномочий, и даст вам более глубокое понимание области, но если вы не ходите в школу, вы можете (с некоторой преданностью) получить аналогичный опыт на работе. В любом случае, одних только учебников недостаточно. "Образование в области компьютерных наук не может сделать кого-либо опытным программистом, так же как изучение кистей и пигмента не может сделать кого-то опытным художником", - говорит Эрик Рэймонд, автор "Нового хакерского словаря". Один из лучших программистов, которых я когда-либо нанимал, имел только высшее образование; он создал много отличного программного обеспечения, имеет собственную группу новостей и сделал достаточно акций, чтобы купить собственный ночной клуб.
Работайте над проектами с другими программистами. Быть лучшим программистом в некоторых проектах; быть худшим на некоторых других. Когда вы лучший, вы можете проверить свои способности руководить проектом и вдохновить других своим видением. Когда ты худший, ты узнаешь, что делают мастера, и ты узнаешь, что им не нравится делать (потому что они заставляют тебя делать это за них).
Работа над проектами после других программистов. Примите участие в понимании программы, написанной кем-то другим. Посмотрите, что нужно, чтобы понять и исправить это, когда нет оригинальных программистов. Подумайте о том, как разработать свои программы, чтобы облегчить их тем, кто будет поддерживать их после вас.
Выучите как минимум полдюжины языков программирования. Включите один язык, который поддерживает абстракции классов (например, Java или C++), один, который поддерживает функциональную абстракцию (например, Lisp или ML), один, который поддерживает синтаксическую абстракцию (например, Lisp), один, который поддерживает декларативные спецификации (например, шаблоны Prolog или C++), один который поддерживает сопрограммы (например, Icon или Scheme), и тот, который поддерживает параллелизм (например, Sisal).
Помните, что в "информатике" есть "компьютер". Узнайте, сколько времени требуется компьютеру для выполнения инструкции, извлечения слова из памяти (с отсутствием кэша и без него), чтения последовательных слов с диска и поиска нового места на диске. (Ответы здесь.)
Первый язык, безусловно, самый сложный, так как вам также необходимо изучить такие концепции, как массивы, коллекции объектов и программный поток. Второй язык, который вы изучаете, имеет много "О, это похоже на язык, за исключением незначительных различий"
Я не мог себе представить, что я сгораю от программирования, но это, вероятно, потому что мне это очень нравится, и я разработал метод. Я постоянно пью воду или чай, и если я не делаю успехов (т.е. я застрял), я делаю перерыв и пытаюсь забыть о том, что я кодирую. Проблема будет более ясной, когда я вернусь.
Изучив A + и Network + сам, я, конечно, скажу, что у вас есть навыки, чтобы управлять ремонтной мастерской или быть специалистом по ПК.
Я еще не изучил Python (я планирую скоро), но из того, что я читал об этом, это мощный объектно-ориентированный язык, который имеет множество современных функций. Так что я ожидаю, что это будет достойное начало. Я лично начал с Java в 90-х, позже изучил C/C++. Я думаю, что изучение одного из Java, C# или C++ (без определенного порядка) важно как программист, просто потому что они являются самыми популярными языками в настоящее время.
Мне повезло, и я знал, что хочу писать код, так как был в начальной школе. Поэтому я не могу сказать, что у меня были такие же тревоги, как у вас.
Прежде чем принять это решение, вы должны научиться кодировать. Как только вы начнете в нее входить, вы увидите, подходит ли она вам. Я бы искал техническую работу и тратил время простоя или личное время на изучение программирования. Если вам нравится больше, чем ремонтировать, тогда совершите погружение.
Мой опыт работы: я учусь на специалиста в области компьютерных наук со специализацией в области разработки программного обеспечения в университете Ватерлоо на последнем семестре Я в настоящее время на последних стадиях интервью с Google и Amazon. У меня было 2 года стажировки в RIM и Sybase, а также в нескольких других девелоперских компаниях.
Классический путь к профессиональному инженеру-программисту - это бакалавр компьютерных наук (или инженер-программист, но эта специализация редкая), с прохождением стажировки на втором курсе и младшем лете. Вы имеете право начать BSCS и преуспеть.
Первый язык утомляет и расстраивает, второй язык учится думать, третий язык довольно тривиален.
Что касается Python, то это приемлемый первый язык, на который нельзя чихать. Для полноты вы захотите знать Assembly/C/C#/(один из F#, Haskell, Lisp) к тому времени, когда вы отправитесь на поиски работы.
Я не эксперт по Python, поэтому я отказываюсь комментировать, работают ли его возможности OO.
Компьютеры всегда будут нуждаться в ремонте. Вы можете найти свою нишу в мире IT/IS высококвалифицированной системной поддержки, более соответствующей вашим текущим навыкам. ( www.serverfault.com - хорошее место, чтобы взглянуть на эту часть света).
редактировать:
Основным критерием является желание и ваша способность разбираться с трудными вещами и переходить к мягким и жевательным слоям. Это работа, это работа, это может быть весело, но в конце концов, работа - это всегда работа. Вы хотите сделать эту работу или другую работу? Только ты можешь ответить на это.
Программирование - фантастический выбор, многим людям это покажется отвратительным и тоскливым, но это работа, в которой вы никогда не перестанете учиться.
Сказав это (и не желая повторять то, что уже сказали другие), если вы хотите попасть в корпорацию, вы должны быть готовы потратить время - вам, вероятно, придется начинать с дерьма с самого начала. Заработная плата и сделать несколько лет, прежде чем деньги станут хорошими.
Тем не менее, ваш опыт работы с сетями и сборкой будет очень хорошим, он сделает вас очень хорошо развитым разработчиком, потому что у вас есть понимание концепций за пределами обычного мира программирования.
1) Дополнительные языки появятся легче, потому что во многих отношениях они на самом деле просто синтаксис, обернутый вокруг концепций программирования. Как только вы поймете концепции, остальное - понимание нюансов и синтаксиса языка, который становится легче, поскольку каждый язык, как концепции, не сильно меняются между языками, так что вам меньше будет мешать изучать синтаксис.
2) Утомление будет зависеть от множества факторов, но я редко чувствую себя утомленным в программировании. Как программист, всегда нужно делать так много, что это может быть очень разнообразная работа. Также учтите, что если вы не программируете самостоятельно, это очень интерактивная работа с постоянным общением между вами, другими программистами и деловыми людьми, которым требуются ваши навыки. Что мешает мне сгореть, так это удивительное количество вещей, которые нужно изучить и поиграть в мире программирования:)
3) Кажется, что вы достаточно квалифицированы, чтобы выполнять такую работу. Тем не менее, более уместный вопрос, это то, что вы хотите сделать?
4) Я не эксперт по питонам, но знаю немного. У каждого языка есть свои нюансы, и Python ничем не отличается. Я думаю, что это разумный выбор для обучения программированию, и, будучи экспертом в этом, вы хорошо настроитесь на изучение других объектно-ориентированных языков. Если карьера в программировании - это то, что вы серьезно рассматриваете, то Java или C# могут быть лучшим выбором, поскольку это два наиболее распространенных языка, используемых в корпоративном мире. Они также очень близки по синтаксису.
5) Как младший программист, я действительно переживал из-за выгорания и "это правильный выбор карьеры", но это продолжалось недолго, потому что я понял, что люблю программирование и что огромное количество вещей, которые нужно изучать и применять, сохраняет я счастлив и занят. Конечно, у меня отвратительные дни на работе, когда я полностью устал от того, над чем я работаю в настоящее время, но это редкость, и я действительно ценю все разнообразные возможности и проблемы, которые возникают в связи с тем, что я программист.
6) Хорошо, программирование подходит для вас? Это только для вас, чтобы ответить, но некоторые вопросы, которые вы могли бы подумать: вам нравится программирование больше, чем аппаратное обеспечение? Есть ли другие способы использовать ваши аппаратные таланты, кроме ремонта? Например, вам понравилась бы электротехника (где вы могли бы одновременно использовать свои аппаратные таланты и базовые навыки программирования)?
В любом случае, на моем рабочем месте (крупная финансовая корпорация) мне кажется, что для программистов больше возможностей, разнообразной и интересной работы, чем для компьютерных техников, но это, вероятно, мой собственный предвзятый взгляд:) Иди с душой, остальное будет следовать.
Хорошие вопросы и удачи в поиске.
- Изучение любого языка помогает в освоении последующих языков, но у каждого есть свои преимущества и недостатки, которые потребуют времени для освоения. Лучшее, что вы можете сделать, - это набрать как можно больше опыта на любом количестве языков. Вы, конечно, сгораете, если у вас нет цели изучения каждого из них, поэтому не берите двадцать сразу, и с каждым изученным убедитесь, что есть причина этого (например, изучение JavaScript, чтобы вы могли разработать на основе AJAX). страница интернета.)
- Ваша терпимость к истощению напрямую связана с тем, насколько вы мотивированы к проекту, над которым вы работаете, и к вашей стойкости в кишечнике, когда вы проходите мимо тех частей проекта, которые вам не интересны. Я обнаружил, что на этих последних этапах я инстинктивно принимаю любимые проекты, чтобы не заскучать до смерти, что определенно помогает.
- Я полагаю, что вы квалифицированы, но эти карьеры не связаны с разработкой программного обеспечения. Моя рекомендация - попытаться найти работу начального уровня, которая на самом деле включает программирование; если вам нравится информатика, я думаю, что в целом вы найдете ее гораздо более удовлетворительной.
- Я начал работать с BASIC, затем быстро перешел на C и C++, а затем разобрался во всем, что мне нужно, чтобы научиться выполнять работу. Мое предложение (в некоторой степени связанное с ответом № 1) заключается в том, что куда бы вы ни начали, вы продолжаете идти. Не "судите язык по его прикрытию", так сказать; скорее изучите это для себя и сделайте свои собственные выводы о том, насколько вы наслаждаетесь / презираете это.
- Нет настоящих страхов; правда в том, что компании любят находить, нанимать и удерживать лучших разработчиков. Пока вы любите разработку программного обеспечения, это будет отражаться на том, что вы производите, и это будет замечено кем-то, кто хочет нанять.
- Я бы попробовал поэтапный подход. Начните собственный проект для домашних животных, изучите Python, освоитесь с программированием и посмотрите, насколько вам это нравится. Я думаю, что лучший человек, который может ответить на вопрос, который вы здесь задали, это вы сами; начать с малого, и если вам это нравится, получить немного больше. Оттуда отступайте или продвигайтесь, пока вы не будете уверены, что один или другой трек - то, где лежат ваши настоящие компьютерные увлечения.
Прежде всего. Я думаю, что было бы полезно, если бы вы предоставили некоторый контекст с точки зрения опыта. Я технический менеджер с более чем 20-летним опытом работы в различных технологиях, но моя страсть - в пользовательском интерфейсе, и в настоящее время я работаю над проектом по разработке приложения Flex.
Теперь перейдем к моему вкладу.
1) Вы хотите начать со структурированного языка, который предоставляет бесплатные инструменты. Ява хорошая, на мой взгляд. Если вы хотите сделать из этого карьеру, и это звучит так, как будто вы это делаете, то степень - это большой плюс. У меня нет опыта работы с Python, но из моего опыта он обычно не считается хорошим языком обучения.
2) Зависит.. Я занимаюсь этим более 20 лет. Как я уже говорил многим людям, найдите свою страсть и следуйте ей. Конечно, умный выбор очень важен, но если вы хотите иметь шанс и долголетие, то большая часть этого - страсть к тому, что вы делаете. Если вы уже ставите под сомнение возможность, сделайте больше исследований и найдите область программного обеспечения, которая вам действительно нравится, и постарайтесь изучить все, что вы можете в этой области. (Для меня это были пользовательские интерфейсы).
3) Geek Squad - это не то, чем занимается разработка программного обеспечения.
4) По-моему.. я бы начал с Java.
5) Нет. Я прошел путь от Паскаля до C/C++, от Java до Flex. Для людей с открытым разумом и гибкостью есть возможности в этой области. Самый большой страх у большинства разработчиков - оффшор. Определенно, факт жизни и большинство разочарований вокруг моей карьеры полностью вне реального кодирования. Это процесс и то, как он работает с бизнесом, который обычно приносит наибольшую боль.
6) Найди свою страсть и следуй ей. Это дает вам самый большой шанс на успех на мой взгляд. Ох.. и будь реалистом. Я хотел играть в бейсбол, но для меня это было нереально.
Да. После этого вы легко выучите новые языки. Вы можете выучить второй язык примерно через месяц, если у вас есть интересная задача на этом языке программирования, иначе вы могли бы потратить годы и просто не получить его (это мой личный опыт) .
Зависит от каждого человека и с возрастом.:)
Да, но я (субъективно говоря) попытался бы попасть в мир программирования
Ну, вы могли бы начать изучать BF и любить все, что приходит после этого. Я думаю, что Python великолепен для начала, но, возможно, что-нибудь после этого будет слишком многословным.
И много других
goto
мой ответ на 3
Пожалуйста
1) Да, изучение вашего первого языка будет самым сложным. Определенно будет легче выучить будущие языки, хотя все равно потребуется определенная работа.
2) Я поступил в колледж и получил степень в области компьютерных наук и уже более 8 лет являюсь разработчиком программного обеспечения. Я никоим образом не сгорел. Как раз наоборот... кажется, что я вхожу в свой расцвет:-)
3) Абсолютно, вы готовы.
4) Да, просто хорошо, что вы изучаете объектно-ориентированный язык. Большинство вакансий, которые я вижу, предназначены для разработчиков.NET или Java… оба являются объектно-ориентированными языками.
5) Больше всего я боялся, что при первом обучении я не буду достаточно "хорошим" программистом. Посмотрим правде в глаза, программирование может быть сложным миром, но весело. У всех нас есть страхи. Если вам нравится программирование, и вы мотивированы, вы добьетесь успеха.
6) Вы должны делать то, что вам нравится больше всего. Что бы это ни стоило, вы, скорее всего, получите небольшую проверку разработки программного обеспечения по сравнению с ремонтом компьютеров.
Уже есть несколько разумных ответов. Вместо того, чтобы повторять их, я просто хочу отметить, что хорошая программа по информатике откроет вам множество разных тем. Было бы здорово, если бы вы могли найти онлайн-программу, которая имеет аккредитацию CSAB, поскольку стандарты, которые они устанавливают для того, что должно быть включено, очень разумны. Самостоятельное изучение Python - отличное начало, но есть множество тем, которые вы, возможно, даже не думаете изучать самостоятельно, которые являются ключом к становлению действительно всесторонним разработчиком, таких как:
Компьютерная Организация
Операционные системы
Числовой анализ
Анализ алгоритмов
так далее
Похоже, вы уже могли устроиться на работу в ремонтную мастерскую или в ИТ-отдел крупной компании. Оттуда всегда есть возможность сдвинуть другие позиции.
Я сам разработчик программного обеспечения, и я могу понять увлечение! Python - хороший язык для изучения - его относительно легко выучить, и вы можете быстро стать полезным. Если вы хотите быстро стать опытным разработчиком, я бы предложил изучить что-то более сложное для вашего следующего языка - C, а затем C++. Они гораздо ниже уровня, чем Python, они делают меньше работы для вас. Это изначально делает вас менее продуктивным, но это означает, что они работают намного быстрее. С точки зрения обучения, они заставят вас узнать больше о том, как компьютеры на самом деле запускают программы, что сделает вас лучшим программистом.
Самое главное, у вас уже есть то, что вы не можете купить или научиться. Вы достаточно увлечены этой областью, чтобы научиться программировать в свое время, и вы заботитесь о том, чтобы делать хорошую работу. Это дает вам то, чего (к сожалению) многие профессиональные разработчики больше не имеют.
Удачи!
- Как кто-то сказал, с первым все сложно. Программирование ничем не отличается, и вам может понадобиться некоторое время, чтобы обернуть его вокруг. Вещи медленно встают на свои места, хотя.
- Не могу ответить на этот
- Более вероятный. Работа в армии, безусловно, хорошо выглядит в резюме.
- Я ненавижу это, потому что как только вы смотрите на другой код, это делает вас раздражением. Узнайте что-то вроде C#.
- N / A
- Мне кажется, вы бы предпочли починить компьютеры. Я думаю, вы могли бы программировать как хобби, а потом стать разработчиком, но это требует времени.