Я заканчиваю со степенью информатики, но я не чувствую, что я знаю, как программировать


1050

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

Я пытаюсь улучшить свои знания, изучая алгоритмы, но это долгий и болезненный процесс. Я нахожу алгоритмы сложными, и, по мере того, как я учусь, пройдет десятилетие, прежде чем я овладею материалом в книге. Учитывая мою текущую ситуацию, я потратил месяц на поиски работы, но мои навыки (C, Python, Objective-C) относительно невелики и не очень желательны на местном рынке, где C #, Java и веб-разработка намного выше в спросе. Это не означает, что возможности C и Python не существуют, но они, как правило, требуют более 3 лет опыта, которого у меня нет. Мой средний балл в порядке (3.0), но он недостаточно высок, чтобы подать заявление в крупные компании, такие как IBM, или вернуться в аспирантуру.

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

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

Ответы:


533

Лучший способ научиться программировать - это писать программы.

Два предложения:

  • разработать игру
  • разработать веб-сайт

Алгоритмы, хотя они полезны и должны быть поняты, фактически играют вторую скрипку в разработке программного обеспечения. TDD / Шаблоны проектирования / Архитектура / Рефакторинг / Модульное тестирование / Процесс составления кода / и т.д., как правило, гораздо более важные навыки.

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

  • Еще одна вещь - « Читай книги и образцы » и не стесняйся спрашивать. Если вы хотите узнать, вы должны спросить :)

70
+1 Согласен. И если вы не ХОТИТЕ заниматься этим в свободное время, это может быть не лучшим вариантом для вас. Если вы соберете вещи сейчас, вы можете создать портфель, который может дополнить ваш средний балл.
Крис

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

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

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

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

388

Я чувствовал, что я в основном склеивал библиотеки, которые написали другие люди

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


126
+1 за клей. Никто не будет нанимать группу профессионалов, чтобы построить новый дом, и ожидать, что они будут изобретать совершенно новые методы в строительстве дома. На самом деле, любой, кто заинтересован в управлении рисками и бюджетом, скорее всего, предпочтет не делать этого.
Дэн Брайант

14
Я согласен, что есть некоторые крайние случаи, но я бы сказал, что 75-80% программных заданий там, где вы просто склеиваете библиотеки.

15
И нет ничего плохого в том, чтобы просто склеивать библиотеки. Вот что делает вас продуктивным!

10
Определенно, как 90% моей работы, я либо подключаю чужой код (библиотеки или устаревший код), либо поддерживаю старый код. Но я трачу свое дополнительное время на изучение кусочков, так что теперь я точно знаю, как работает множество этих библиотек, и у меня гораздо более глубокое понимание того, что происходит в целом. Будь пожизненным учеником, и в конце концов ты все поднимешь.
CodexArcanum

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

238

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

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

  2. Начните с малого .

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

  4. Имейте искреннюю страсть к тому, что вы делаете. Хотя люди не согласятся со мной по этому вопросу. Я не верю, что вы можете преуспеть в этой области, если вы просто считаете это работой 9-5. Там должно быть страсть, чтобы сделать это.

  5. Помоги другим людям на ТАК! Лучший способ понять это - попытаться научить этому других людей.

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

  7. Держись за это . Временами бывает очень сложно, но очень приятно, когда вы закончите. Если вы чего-то не понимаете, сделайте перерыв, проясните свои мысли и попробуйте снова. Спросите нас на ТАК! Мы - желающая связка :)

  8. Никогда не прекращайте изучать новые технологии.

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


13
Добавить чистый код в список для чтения, это очень хорошо.

7
«Знание одного языка - это хорошо» -> неправильно. Зная один язык является не достаточно. Знание нескольких языков - это хорошо, изучение еще большего количества языков - еще лучше.
Денилсон Са Майя,

10
«Начать с малого» относится не только к выбору доступных проектов, но и к запуску осуществимых частей в проекте. Мой проект начался с небольшого эксперимента по параллаксу, и я подумал: «Это похоже на довольно крутое звездное поле для фона игры». Добавьте корабль ... добавьте инопланетянина ... добавьте несколько ракет, управление с клавиатуры и обнаружение столкновений (каждая простая проблема, сама по себе) по одному, и вскоре у меня была коммерческая игра, за которую я продал (о чем я думал время) много денег. С другой стороны, «написать игру» - смутная, неприступная задача. Один бит за раз.
mmc

