Должен ли я быть хорошим программистом сразу после колледжа?

28

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

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

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

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

dustyprogrammer
источник

Ответы:

50

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

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

Адам Лир
источник
+1. Мне также очень нравилось быть тем, кто сосет что-то в команде, и это заставляло меня корректировать свои знания.
27
+1University prepared me for computer science, but not really for software development.
Джордж Мариан
1
Я надеюсь, что у меня будет такой же опыт, когда я закончу университет и получу свою первую (о, подожди, вторую) работу в сфере программирования.
Габлин
4
@ Джордж: Что еще хуже, так это то, что большая часть разработки программного обеспечения в реальном мире попадает под эгиду «ИТ», которая обычно сводится к тому, чтобы шлепать уродливые пользовательские интерфейсы по таблицам базы данных. :( Не совсем то , что университет мог подготовить вас.
Адам Paynter
@adam Абсолютно. Хотя время от времени я понимаю необходимость этого, «достаточно хороший» подход сводит меня с ума.
Джордж Мариан
23

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

С другой стороны, оглядываясь назад, я все еще не знал, чем занимался 6 месяцев.

Дэн Дайер
источник
4
Хорошо сказано, что мои профессора всегда говорили: «Между промышленностью и научным сообществом существует большое неравенство». Трудно поверить, пока вы не выйдете в реальный мир и не поймете, что на самом деле есть!
Крис
Это. Именно поэтому стажировка, неоплачиваемая или что вы можете получить, так ценна. Черт, даже стажировка, не связанная с программированием, гораздо более ценна в опыте, чем любой отдельный класс, потому что вы изучаете некоторые подводные камни в работе с людьми.
Kzqai
10

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

ysolik
источник
+1 за применение того, что вы изучаете. Я забыл упомянуть эту часть. :)
Адам Лир
7

Я определенно думал, что был, но я не был.

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

JohnFx
источник
4

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

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

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

Мейсон Уилер
источник
2
Хороший ответ, но я бы не сказал, что «то, что я изучил в школе, бесполезно». Однако я знаю, к чему вы стремитесь.
Габлин
4

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

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

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

glenatron
источник
2

Я бы процитировал пост Брайана Херта

Информатика и программирование - это разные вещи

который также ссылается на студенческое программирование Джоэла Спольски и блестящую статью под названием « Кто убил программиста»

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

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

оборота млоскот
источник
1

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

martjno
источник
Какой была ваша первоначальная степень? Ваша тяжелая работа наконец окупилась?
Rwong
Я инженер-электронщик, я был довольно хорош в Matalb, но с очень небольшим знанием C / C ++ и Java. Хотите верьте, хотите нет, но моей первой настоящей работой по программированию было написание драйверов для Windows CE и перенос их на это устройство: eurotech.com/EN/innovation.aspx?pg=wearable . Компания немного помогла мне, но в основном я работала дома одна, теряя много времени на мелочи. Но вы держите пари, что я ничего не забыл! Я все еще учусь, но теперь у меня есть стартап, который делает действительно большую программу ... так что это окупилось.
martjno
1

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

Ключевым моментом было то, что я много работал как хобби, занимался веб-разработкой в ​​течение учебного года и проходил качественные летние стажировки в IBM («Скоростные команды ExtremeBlue» и собственно программа ExtremeBlue). Хороший предпрофессиональной опыт будет препятствовать вам пропустить немного материала начального уровня после окончания учебы.

(Тем не менее, я все еще намного лучше программировал в мои первые шесть месяцев или около того на Real Job (tm). Не то, чтобы я закончил после этого, но именно тогда это действительно показало многое.)

user2348
источник
1

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

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

Wizard79
источник
1

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

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

RationalGeek
источник
1

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

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

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

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

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

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

mouviciel
источник
0

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

Джереми
источник
0

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

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

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

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

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

HLGEM
источник
0

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

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

Калеб
источник