Чи повинен я бути хорошим програмістом відразу після коледжу?


28

Можливий дублікат:
я закінчив ступінь з інформатики, але не відчуваю, що навіть близький до того, щоб бути експертом-програмістом

Нещодавно я закінчив університет, і з тих пір я приєднався до команди розробників, де я, безумовно, найменш досвідчений розробник, маючи, можливо, пару робочих умов. Тим часом, у решти команди працює 5-10 років досвіду.

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

Мені було цікаво, скільки інших розробників розпочали свою кар’єру в командах і залишили так, як вони смоктали. Коли це змінюється? Як я можу прискорити процес? Мої старші допомагають мені, але я хочу бути чудовим і показати свою цінність зараз.

Відповіді:


50

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

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


+1. Мені також дуже сподобалось бути тим, хто щось смокче в колективі, і це змусило мене скорегувати свої знання.

27
+1University prepared me for computer science, but not really for software development.
Джордж Маріан

1
Я сподіваюся, що я маю той самий досвід, коли закінчу університет і отримаю свою першу (о, зачекайте, другу) роботу в бізнесі програмування.
габлін

4
@George: Найгірше те, що багато програмного забезпечення в реальному світі підпадає під парасольку "ІТ", яка зазвичай зводиться до того, щоб ляпати потворні користувацькі інтерфейси на таблиці баз даних. :( Не зовсім те, що університет міг би вас колись підготувати.
Адам Пейнтер

@adam Абсолютно. Хоча часом я розумію потребу в цьому, "достатньо хороший" підхід просто приводить мене у зріст.
Джордж Маріан

23

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

Потім знову, озираючись зараз, я все ще не знав, чим я займався 6 місяців.


4
Добре кажучи, мої професори завжди говорили: "Існує велика невідповідність між галуззю та науковими колами". Важко повірити, поки ти не вийдеш у реальний світ і зрозумієш, що там насправді є!
Кріс

Це. Саме тому стажування, неоплачене чи все, що ви можете отримати, є таким цінним. Пекло, навіть стажування, що не програмує, є настільки більш цінним у досвіді, ніж будь-який окремий клас, тому що ви дізнаєтесь про деякі підводні камені роботи-з-людей.
Kzqai

10

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


+1 для застосування того, що ви дізнаєтесь. Я забув згадати цю частину. :)
Адам Лір

7

Я точно думав, що є, але не був.

Повірте мені, у якийсь момент своєї кар’єри ви збираєтеся повернутися назад і працювати над тим кодом, який ви написали, але не торкалися роками і відчайдушно бажаєте, щоб жоден інший професійний розробник ніколи не бачив цього коду і не знав, що ви його написали. Це означає, що ти зростаєш.


4

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

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

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


2
Хороша відповідь, але я не пішов би так далеко, щоб сказати, що "те, що я [навчився] в школі, нічого не варте". Я знаю, однак, на що ти прагнеш.
габлін

4

Дуже багато хороших програмістів виходять з університетських ступенів інформатики, в основному ті ж, що вступили в них.

Справа в інформатиці полягає в тому, що це, як люди обговорювали вище, не те саме, що програмування. Багато чого я вивчав в університеті, я в основному не був готовий до - було багато речей, які здавались науковою нісенітницею, як я слухав лекції про це, але через кілька років я побажав я звернув більше уваги на це, коли я в кінцевому підсумку знову вивчив купу речей, які я подав як непотрібні. Насправді я думаю, що можна скористатися виконанням програми програмування в комерційному середовищі, перш ніж розпочати ступінь з інформатики, якщо саме цим ви хочете займатися.

Крім того, я думаю, що часто в університеті не обов'язково знати, як вчитися. Багато речей, які я навчився помилково або навчившись від інших розробників, - це, безумовно, речі, які мої викладачі та студенти знали в університеті, але я не уявляв, що було б корисно їх зрозуміти. Розпитування людей про проблеми, які виникають у вас, коли ви навчаєтесь робити щось (а це стосується всього, що насправді), робить процес навчання більш плавним та менш болючим. Більшість речей, яких ви можете дізнатися для себе або від інших людей - враховуючи, що багато уроків, які я навчила для себе, було засвоєно з моїх болісних помилок, я б вирішив вчитися у інших людей, коли можу ...


2