2
@Denilson OP заявила, что она не чувствует, что умеет программировать. Хорошо знать один язык для тех, кто не уверен в программировании. Мой список применим только к этому контексту.

7
@Denilson, ты мог бы выучить несколько языков, не изучая сначала один язык?
Петер Тёрёк

141

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

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


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

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

11
«Проблемная область была хорошо понята (ваш профессор не давал вам задач, которые не укладывались бы в вашем семестре).» Это одна из самых больших проблем в информатике. Существует несколько программ для разработки ПО или разработки программного обеспечения, которые решают эту проблему, но большинство не заставляют вас думать нестандартно. Вам действительно нужно брать на себя собственные проекты. Если вы не знаете, как был создан Stackoverflow, попробуйте сделать клон самостоятельно. Вы узнаете гораздо больше, чем любой класс может научить вас.
Мэтт Оленик

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

@Xster, это то, что я имею в виду. Хорошее место для начала - написать приложение «вопрос и ответ», которое имеет очень базовую функциональность.
Мэтт Оленик

106
  1. Начните на одном из этих востребованных языков, используя проект, как говорит К. Николас.
  2. Не измеряйте себя с помощью StackOverflow. Это лишает вас силы без необходимости.

81
+1 за №2 - не сравнивайте себя и знания толпы.
GF

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

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

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

@Georg - Отличная игра на ходу. KGS Smandoli

72

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

Я заканчиваю со степенью информатики, но я не чувствую, что я умею программировать.

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

  • Многим работодателям все равно, какие курсы есть в вашей расшифровке или даже каков ваш средний балл. Вместо этого они хотят знать, что вы можете сделать, и особенно то, что вы построили. Для хорошей работы то, что вы создали, важнее, чем технология (C, C #, что у вас) в вашем резюме.

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

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

Может быть, вы не усердно работали над правильными проблемами? Хорошо найти проблемы, которые

  • Открыты
  • Иметь более одного хорошего решения
  • Есть много плохих решений

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

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

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

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


Я должен согласиться. Выйдите туда и докажите своим потенциальным работодателям, что вы ЗНАЕТЕ C, Python, Objective-C и создайте независимое приложение, которое что-то делает. Люди часто выбирают игры, потому что, в зависимости от игры, они могут включать сложный дизайн и реализацию, а многие библиотеки бесплатны. Если вы создаете игру для Windows, GDI / + или DirectX являются бесплатными библиотеками для вас и т. Д.
DeadMG

Часть «Большинство членов Гарвардского факультета (я был таковым в течение восьми лет) чувствуют, что они на самом деле не принадлежат к Гарварду, они не знают достаточно, и, должно быть, это была какая-то ошибка, что они были наняты». Эффекта Даннинга – Крюгера =)

2
+1, чтобы что-то построить: это отличает вас от толпы, особенно если это что-то полезное.

5
@ Алекс, никогда не проходи через HR. Если вам повезет, тот, кого вы знаете, знает кого-то, где вы хотите работать.
Норман Рэмси

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

59

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

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

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

Найти проект, любой проект. Например, на github.com есть много подходящих проектов.

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

Повесить там! Это может быть тяжело, но вы будете рады опыту однажды.


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

1
@piotr - Ты сам сказал - «Если у тебя нет финансовых ограничений». Любой недавний выпускник колледжа будет иметь эту проблему, если они не живут с мамой и папой. Я согласен с Дэвидом М - если вы не можете найти работу непосредственно в своей области, найдите работу. Покажите, что вы не просто сидите без дела. Затем, когда вы не работаете на своей дневной работе, продолжайте учиться ночью и разбираться в своей области с помощью проектов и т. Д. Конечно, звоните и рассылайте резюме.

На резюме любая работа выглядит лучше, чем разрыв.
Джим С

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

5
Петр: "Ты действительно думаешь, что работа, не связанная с твоей карьерой, вообще поможет твоему резюме?" Да, конечно. Я бы гораздо больше думал о программисте, работающем в процессе простоя, чем о программисте, сидящем дома целый день. Это показывает трудовую этику. Я никогда не заканчивал тем, что хотел нанять одинокого гения, который сидит дома и пишет код один. Они не умеют хорошо работать с другими или выполнять грязную часть работы.

59

Вы смотрели на ProjectEuler ? Я учил себя Python, выполняя задачи на этом сайте. :] Если вы после изучения Java или C #, вы можете попробовать это. Кроме того, я рекомендую попробовать свои силы в программировании GUI.

Редактировать:

Вот отличная тема о SO для многих ссылок, с которыми вы можете ознакомиться для практики кодирования:

https://stackoverflow.com/questions/662283/websites-like-projecteuler-net


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

44
Project Euler очень мало полезен для начинающих программистов, желающих накопить знания в области программирования. Он ориентирован на выяснение того, как решать математические задачи с помощью алгоритмов кодирования. Вы можете сделать миллион таких, не становясь хорошим программистом (хотя, вероятно, вы станете великим математиком). Написание отличных алгоритмов не является приоритетом для большинства программных работ.

1
Я бы не согласился, Чарльз - Эйлер даст мотивацию понять определенные концепции и выполнить их.
Broam

Использование его как Ксавье Хо кажется интересным и полезным. То есть заставить себя овладеть основами нового языка. Я подозреваю, что PE поможет вам в программировании (в крошечном масштабе) ИЛИ в математике; так что вы можете погрузиться в любом случае. Помимо этих пунктов, я согласен с Чарльзом.

6
pythonchallenge.com является ключевым! В то время как Euler - математические задачи, которые должны быть решены с помощью программирования, pythonchallenge - это чисто программные проблемы
Xster

48

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

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

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

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

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

Добавлено как запоздалая мысль:

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

Это касается ....
Пол Натан

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

6
Не только женская вещь; Люди, которые уже или компетентны, или способны видеть, что им нужно расти (Да, вы!), Склонны ставить под сомнение свою собственную компетентность больше, чем те, кто не начинает подозревать свою собственную некомпетентность. Существует название для этого явления. Эффект Даннинга-Крюгера. Ваш опыт в школе был бы феноменальным успехом, если вы оставите школу способной продолжать свой жизненный путь обучения, независимо от того, в какой карьере вы окажетесь. Я желаю вам удачи !!!
Уоррен П

1
Уоррен: Абсолютно верно; у многих моих менее откровенных сверстников мужского пола была та же самая проблема. Во многих культурах по всему миру, в том числе в Северной Америке, маленьких девочек не поощряют к агрессивной конкуренции и для демонстрации своих способностей так же, как для маленьких мальчиков, поэтому я видел эту черту чаще у женщин. Но это определенно не просто женская вещь.

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

39

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

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

  • Найти сотрудника . Одно только программирование сложно, так что еще одна вещь, которая очень сильно помогла бы, если бы вы нашли приятеля, чтобы сотрудничать с вами в этом проекте. Это делает его намного веселее и мотивирует. В своем недавнем сообщении в блоге Джефф Эттвуд рассказывает об этом точно в своем опыте построения SO. http://www.codinghorror.com/blog/2010/05/on-working-remotely.html

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

  • Если возможно, выберите то, что будут использовать другие люди . Даже если у вас есть только десять «клиентов», ощущение, что другие люди используют то, что вы создали, похоже на наркотик. Невероятно сытно. Учиться у клиентов и реагировать на них также является таким ценным опытом обучения.

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


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

34

Несколько комментариев с точки зрения того, кто был разработчиком более 20 лет:

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

Они представляют собой продукт групп, в основном основанный на библиотеках и инфраструктуре (.net, java, asp.net и т. Д.), Созданных другими группами и опирающихся на опыт и ресурсы. То, что вы сами не знаете, с чего начать делать что-то подобное, вполне понятно. Не беспокойся об этом.

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

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

В основном я заканчиваю со степенью информатики, но я не чувствую, что я научился программировать.

Умение программировать и умение работать в качестве профессионального разработчика - это две разные вещи. Вам просто нужен некоторый опыт, желательно работать с другими разработчиками на реальных системах. Попробуйте добавить C # или Java к вашему набору навыков - между ними нет большой разницы, поэтому знания можно передавать. Остерегайтесь становиться слишком специализированным слишком рано. Возможно, вам придется смириться с тем, что вы не заработаете много денег сразу, поэтому держите свои личные расходы на некоторое время, если можете.

Начните работать над проектом, который вы упомянули, но, не только углубляя свои знания в области программирования, постарайтесь использовать его, чтобы получить опыт, связанный с такими навыками, как управление версиями, модульное и интеграционное тестирование и даже написание простой документации. Эти навыки отличают разработчика от программиста и являются хорошей демонстрацией для будущего работодателя. Существует множество бесплатных инструментов (экспресс-выпуски Visual Studio, github, nunit, приложения Google), которые могут помочь.

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

Удачи!


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