Я б процитував пост Брайана Харта

Інформатика та програмування - це окремі речі

який також посилається на бакалаврське програмування Джоела Спольського та блискучу статтю під назвою Хто вбив інженера з програмного забезпечення

Усі ці дискусії досить добре описують реальність і, на мою думку, відповідають на ваше запитання як «Ні», оскільки університет не збирається зробити вас хорошим програмістом. Потрібно зробити себе хорошим програмістом.

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


1

Нічого, я прикидався програмістом і навчився цьому важко. Я отримав свого першого замовника як фрілансера і дуже погано боровся з C / C ++, і врешті виграв. Я пам’ятаю, що пішло кілька годин, щоб зрозуміти, що робити малак на структурі недостатньо, щоб виділити також пам'ять для покажчиків у структурі.


Якою була ваша початкова ступінь? Ваша наполеглива праця нарешті окупилась?
rwong

Я інженер-електронник, мені було досить добре в Matalb, але з дуже маленькими знаннями C / C ++ та Java. Вважаєте чи ні, моєю першою справжньою програмою було написання драйверів для Windows CE та пересилання їх на цей пристрій: eurotech.com/EN/innovation.aspx?pg=wearable . У мене була невелика допомога компанії, але в основному я працював один вдома, втрачаючи великий час для дуже дрібних речей. Але ти гадаєш, що я нічого не забув! Я все ще вчусь, але зараз я маю стартап, який виконує дійсно велику програму ... тому це окупилося.
мартньо

1

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

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

(Це сказало, що я все-таки значно покращився в програмуванні протягом своїх перших шести місяців або близько того на реальній роботі (тм). Не те, щоб я закінчився після цього, але це тоді, коли це було дійсно багато.)


1

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

З часом деякі закінчені колеги вдосконалювали свої навички значно, а інші - і це не було пов'язано з їхнім середнім балом.


1

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

Але це нормально. Кожна робота, яку я розпочав, я, мабуть, недостатньо кваліфікована. Якщо ви впевнені у своїх силах та віддані навчанню, то можете активізувати свою роботу.


1

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

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

Ось чому важливо залучити більш досвідчених колег до наставництва. Підійдіть до них і скажіть: "Це, як я думаю, з цим слід впоратися. Чи можете ви придумати кращий спосіб?" Це дає вам користь як від досвіду з'ясувати це для себе, так і навчитися досвіду інших.


0

Я був кращим програмістом, ніж мої викладачі в університеті.

Тоді я засвоїв чудові практики програмування, коли почав працювати.


0

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


0

Одне з речей, про яке ніхто не згадував, - це те, що проблеми, які вам дають вирішувати в школі, свідомо скидаються вниз, щоб легко зрозуміти, як використовувати як конкретну техніку, яку ви навчаєте. Зазвичай ви знаєте, яку техніку ви повинні використовувати для вирішення конкретної проблеми, тому що це саме те, що ви накрили в класі. Цілі семестрові проекти є трохи вигідними, але все ще обмеженими за обсягом і складністю порівняно з реальним світом.

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

Ви застрягли в світі, де час на розвиток розвивається сильно обмеженим тим, що клієнт заплатить і які, часом (добре, звичайно) штучні, терміни.

Можливо, ви будете обмежені у використанні інструментів, які спеціально запитував клієнт. У вас можуть бути розпливчасті вимоги або вимоги, які мало сенсу. Ви можете мати справу з дуже складною діловою сферою, про яку ви нічого не знаєте, і, таким чином, навіть не можете судити, чи мають вимоги сенс.

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


0

Гірше за це ... через кілька років на цій роботі ви будете почувати себе досить добре щодо того, що ви дізналися. Але тоді ви поміняєте роботу, і ваша нова компанія (або, можливо, навіть нова група в тій же компанії) зробить справи по-іншому, і ви відчуєте, що ви знову на площі. Будуть різні коди, різні стандарти кодування, різні інструменти та різні процеси, і через два дні цього вам стане цікаво, чи справді ви дізналися щось взагалі на своїй останній роботі. Цього разу ви швидше подолаєте почуття риби з води, але це займе більше часу, ніж ви хочете.

Наближається період адаптації щоразу, коли ви змінюєте завдання. Він стає коротшим у міру набуття досвіду, але він завжди є.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.