Я согласен, что хороший разработчик должен знать, как работают эти основные структуры данных и алгоритмы, и уметь их реализовывать. Мне приходилось пару раз свернуть свои связанные списки, но никогда (к счастью для меня) не приходилось писать быструю сортировку. Моя точка зрения заключалась в том, что ОП не следует слишком беспокоиться об алгоритмах, которые она, возможно, изучала во время ее обучения, поскольку многие языки / платформы (.net, Java, C ++ и т. Д.), Вероятно, будут включать в себя предварительно написанные реализации.

31

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

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

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


27

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

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

Серьезно, люди, чему они сегодня учат в университете? Когда вы получите степень CS (по крайней мере, когда я был студентом) к тому времени, когда вы закончите, у вас будет хорошее понимание дизайна компилятора, комп. сложность, формальные методы и логика, целый зоопарк структур данных и алгоритмов, исследование основных операций (LP и т. д.), базы данных, цитография и безопасность, алгоритмы планирования, сетевые протоколы, разработка интернет, разработка ОС и ядра, параллельные алгоритмы и структуры данных, численные алгоритмы и многое другое. Все это обычно дополняется огромным программным проектом, который является частью окончательной диссертации. Не говорите мне, что выпускники comp.sci не получают достаточно практики программирования.

Я также ценю тот факт, что некоторые из более традиционных степеней comp.sci не учитывают некоторые аспекты цикла разработки программного обеспечения, вы, вероятно, не услышите много разговоров о TDD, модульном тестировании. Но давайте будем откровенно честными: это не ракетостроение, не так ли? Вы также не услышите о SCRUM или анализе функциональных точек. Преподавание подробных курсов по таким базовым вопросам было бы излишним, хотя многие ученые в настоящее время имеют курсы по проектированию систем, где они дают студентам представление о том, как эти вещи работают.

Конечно, вы не можете быть экспертом в .NET, PHP или других текущих отраслевых стандартах, но это не имеет значения. Через 5-10 лет выбранные языки все равно изменятся. То, что вы учитесь водить в Peugeot, вовсе не означает, что вы не сможете управлять Fiat, и то же самое должно применяться к языкам программирования. Для того, чтобы работать на любом языке, нужно потратить несколько месяцев практики с несколькими хорошими книгами.

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

Я работал в ИТ-индустрии в различных компаниях и также участвовал в процессе собеседования с другими разработчиками программного обеспечения. Мы задали несколько обычных вопросов о fizzbuzz, но они были нацелены в основном на людей без формального обучения или на стажеров. Я никогда не встречал выпускника Comp.sci, не способного отвечать на основные и не очень основные вопросы программирования.

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


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

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

1
Я встречал десятки выпускников CS - во время интервью с ними - которые не могли объяснить какие-либо алгоритмы сортировки, даже если бы оставались думать пять минут. Возможно, университетский стандарт здесь, в штатах, не применяется во всех отношениях. Как отмечает @Chris S, достаточно легко пройти курс, не изучая ничего.
Дин Дж

Вы смешиваете две вещи здесь. Я считаю, что получение степени невероятно полезно - я знаю, что это сделало меня намного лучшим программистом, но я никогда не могу понять, почему именно (предположительно, сочетание небольших знаний и лучшего подхода к решению проблем). Тем не менее, есть много выпускников (из довольно престижного университета), которые даже не могут понять, как внедрить (9,5) ECC с таблицей поиска 512 байт. Хорошие программисты - это те, кто выходит за рамки «я не понимаю этого, но я могу делать экзаменационные вопросы».

1
интересная проблема, но зачем вам обычно делать тест ECC;), кроме аппаратного обеспечения, конечно. Но это хороший пример самовнушения, которое вы не можете / не можете? учиться на compSci

24

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

Прорабатывайте упражнения, как предлагали другие, в Project Euler и других местах.

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

Придерживаться; вам будет хорошо.


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

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

@Carl - слишком быстрое заключение :-) Наемный персонал / менеджеры поглощают это высокомерие / саморекламу. Особенно при оценке кандидатов на технические должности, которые они не начинают понимать требования. Я видел много очень квалифицированных мужчин в той же лодке, что и эти бедные женщины, когда этот чрезмерно уверенный в себе, саморекламирующийся человек появляется и крадет шоу. Я не думаю, что мы можем считать это победой, чтобы побудить больше женщин быть слишком уверенными в себе. ИМХО, место, где мы можем сделать больше всего хорошего, - это научить HR-менеджеров принимать лучшие решения или изменить процесс.

23

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

Там нет замены для практики, практики, практики и опыта. Программируйте 8 часов в день, и через 5 лет у вас может появиться понимание, которого вам не хватает сейчас.


6
Это ловушка-22 не так ли? Программа полный рабочий день, чтобы получить работу, которую вы хотите.
Джим Шуберт

16
Нет, через 5 лет ты поймешь, что ничего не знаешь :)
Эрлз

1
@Earlz, а то, что ты наконец-то знаешь, уже устарело.
Дэн Брайант

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

1
@Earlz как очень дзен :)
Tullo_x86

23

Такой откровенный вопрос, отличные ответы - я кратко включусь :)

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

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

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

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

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

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

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

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

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


10
В вашем первом предложении говорилось, что вы кратко включитесь ... но у вас есть один из самых длинных ответов здесь. ;)

+1 за «разделите вашу задачу на куски, суммируйте время, а затем удвойте его (это называется, делите, побеждайте, маршируйте домой;)» ... хотя на многих работах вы должны увеличивать его в четыре раза, так как руководители ожидают, что оно выполнено в половину времени и добавьте еще один проект, который должен быть выполнен в тот же период времени, не допуская расширения вашей оценки. Я даже слышал о «умножить на два и увеличить единицу (1 час => 2 дня, 1 день => 2 недели, 1 неделя => 2 месяца, 1 месяц => 2 квартала, 1 квартал => 2 года, .. .) и после некоторого реального опыта работы это не так забавно, как я всегда думал

просто распечатал это и приклеил к стене
что такое вопрос

22

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

В любом случае, похоже, что вы делаете правильные вещи:

  • Программа вне работы
  • Читайте книги по разработке программного обеспечения (Code Complete, Design Patterns, Mythical Man-Month и т. Д.).
  • Продолжайте изучать новые технологии - школа должна была научить вас изучать языки, а не сами языки. Изучите новые фреймворки, IDE, API, библиотеки, инструменты сборки и т. Д.
  • Тусоваться на сайтах, как ТАК и здесь. Взаимодействие с опытными людьми на регулярной основе - это один из немногих путей к мудрости.

1
Честно говоря, мифический человеко-месяц немного переоценен, не так ли? (Но мне действительно нравятся книги типа «* в двух словах»).
Камило Мартин

2
@ Камило не согласен. Mythical Man Month посвящен разработке программного обеспечения, в то время как в двух словах об одной технологии. В конце концов вам понадобится понимание проблем программного обеспечения при разработке программного обеспечения. МММ является одним из тех чтений, который охватывает тему.
Брайан Виггинтон

21

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

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

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

Третье - рекламировать себя. В этой истории информатики этот шаг никогда не был проще, чем сегодня. Ответы, которые вы даете, и вопросы, которые вы задаете в SO, - это ваше резюме. Возьмите на себя ответственность стать ведущим авторитетом в SO для языка, который вы решили освоить. Возьмите на себя ответственность за любой вопрос, который приходит через этот сервер с вашим тегом на нем, даже если это означает часы тщательных исследований и поиск поздних ответов. Ищите в архивах и читайте все вопросы, которые когда-либо задавались на SO по вашей теме. Исправьте дезинформацию, предоставьте свои собственные ответы и варианты ответов и объедините несколько существующих ответов в один лучший ответ. Наполнение ТАК бесконечным потоком ваших комментариев, ответов и правок, должно быть вашим смыслом (плюс это весело, потому что вы получаете очки репутации).

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


2
+1 за упоминание о важности навыков сотрудничества / общения. У большинства выпускников их нет.
Денис Откидач

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

1
Специализация имеет свое место, но я не уверен, что правильное время для колледжа - правильное время. Я бы также поспорил о спросе и предложении - часть уловки специализации - найти нишу, которая нуждается в заполнении, а не ту, которая уже заполнена. (и на фронте COBOL - пару лет назад моя соседка по самолету выглядела в середине-конце 20-х годов, но имела дело с проектом по переносу устаревшей системы ... и, как я понял, это, они все еще придерживались COBOL, просто должны были перейти на новое оборудование - так что, возможно, есть новое поколение программистов на COBOL)

21

Ладно, увидели эту хакерскую новость, и я сказал: "СВЯТОЙ ХЛОПОК, КОТОРЫЙ Я !!"

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

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

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

Я бы не стал изучать все тонкости одного языка, такого как C # или Java, и сосредоточился бы на принципах программирования. Вы должны быть в состоянии передать хорошие навыки кодирования и применять их на любом языке (это важно для долголетия в вашей карьере. Ява не станет горячей навсегда). С другой стороны, знание «горячих навыков» может помочь найти работу. Навыки интервью очень важны. Возьмите каждое интервью, которое вы получите, даже если это просто для практики.

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


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

20

Вау, что много ответов до этого.

Как насчет совершенно другого ответа ...

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

«Я закончила урок зачатия, и я только что родилась. Моя мама короновалась, и я должен быть доставлен завтра утром. Но когда я смотрю на таких спортсменов, как Усэйн Болт, я думаю», как я могу когда-либо управлять этим быстрый?".

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

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

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

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

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

Конечный результат? После получения степени (с похвалой) я пришел на работу с собеседованием при более высокой зарплате, чем те, кто занимается прямой электроникой, и у меня не было изменений в прическе или ношения костюма. Какая? Ну, в 23 года все это имеет значение (оглядываясь назад, в 44 года я отчасти смеюсь над этим, но для тебя это молодость).

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

Меня часто поражает (и поражает), что молодые люди, часто еще подростки, похоже, знают, что они хотят делать. Но настоящий вопрос в том, делают ли они это в 27 лет? Или они изменили курс, потому что их ранние идеи не были правильными для них?

С точки зрения того, как я могу сделать что-то столь же впечатляющее, как ТО (что бы это ни было, Google, SO)? Ну, вы делаете это по частям, так же, как вы делаете программное обеспечение и все остальное в жизни. Вы начинаете с основ, получаете опыт в этом. Если вы достаточно хороши, вы продолжаете и получаете больше опыта и т. Д., Или вы отказываетесь от него, потому что понимаете, что вы недостаточно хороши или что это так скучно, как в аду (вот почему я не делаю связи, хотя всегда был золотой рудник. Для меня это скучно!).

Во что бы то ни стало, посмотрите на своих сверстников, посмотрите на своих старших, изучите их выбор и интересы. Но проверь и свое. Часто то, что на первый взгляд кажется безумным / помешанным, на самом деле является реальной сделкой. Заниматься чем-то интересным (а не просто оплачивать счета) НАСТОЛЬКО намного выгоднее.

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

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


-1: Не могли бы вы немного усилить это и сосредоточиться больше на вопросе, а не на себе?
Джим Г.

2
Это не о «я», а о том, как я попал оттуда сюда, не зная изначально, где «здесь». Я просто использую свой собственный опыт в качестве примера, потому что я знаю свой опыт лучше, чем чей-либо опыт. Если вы читаете это как обо мне, вы читаете это с неправильной точки зрения. Часто, если вы «ужесточаете» вещи так, как выражаетесь, вы не предоставляете никаких оснований для высказываемой точки зрения и оставляете читателя в замешательстве. Я мог бы написать «Я понятия не имел, что я хотел сделать, когда я закончил, но теперь я делаю бла-бла». Это никого не вдохновит на продолжение - нет «реальной причины верить» (ТМ).

Хороший ответ, Стивен. Просто из другого POV, чем другие ответы здесь.

+1, хотел бы я добавить 1000 голосов, чтобы сделать это в качестве главного ответа. Тронул меня!

18

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


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

17

Следуйте правилу 10000 часов.

Чтобы стать мастером чего-либо, вам нужно практиковаться не менее 10 000 часов. Поэтому потратьте 10000 часов на программирование, и вы станете мастером этого. Если вы не потратили 10 000 часов на программирование и не чувствуете себя мастером, не расстраивайтесь, просто тратьте больше времени на программирование.

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


1
и вы должны убедиться, что вы не делаете один и тот же час снова и снова! Заставь себя продолжать учиться.
Фром

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

14

Просто пара мыслей, если можно.

Венди говорит, что можно получить высшее образование со степенью бакалавра, но при этом мало знакома с практикой программирования. Разве это не ужасно, даже ужасно? Это так же тревожно, как мошенничество, которое затопило английские факультеты в 70-х годах: литература - это не собрание идей, которые можно понять и интегрировать, а скорее набор «текстов», которые студент должен абстрагировать и «деконструировать» ( http: / /www.answers.com/topic/deconstruction ). К счастью, этот зловонный прилив ослабевает, может быть, потому, что инструкторы, которые уничтожили его слабый прибой, уходят в отставку.

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

Итак, сегодня утром, услышав крик Венди, я думаю, что MIT, разумеется, не смог бы разбавить свои предложения и ввести в заблуждение своих студентов (в контексте практики программирования), практически бесполезным дерьмом. Но когда я смотрю на учебную программу MIT по EE / CS, я вижу, что именно так и произошло:

http://student.mit.edu/catalog/m6a.html

Особенно замечаю, что кафедра использует Python как / язык обучения! Я имею в виду, действительно! Похоже, что степень CS в MIT означает подготовить студента к преподаванию CS в MIT. Поговорим о рекурсии!

Затем я наткнулся на этот вклад в Coding Horror ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) и очень задумался над этим. этого разговора:

«Я опоздал на эту дискуссию [о прогнозировании успеха кандидатов в программисты], но по своему опыту в качестве 30-летнего старшекурсника CS, прошедшего обучение, я обнаружил, что классы программирования бесполезны и менее плохо преподаются как я учился только в местном колледже, а затем в университете Иллинойса в Чикаго, но начальные уроки программирования были:

«1. Объектно-ориентированный, который оставил студентов с небольшим или вообще не понимая процедурных методов, и

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

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

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

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

2. Взять базовый класс по теории операционных систем, будучи затопленным Java, и выяснить, что он был в C (конечно), даже без одного класса C в кампусе?

«Конечно, мне тридцать, а также я один из тех, кто всегда программировал, поэтому у меня не было проблем, но я видел множество людей, которые, как я знал, были лучше в абстракции, чем я (из Calculus, DiffEQ и классов физики до ) и их полная агония при попытке закончить программу, которая была составлена ​​против них ".

Просто пара точек данных, но, как уже говорили другие, преследует.

- Пит


Я так устал от этой измученной точки зрения.
Андрес Яан Так

Python - один из лучших существующих языков обучения
Casebash

@Icplben, Пит или Джамаал с сайта codinghorror.com?
Заки

14

Во-первых, держись!

Во-вторых, вот что помогло мне:

  1. Продолжайте поиск работы за пределами вашего региона интересов. Определенно будет хорошо, чтобы переместить. Отличный шанс выйти и увидеть новое место!
  2. Поскольку опыт невелик, я думаю, что интервьюеры хотят убедиться, что вы - тот, кто будет взволнован и энергичен в работе и решении проблем. Поэтому я позаботился о том, чтобы я был заинтересован в кодировании для компании. Какой я был;)
  3. Задайте вопросы интервьюеру. Исследуйте компанию и подготовьте материал для интервью. Какие шаблоны дизайна вы используете? Почему технология X вместо технологии Y? Я чувствую, что это округляет вас как собеседника и дает вам шанс сделать перерыв.
  4. Код для веселья дома! Это не обязательно должно быть успешным, а просто написать код, который, возможно, использует технику, о которой вы читали, или технологию, подобную базе данных.

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


14

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


1
К сожалению, это правда. Бакалавр бесполезен, кроме как значок, через который вам удалось пройти. Тем не менее, Comp Scirriculum ужасно на уровне старшекурсника. Учебная программа CM требует 5 математик, но объединяет формальный язык, автоматы и вычислимость в один курс, и это факультативный.
МВД

4
Согласитесь на 100%. Зачем вам быть экспертом в чем-то, что вы только что получили право ??
Алекс Фейнман

13

Я нашел этот злой сайт на днях http://99designs.com/ Под дизайном веб-сайта или другим дизайном вы, вероятно, можете найти проекты, связанные с программным обеспечением.

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

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


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

Я бы не стал так сильно беспокоиться о книгах. Как уже упоминалось, единственный верный способ учиться - это делать. Не расстраивайтесь, что нашли время, чтобы найти работу. Это прискорбно, но иногда на поиск подходящего уходит много месяцев. Продолжайте пытаться :) Я согласен с вами, сайт больше ориентирован на искусство / дизайн, хотя, если вы заинтересованы в сайтах, есть некоторые из них. Преимущество в том, что вы можете сделать проект самостоятельно, не имея идеи, и вам могут заплатить, в противном случае вы можете посмотреть на sourceforge.net другие идеи проекта

13

Не беспокойся Рим не был построен за один день.

For each P in PeopleYouKnow
Try
  ask/call P for a Job apply for job;
Catch Denial As Exception
  don be worry;
  //you'll get a job later
End Try

Finally
 If you haven't found a job yet
  For each programmingJobAd in internet

 Try
    apply for job;
    Follow up;
  Catch Denial As Exception
   don be worry;
  //you'll get a job later
 End Try
end
//Keep trying.
//find a bug from this code.

РЕДАКТИРОВАТЬ: #! diff A B

3c3
<   ask/call P for a Job apply for job;
---
>   ask/call P for a Job job; if job is available apply for job;
9a10
>  //(sic)
14c15
<     apply for job;
---
>     apply for programmingJobAd;
20c21
< end
---
> End

12

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

Для поиска работы, не волнуйтесь о требованиях. Просто позвоните им и скажите, что у вас нет лет, но вы все равно хотели бы подать заявку. Если они действительно хотят получить опыт, спросите, есть ли еще доступные должности младшего уровня - они могли бы создать новую должность только для вас. Большинство рабочих мест созданы для конкретного человека. Обязательно свяжитесь с руководителем проекта, а не с отделом кадров. HR обычно не создают новые рабочие места, они часто просто проверяют кандидатов на существующие рабочие места. Гугл твой друг в этом случае;)

Не пытайтесь кодировать веб-приложение (например, Google или переполнение стека), если вы не хотите инвестировать около 6 месяцев. Это огромная кривая обучения. Вам необходимо научиться управлять VCS, запускать веб-сервер, кодирование HTML JS и CSS, систему баз данных и язык веб-приложений. Это жестоко. Большинство из этих технологий не могут быть переданы, если вы не хотите работать в Интернете.

Если вы действительно хотите создавать веб-приложения, вы можете посмотреть на установку простого веб-приложения (например, это приложение для поиска по IP на основе django - http://www.coulix.net/blog/2006/aug/17/ip- флаги страны-комментарии-джанго / ). Вы можете найти около $ 90 скидочный код Dreamhost (чтобы вы могли работать на реальном веб-сервере), и попытаться настроить вещи. Не слишком беспокоиться о безопасности или производительности (но делают использование SSH) - это просто проект обучения.

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


Я думал, что первая версия Google была сделана в короткие сроки? Как летом или как-то так
Эрлз

Apache, работающий под Linux на вашем рабочем столе, является «настоящим веб-сервером», не нужно тратить деньги. Как вы думаете, хостинговые компании работают?
TMN

@TMN, под веб-сервером я имел в виду производственный аппаратный и программный стек. Я знаю, что DH использует Apache и MySQL, но разработка на производственном сервере имеет свои преимущества (все настроено, включая такие сложные вещи, как почта, и они выполняют регистрацию домена для вас) и недостатки (например, отсутствие рута, и вы должны получить привык к удаленной разработке). Использование рабочего сервера заставляет вас погрузиться в веб-работу.

11

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

Я бы порекомендовал вам начать личный проект. Что ты хочешь создать? игра? Блог? Это не важно Просто сделай что-нибудь!

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

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


9

Ну, вот мои два цента ... в сочетании с цитатами из нескольких других источников.

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

- Дэн Кегель через Джеффа Этвуда

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

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

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

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

Я предлагаю вам начать с создания нескольких приложений с определенной целью, выяснить, что вы можете сделать и что заставит вас двигаться вперед, а затем отправиться в некоторые места, где вы можете получить работу фрилансера. Не ожидайте, что вам заплатят огромную сумму за внештатную работу, которую вы получаете в Интернете, вы хотите добавить ее в свое резюме, а не в свой кошелек. Как только у вас есть 3-5 пунктов, на которые вы можете указать и сказать «Я создал это» или «Я разработал эту функциональность для них», перечислите все эти вещи и найдите агентство по найму (они ВЕЗДЕ .. хедхантеры) и работайте с несколькими их сотрудниками, чтобы упорядочить ваше резюме, чтобы оно подчеркивало ваше образование и находчивость в поиске работы, а также сводило к минимуму недостаток опыта.

Самая важная вещь, которую нужно помнить, когда вы разговариваете с потенциальными работодателями (я вижу, что люди все время портятся), и то, на что должен обратить внимание ЛЮБОЙ В ЛЮБОМ ПОЛЕ, это то, что вы абсолютно не хотите продавать себя коротко. или свести к минимуму то, что вы МОЖЕТЕ сделать, не ЗАБЫВАЙТЕ сами и заставьте их поверить, что вы можете делать то, что не знаете, как. Работодатели всегда умеют просить вас делать то, что вы не знаете, как это сделать, и в этот момент ваша задача - выяснить это, но если вы скажете им, что уже можете, вы неизбежно съедите свои слова позже ,

Удачи тебе!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.