Як бути успішним програмістом без ступеня CS [закрито]


46

Відмова від відповідальності (Будь ласка, прочитайте, перш ніж перейти до відповіді):

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

ІМХО Вони ні про що, про що я прошу, вони не є цілком ретельними, як я сподіваюся (я не маю на увазі відповісти на наведені нижче запитання, а також не дискредитую запитуючих, я просто хочу бути трохи ретельніше):

Чи може ступінь CS принести користь старшому програмісту?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-for-java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-speak

Важливість ступеня CS при поданні заявки на роботу з розвитку?

Дозвольте мені зрозуміти, я не прошу наступного:

  • Як навчити себе програмуванню з нуля (без диплому в КС)
  • Як продати себе як хорошого розробника програмного забезпечення (без диплому в CS)
  • Як влаштуватися на високооплачувану роботу в якості розробника програмного забезпечення (без диплому в КС)

Трохи контексту:

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

По-перше, мені надзвичайно пощастило. Мені було надано кілька можливостей для роботи (кілька важких задніх PHP / MySQL проектів та кілька додатків WP7 в XAML / C #), за допомогою яких я дійсно дізнався все, що знаю про розробку програмного забезпечення. Майже всі роботи з розробки програмного забезпечення, які я мав, не були належним чином кваліфіковані (і це я зрозумів своїм роботодавцям, перш ніж мене найняли). Я не хочу давати собі кредит там, де це не належить, але я б сказав, що ідеальна смиренність не обходиться скромністю .

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

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

Як я думаю, більшість розробників погодиться, вивчаючи типові загальні курси бакалаврату, включаючи вступні курси програмування АБСОЛЮТНО ПАЛЕС у порівнянні з написанням реального коду, створення реальних 2-х продуктів, роботи з чудовими людьми та позитивно впливаючи на життя користувачів 3 .

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

Однак програма інформатики в UW є дуже , дуже , дуже , дуже конкурентоспроможною.

Тож мене не здивувало, коли мене відхилили від програми. Двічі. За іронією долі, в тому ж півгодинному вікні, в якому я отримував завжди ввічливе, хоч і відверте повідомлення про відмову електронною поштою, я отримав телефонний дзвінок від Amazon, який запропонував мені літнє стажування 4 як SDE.

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

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

Ступінь математики

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

* ГЛИБНА ТОПКА * ... Вибачте, це довше, ніж я передбачав.

По суті це моє питання:

  • Як я можу об'єктивно визначити, які напрями навчання, загальні знання та інші навички я отримав би через ступінь CS, який мені зараз може бути або не вистачає?
  • Як я сортую ці вміння за найважливішим значенням?

  • Який найкращий спосіб (протягом наступних двох років) доповнити мою освіту, щоб досягти цих атрибутів таким чином, щоб вони відповідали або навіть перевершували рівень CS-ступеня з вищого університету?

Ось такі кроки, які я вже роблю:

  1. Запитайте спільноту розвитку (ця публікація)
  2. Дотримуйтесь наставництва з досвідченими розробниками, які поділяють зі мною аналогічний шлях кар'єри
  3. Визначте коротко- та довгострокові цілі "навчання" та наступні програми, що окреслюють теми навчання
  4. Продовжуйте писати код та працювати над проектами, якими я захоплююсь

Якщо ви до цього дійшли, ви заслуговуєте на печиво :) Я вдячний, що ви ставитеся до мене.

Отже ... спільнота розвитку, досвідчені розробники, однокурсники, які перебувають у тому ж човні, що і я, яку б порадували ви?

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

Оновлення:

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

Через розумний проміжок часу я оберу відповідь, яка відповідає наступним атрибутам:

  • Пояснює, чому стоїть їх відповідь
  • Я можу говорити з певного рівня досвіду (будь то найм / взаємодія з чи хтось, хто має / знаходиться в моєму взутті)
  • Короткий, але ґрунтовний, дає широкі принципи, переважно поєднуються з конкретними прикладами
  • Нарешті, враховуючи довжину, яку, можливо, вимагатиме відповідність вищезазначеному, будь ласка, зробіть це гарною добре повідомленою відповіддю, яку приємно читати. Інші, хто може зацікавитись цим у майбутньому, я би сподівався, що будуть розважатись, а також отримувати освіту від відповіді.

Тож є деякі параметри для "правильного". Думаю, вони дуже високі, але я створив їх як начерк для того, на що я вважаю, що найкраща відповідь. Очевидно, що дано достатньо часу, я виберу найближчу відповідь як "відповідь".


(1) - Я працював над попередньою версією цього веб-сайту, і поки у нас не було явного 
      розмовляючи про це, я відчував, що мені взагалі не вдається зробити дуже добре (це може бути 
      про що свідчить той факт, що з тих пір вони повністю змінили свій веб-сайт)
(2) - По-перше, так, це справжній продукт (хоч я і пишу цю публікацію в Chrome ...), і
      вона б'є попку. По-друге, я був стажером середньої школи в тесті, писав докази
      Код концепції для деяких нових функцій для IE8 ... так це було деякий час тому.
(3) - На момент цієї публікації я розробник, який написав цю програму, я більше не є
      відповідає за свою кодову базу
(4) - Моє стажування розпочнеться у червні 2012 року, і я працюю у Веб-магазині 
      команда.

17
Світ потребує більше програмістів із ступенем математики. Нафф сказав.
Пітер Б

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

16
Почніть з редагування цього питання і розріжте його навпіл.
JeffO

8
@PaulHazen, як тільки ви видалите свій надзвичайно багатослівний фон та вміст з відмовою від відповідальності, і перейдете до власних питань, ви запитуєте три речі: як визначити, чого вам не вистачає, щоб не мати ступеня CS, як отримати те, чого вам не вистачає , і як визначити пріоритетність того, чого вам не вистачає. Усі три питання повністю охоплені дублюваним запитанням. Якщо відповіді вам не подобаються, запропонуйте щедро : саме для цього вони і є.

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

Відповіді:


17

Гаразд, мені здається, занадто спокусливо не відповідати на ваше запитання, тож ось я ...


Спершу про мене кілька речей


Мені 26 років , і завдяки моєму батькові (btw, математик і зараз працює професором) я з самого раннього етапу свого життя мав шанс опинитися біля комп’ютерів. (ще в 1986 році, коли я народився, хоча це не найпоширеніше в ті часи, у нас вдома завжди був один чи два комп’ютери). Це було сказано, і - очевидно, через мій цікавий та орієнтований на вирішення проблем математику / вирішення проблем - минуло не так довго, як я знайшов закоханий у програмування. Спочатку з Паскалем, у віці 7-8 років, а потім майже все інше тільки слідувало.

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

Що сталося - це, мабуть, найбільша помилка мого життя (поки що): Як би ви це назвали, коли хтось закоханий у код , який говорить 15+ мов та написав тисячі рядків коду (від компіляторів до мікроядер та Інтернету) рамки) раптом до 18 років (причини все ще занадто неясні в моїй свідомості, але загальне, навіть якщо тонкий вплив вашого оточення ніколи не є занадто незначним) вирішує продовжити кар'єру в медицині ? Я здогадуюсь про "помилку".

Результат? Через 5 років (в 23 роки) і за 1 рік до того, як закінчити ступінь "Мед" (все ще працюю над особистими проектами програмування з відкритим кодом як хобі), я вирішив, що мені достатньо, і вирішив кинути роботу. І я не тільки так сильно ненавидів цю нову сферу (Медицина), але й те, що в цілій ситуації було щось неспокійне, ненаситний свербіж, захований глибоко всередині ... ( що це було б, якби ...? ) Більше того, я щойно зрозумів, що моє хобі , яке я вважав чудовим, але навіть не уявляв себе справжньою роботою, може не лише принести трохи грошей, але принести мені багато цього + зберегти мене щасливою як особистості. Отже, я вирішив кинути. (= найкращий вибір, навіть якщо я трохи запізнювався, я коли-небудь робив).

Отже, ось я зараз, колись буду лікарем (на межі нервового зриву, психіатром, якщо бути точним; дурним мені!), Здобувши ступінь CS (на моєму третьому курсі; і, чесно кажучи, переслідуючи це, щоб не закінчитись у тих жахливих типових кваліфікаціях ...) та більш ніж задоволеному професіоналі, що працює над тим, що я обожнюю, і, безумовно, над темою, над якою я маю запропонувати найбільше.


Кілька спостережень (з мого власного досвіду)


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

  • Для того, щоб бути хорошим програмістом, потрібен інтелект, орієнтований на математику (але НЕ математику сам) і пристрасть (це зробить нескінченні години навчання задоволенням замість тягаря; і, навіть якщо я цього не зрозумів, довіряйте мені, я вивчав ТОНИ матеріалу з цього питання в своєму житті, суто самостійно) . Формальна освіта - це приємна річ, але це трохи завищено. Основними інгредієнтами успіху є перші два.

  • Математика, безумовно, там, де народився CS. Але CS вже не лише математика. У мене завжди був сильний орієнтований на математику мозок, але я аж ніяк не гуру математики. І чесно кажучи, щодня програмування (якщо ви не будуєте графічний движок або щось занадто локалізоване), швидше за все, вам ніколи не знадобиться нічого, крім простої арифметики (додавання, віднімання, множення, ділення, модуля) та кілька речей про масиви. (багато хто не погодиться зі мною, напевно, математики або занадто академічно орієнтовані програмісти, але, безумовно, освоєння обчислення НЕ, що потрібно, щоб бути хорошим програмістом). Маючи хороший математичний фон, можливо, вам допоможе, але НЕ через саму математику; це допоможе вам виключно на основі однієї загальної речі, яка стосується цих двох галузей: навички вирішення проблем.

  • Математика - це наука (і наука, яку я поважаю).

  • Програмування - це мистецтво. (І прикладну науку, якщо ви також наполягаєте) Але майте це на увазі: мистецтво - і так я завжди ставився до цього. Як і у всіх мистецтвах, цього не можна вчити. Я можу навчити вас формальному способу намалювати обличчя і зробити вас кращими від середнього, але це не зробить вас ні Да Вінчі, ні Клімта. Мону Лісас малює Да Вінчіс, а не ретельно освічені живописці. Чудовий код написаний великими художниками коду. А вміння та відданість можуть легко збалансувати офіційну освіту.


Отже, що потрібно, щоб стати * дійсно * хорошим програмістом?


  • Розумність, чудові навички вирішення проблем та пристрасть до теми (якщо у вас її немає, просто залиште її; посередність - це не привід)
  • Багато часу присвятити цій темі
  • Вивчаючи весь час ("тому що ви просто ніколи цього не знаєте; і зауважте: чому" навчання "має бути пов’язане певною мірою? Мені завжди було набагато приємніше робити справи у своєму темпі ... )
  • Введення коду весь час (незалежно від того, скільки книг ви прочитали; ваш рівень кодування прямо еквівалентний кількості написаного вами коду)
  • І знову ЛЮБИТЬ за тему (якщо ви її не любите достатньо, а я маю на увазі справді її любити, все вищезазначене рано чи пізно стане нестерпним; для мене кодування як роботи все одно як плата за .. перегляд фільмів: абсолютно абсурдно, але все ж просто чудово)

На ваші запитання


  • Як я можу об'єктивно визначити, які напрями навчання, загальні знання та інші навички я отримав би через ступінь CS, який мені зараз може бути або не вистачає?

Хоча я повинен був би справді знати, що входить до математичного ступеня, дозвольте підвести підсумки того, що вам, швидше за все, не вистачає ступеня CS (як курси / предмети / тощо - надихнувши програмою навчання мого університету ), не в конкретному порядку :

  • Логічний дизайн цифрових систем (деякі матеріали низького рівня та / або / xors / тощо - здавалося б, не надто пов'язані, але все ще дійсно освітні)
  • Комп'ютерна архітектура (разом з деяким кодуванням Асамблеї; ви, швидше за все, ніколи не будете використовувати її, але ви не можете сказати, наскільки це може сформувати ваше ставлення як програміста)
  • Структури даних (від пов'язаного списку, до складних дерев тощо); настільки просто, як може здатися, рано чи пізно вам знадобиться хороший фон для цього; використання готових рішень, які ви не розумієте, не є чимось хорошим програмістом зробив би)
  • Компілятори (так, компілятори! Ви коли-небудь напишете компілятор? Мабуть, ні; але якщо ви не зможете написати його, ви ніколи не дізнаєтесь, як все працює ...)
  • Операційні системи (ті ж, що вище)
  • Комп'ютерні мережі
  • Штучний інтелект та експертні системи (ви, швидше за все, ніколи не кодуєтеся в Prolog; але це все одно одна з речей, яка може сформувати ваш кодуючий мозок і змусити його бачити речі з кардинально іншої точки зору)
  • Як я сортую ці вміння за найважливішим значенням?

Знання, що робити пріоритет у полі, що постійно змінюється, оскільки CS завжди буде азартною грою - грою на здогадки .

Ознайомтеся з тим, що ви хочете зробити, і довіряйте своєму інстинкту. Звичайно, наявність ґрунтовних базових знань є обов'язковим. Але те, що ви будете поглиблювати, повністю залежить від вас. Крім того, ретельно сплануйте свою кар'єру: якщо ви хочете працевлаштуватися, то виберіть свою ціль і будьте чудовим у цьому (наприклад, бажаючи бути працевлаштованим у Google та не знаючи, як читати простий скрипт Python, мабуть, одна з таких непрохідних ситуацій ) . Якщо ви починаєте щось самостійно (компанія), то у вас немає «начальника», який би задовольнив; просто виберіть те, що вам найбільше підходить.

Наприклад, якщо ви хочете зробити щось, пов’язане з Інтернетом, я б напевно радив вам звернутися до: PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX) . Але це тільки я. Комусь може сподобатися (або побачити більше майбутнього в) Ruby / Rails, ніж у PHP.

Я, наприклад, зараз передусім кодую Objective-C / Cocoa . Я б радив вам це робити? Точно ні. Тобто: якщо ви не користуєтеся Macs або не хочете кар’єри з продажу програмного забезпечення, пов’язаного з Mac / iPhone. Якщо ви займаєтесь розробкою Windows, перехід на C # / .NET Framework , можливо, буде найкращим вибором. (якщо ви хочете отримати уявлення про те, в чому я в основному, просто загляньте в мій профіль StackOverflow )

  • Який найкращий спосіб (протягом наступних двох років) доповнити мою освіту, щоб досягти цих атрибутів таким чином, щоб вони відповідали або навіть перевершували рівень CS-ступеня з вищого університету?

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

Ну, і спробуйте влаштуватися на роботу в будь-якому, що стосується коду. (Я вперше почав працювати фрілансером, і це був дуже цінний досвід, просто побачити, як все реально працює в реальному світі).


Просто мої .2 дружні центи ... :-)

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


Це саме те, що я шукав. Дякую! Практично кожна відповідь була також хорошою, дуже мало містило щось, що було неправильним чи не корисним. Я оновлюю питання, щоб включити невеликий розділ про те, чому я вибрав це, і посилання на допис у блозі, який детальніше розробляє його (причина розміщення такого пояснення в моєму блозі замість програмістів пов’язана з тим, що ВЕЛИЧАСНА тривалість публікації, а також зростаюча кількість зацікавлених модераторів, які вже вважають, що це питання не підходить для цього сайту). Залишайтеся в курсі. І ще раз дякую.
Пол Хазен

@PaulHazen Ви дуже раді! Рада, що допомогла (якби я це зробила) ... (Тепер, що стосується ВЕЛИЧЕЗНОЇ тривалості моєї відповіді ... так ... Система автоматично розпізнала це як повідомлення "вікі спільноти", і я намагаюся отримати модератори повертають його до початкового стану: простий - хоч трохи відредагований - відповідь)
Dr.Kameleon

На мета ( meta.programmers.stackexchange.com/questions/3513/… ) я насправді заохочую їх перенести його до більш відповідного пункту призначення. Відповідно до офіційного FAQ, це питання не підходить для цього форуму. Однак, спостерігаючи фактичне використання програмістів, я вважаю, що тут доречно бути. Модератори можуть вирішити, де це найкраще підходить. Підводячи підсумки моїх думок щодо його переміщення: відповідно до того, що передбачається Програмістам, сюди не належить, але відповідно до тих, хто програмістів , це ідеально підходить.
Пол Хазен

@PaulHazen Ну, принаймні, для мене (хоча я аж ніяк не експерт з питань ТО), це здається абсолютно доречним.
Dr.Kameleon

Так, я просто кину руки в повітря. Поки люди можуть використовувати google або обмін стеками, щоб принаймні знайти відповіді, я задоволений. Люди, які мають те саме питання, надалі мають легко виявити зміст.
Пол Хазен

18

Як я можу об'єктивно визначити, які напрями навчання, загальні знання та інші навички я отримав би через ступінь CS, який мені зараз може бути або не вистачає?

Перегляньте навчальну програму відділу CS в UW, запозичіть і перегляньте необхідне читання, подивіться попередні іспити та лабораторні вправи (домашні завдання). Якщо ви не маєте уявлення про те, як би ви підійшли до проблеми, ви маєте дірку у своїх знаннях.

Як я сортую ці вміння за найважливішим значенням?

Подумайте, яким саме програмуванням ви хотіли б займатися в майбутньому. Якщо ви раді створити веб-сайти та програми CRUD, вам здається, що ви вже маєте всі необхідні знання.

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

Який найкращий спосіб (протягом наступних двох років) доповнити мою освіту, щоб досягти цих атрибутів таким чином, щоб вони відповідали або навіть перевершували рівень CS-ступеня з вищого університету?

Я не знаю. Для мене найбільша перевага університету полягала в тому, щоб 1) розширити свій кругозір (я забув 90% деталей, які я дізнався в університеті, але пам’ятаю концепції та ідеї), і 2) зберігати свою внутрішню мотивацію до вивчення цього матеріалу зменшується: легше підтримувати мотивацію, коли ви працюєте над ціллю - іспит, інший іспит тощо, поки не закінчите навчання. (Крім того, структурування самоосвіти - непросте завдання.)

[Додано: вибирайте університет, програму CS, який ви хотіли б відвідувати, вибирайте курси за темами, які вас цікавлять, і самостійно пройдіть навчальну програму: домашні завдання, іспити тощо. Більшість курсів публікують слайди лекцій та завдання / іспити з попередніх років .]

Слово поради, хоча: НЕ відмовляйтесь від ступеня математики. Будь-яка яскрава людина може навчити себе програмуванню, але математика дасть вам конкурентоспроможне перевагу, якщо ви коли-небудь захочете працювати над іншими програмами, крім CRUD / frontend, наприклад, флюїдних та механічних моделювань, комп'ютерної графіки, обробки зображень, розпізнавання та програм машинного навчання, (навіть фінанси!) тощо.

ОНОВЛЕННЯ 2 - досвід [довгий]: Я здобула ступінь магістра на факультеті EE: перші два роки були загальною навчальною програмою (фізика, електротехніка, аналогова та цифрова електроніка та багато математики - лінійна алгебра; дискретна математика; реальна, векторна та комплексний прикладний аналіз.) Це було дуже цінним, особливо. частина EE та електроніки - це дозволило мені працювати над змішаними проектами HW-SW, і співпраця з дизайнерами HW була дуже захоплюючою. Я нічого не сприяв проектуванню HW, але мені вдалося простежити за тим, як дизайнер HW "налагодив" його схематичну схему і задав розсудливі запитання [ми були не впевнені, помилка була у SW чи HW - виявилося, що це була в HW: -)].

Потім лінії розгалужуються, і я вибираю лінію CS. Деякі "деталі" сприяли втіленню понять (наприклад, "вручну" керування алгоритмом Дійкстри). Також я дізнався деталі про те, як працюють центральні процесори (сигнали шини, інтерпретація діаграм шини, виконання тощо) на прикладі вже застарілого Motorola 68000, але поняття, вивчені через деталі, не дуже відрізняються і для сучасних процесорів.

Інші деталі, особливо Впровадження SW (наприклад, реалізація Dijkstra) було для мене [оскільки я дуже добре кодую в середній школі] безглузду вправу налагодження і сприяв ZERO для розуміння понять.

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

Отож, деякі деталі були корисними для вбудовування концепцій, а деякі - явно непотрібний тягар (ще один приклад: програмування послідовного порту зв'язку між двома комп’ютерами. Я вже тоді звик читати та інтерпретувати HW-характеристики та програмувати HW через регістри, тож це було просто. Можливо, я наївний, припускаючи, що середнім інженерам, які перетворюються на CS, не потрібно навчатись, як читати документи HW).

На закінчення: розкрийте себе багатьма різними поняттями (ідеї високого рівня) і детально розгледіть ті, яким ви хочете визначити пріоритет і стати надзвичайно хорошими. [Ви НЕ МОЖЕТЕ бути надзвичайно гарним у всьому!]


+1 точно. Незважаючи на те, що ви забули 90% деталей, ви б сказали, що досвід вивчення цих деталей був тим, що вбудовувало поняття та ідеї, чи було б більш цінним вкладати час на вивчення меншої кількості деталей та більше концептуальних і вищих ідей ?
Пол Хазен

@PaulHazen Дивіться нову редакцію (починаючи з UPDATE2 - вона не вписується в поле коментарів;))
zvrba

Дуже підтверджую кроки, які я зараз роблю. Доданий розділ є неоціненним. Мені здається, що перелік речей, про які я хочу дізнатися деталі, є занадто довгим, щоб бути розумним, я історично маю проблему з визначенням масштабів у цьому плані. Чи є хороший спосіб поглянути на галузь та визначити, які теми в межах тих, що мене цікавлять, було б найвигіднішим, щоб дізнатися деталі? Або ви скажете, що насправді не важливо, з яких я навчаюсь, поки я глибоко пірнаю на менший набір з них? Здається, галузь може складно передбачити в цьому плані.
Пол Хазен

1
Намагаючись прогнозувати галузь - це гра, яка програється наперед [наприклад, я не впевнений, що хтось міг здогадатися, що Twitter - (майже) клон IRC для Інтернету - стане такою принадою. Для мене досі залишається загадкою, як вони мають намір заробити гроші в довгостроковій перспективі.]. Ви повинні взяти активний вибір щодо того, якою роботою ви хочете займатися, і з’ясувати, що потрібно для цього. Як? Знайдіть когось, хто вже працює у вашому цільовому індустрі (так | і), і поговоріть з ними.
zvrba

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

7

Я беру інтерв'ю та беру участь у наборі багатьох молодших людей, котрі вийшли з коледжу. Мені ще не потрібно найняти когось, виходячи з предметних навичок, які вони взяли з тієї програми, яку вони взяли. Причина цього проста: жодна програма CS (або будь-яка інша програма), з якою я стикався, не навчає конкретних навичок, пов’язаних із програмуванням або розробкою програмного забезпечення, що стосується професійного, комерційного рівні. Уміння викручувати моделі та рішення складних диференціальних рівнянь та писати оптимізовані алгоритми сортування спеціального призначення може мати академічну та / або наукову цінність, але це не має жодного стосунку до загальної розробки програмного забезпечення.

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

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

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

Моя порада: продовжуйте ступінь математики, якщо це щось вас цікавить. Будь-яка наукова освіта ви будете серверною, тому виберіть ту, яка вам найбільше сподобається, тому що це саме те, в якому ви, найімовірніше, маєте перевагу. структурований спосіб, як взаємодіяти та співпрацювати з іншими людьми, як взяти на себе керівництво та відповідальність як за свою, так і за свою команду. Решта - це лише технології та кодування, інструменти торгівлі. Тих, що ви можете і навчитесь самостійно. Візьміть і вивчіть деякі знання загального призначення, наприклад, популярні моделі дизайну та архітектурні парадигми. Почніть писати програми на практиці. Виберіть базу мови та технологій, яка є досить сучасною, але не помиляйтесь, думаючи про це " s заключний ви дізнаєтесь. Інструменти та мови весь час змінюються, так що розробка програмного забезпечення все одно є постійним процесом навчання.


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

Я працюю в ІТ-консалтинговій компанії, яка набирає значних зусиль у діапазоні досвіду 0-1 років. Не можу відповісти впевнено щодо магазинів розвитку ОС (скільки їх є?), Але я б припустив, що те саме відбувається, якщо вони розумні. Дуже мало градоначальників матимуть достатньо навичок предметної тематики, щоб бути конкурентоспроможними лише в цьому, тож ви наймаєте на себе ставлення, потенціал та вміння вчитися.
пап

Цікаво. Чи дав вам "+1", і мені подобається те, що ви маєте сказати більше, ніж хто-небудь інший, проте ви точніше відповідаєте на питання "як я успішно потрапляю у сферу розробки програмного забезпечення" Неоціненна інформація, напевне , але мій інтерес полягає в розумінні атрибутів успішного програміста, а не в атрибутах захопленого програміста (так, очевидно, успішні програмісти також є прихованими, але це не завжди іде навпаки).
Пол Хазен

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

7

По суті, це моє запитання: Як я об'єктивно визначити, які напрями навчання, загальні знання та інші навички я отримав би через ступінь CS, який мені зараз може бути, а може і не бракуватиме?

Відповідь 1

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

А1. Чому саме

Ступінь CS концептуально стосується навчання. Якщо людина повертається із ступеня CS без чистої різниці, то її основна мета не виконується. Іспити та курсові роботи - це «офіційний» показник того, що було вивчено. Однак індивідуальне розуміння (чи я дізнався чогось нового?) Повинно бути кращим об'єктивним заходом.

А1. Досвід

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

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

Як я сортую ці вміння за найважливішим значенням?

Відповідь 2

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

А2. Чому саме

Важливість «сфери» сильно залежить від «контексту». Без контексту достоїнства навичок важко сортувати.

А2. Досвід

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

Який найкращий спосіб (протягом наступних двох років) доповнити мою освіту, щоб досягти цих атрибутів таким чином, щоб вони відповідали або навіть перевершували рівень CS-ступеня з вищого університету?

Відповідь 3

Натисніть на себе за межі зламу, а коли ви перервитесь, продовжуйте ламати себе знову.

Що я маю на увазі?

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

А3. Чому саме

Якщо ви тільки навчитесь і будете знаходитись у межах своєї межі, вам буде лише "гаразд". Ви не хочете бути просто "добре". Ти хочеш бути "найкращим", яким ти можеш бути. Ви не можете досягти свого реального потенціалу, якщо НЕ КОНСТИТНО висунетесь за вашу межу.

А3. Досвід

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

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


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

І приємні оновлення. Зберігайте віру, я не забуду відзначити відповідь як таку, коли настане час.
Пол Хазен

1
Не могли б ви очистити свою відповідь? У вас є дві повторювані заголовки розділів з різним, але схожим вмістом під кожним.
Пол Хазен

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

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

4

Як я можу об'єктивно визначити, які напрями навчання, загальні знання та інші навички я отримав би через ступінь CS, який мені зараз може бути або не вистачає?

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

Як я сортую ці вміння за найважливішим значенням?

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

Який найкращий спосіб (протягом наступних двох років) доповнити мою освіту, щоб досягти цих атрибутів таким чином, щоб вони відповідали або навіть перевершували рівень CS-ступеня з вищого університету?

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

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


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

Я не бачив, щоб хто-небудь рекомендував брати CS-класи для факультативів, що багато людей не знають, що це дозволено. Близьке дублювання решти є результатом задачі величезного багатостороннього запитання :-)
Карл Білефельдт,

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

3

Чому ви вважаєте, що ступінь CS так важливий, щоб бути успішним програмістом ?

Що потрібно для успішного програміста:

  • Пристрасть до програмування
  • Невпинна жага знань про нові технології
  • Зайдіть у галузь якось

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

Схоже, ви вже потрапили у галузь, і, безумовно, відчувається, що у вас є і пристрасть, і спрага до знань.

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

Приклад від когось, з ким я працюю

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


Хоча це чудовий зміст, я вважаю, що він не дуже вражає відповідь на моє запитання (щось, що може бути моєю провиною в неправильній формулюванні). Я не впевнений, що ступінь CS робить одного успішного програмістом. Моє запитання більше "яка з тем, які викладаються в рамках ступеня CS , як правило, сприяє успіху програміста, і як я об'єктивно визначити, як я вимірюю ці теми, і як доповнення / збагачення моєї існуючої пристрасті, голоду за знання та досвід галузі з такими темами? " Ваша відповідь, безумовно, не помилкова.
Пол Хазен

2

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

З публікації видно, що ви отримуєте великий досвід / стажування. Чудово! не турбуйтеся про те, щоб отримати роботу після закінчення навчання.

Щоб спробувати відповісти на ваші запитання:

заняття? вибрати декілька теоретичних класів CS, а не заняття з написання коду. Знайдіть деякі класи, що не стосуються CS / математики, наприклад. філософія це допоможе вам виділитися з натовпу

пріоритети? вивчайте нові речі (не просто легкі заняття, які ви наполовину знаєте)

наступні два роки? спілкуватися з людьми, вчитися, будувати стосунки, шукати зовнішню діяльність. (Хобі / спорт / проведення часу поза роботою / навчанням - це одна підказка, щоб зрозуміти, наскільки мотивований абітурієнт.)

Остаточні поради: закінчіть, як тільки зможете. Побудувати мережу контактів. І єдина безпечна робота - це створення власної роботи. Шукайте ідеї / можливості, де можна розпочати власний бізнес. Удачі.


Це чудово, дякую за вашу відповідь. Я даю "+1", однак я не можу відзначити це як відповідь, інші відповіді ретельно визначають, чому , а також визначили способи об'єктивного визначення цілей навчання. Ніщо з цього не заперечує вашу відповідь, я приймаю те, що ви говорите до серця, і це справді корисно, тому ще раз дякую.
Пол Хазен

@PaulHazen - якщо ви хочете знати "чому?" потім виберіть клас філософії :-) Але серйозно, я зробив 4-річний теоретичний ступінь CS, де не було курсу C, тому що "це те, чого ви можете навчити себе". Як і виклик, це була велика група людей та освіжаючі ідеї. І ваше запитання наочно демонструє, що ви маєте навички письма, необхідні для будь-якого класу, що не відповідає математиці / CS.
jqa

1

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

Я думаю, що я міг би вважати себе трохи успіхом у цій галузі. Я маю певний досвід коледжу і хотів би врешті-решт закінчити навчання в коледжі з комп’ютерних наук, але я досі не здобув наукового ступеня в цьому моєму житті. Однак я мав досить великий успіх в інженерії програмного забезпечення, незважаючи на цей недолік (тривав 10 років). Я маю бути чесним з тобою, хоча це було не обов'язково робити легким (я, звичайно, став би, що все, що варто робити, найчастіше НЕ найпростіше). Я також скажу, що це все-таки не найпростіша річ. Є багато компаній, які готові дати шанс правильному кандидату, але я вступив у контакт з іншими, які будуть хизуватись відсутністю цього «коледжу затвердження» в коледжі. Однак,

Він розпочався у .net у дуже великій компанії. Як малий непрограміст (у той час працював представником служби технічної підтримки), я дізнався все, що міг про мови та технології, що застосовуються до компанії, в якій працював. Крім того, і це, мабуть, найважливіше, я підключився до мережі. Я відправив електронний лист кожній особі, яку я міг знайти в каталозі, в якому написано інженером програмного забезпечення. Мене дратувало? Мабуть. Я завжди був чемним і самозахищеним із бажанням вчитися. Я б запланував обіди або просто знайшов їх у їдальні і сів, щоб спробувати поговорити. Іноді це було бентежно, інакше я би розчарувався, але врешті-решт це отримало очікувані результати. Мені вдалося отримати невеликі облікові дані для деяких внутрішніх баз даних і через деякий час придбали необхідні облікові дані для розробки програмного забезпечення на їхній власній платформі. Незабаром після цього я опинився в позиції компанії, щоб надати деякі навички в розробці внутрішніх інструментів для групи аналізу, над якою працював у той час. Звідти я завжди просто прагнув бути найрозумнішим хлопцем у кімнаті самим невибагливим способом. Я був нетерплячий і переконався, що всі це знають. Я завжди намагався запропонувати рішення, де це можливо, і вважав, що якщо ви постараєтеся досить, існує дуже мало проблемних областей, які неможливо вирішити (можливо, поза квантовою теорією). Я опинився в становищі компанії, щоб надати деякі навички в розробці внутрішніх інструментів для групи аналізу, над якою працював у той час. Звідти я завжди просто прагнув бути найрозумнішим хлопцем у кімнаті самим невибагливим способом. Я був нетерплячий і переконався, що всі це знають. Я завжди намагався запропонувати рішення, де це можливо, і вважав, що якщо ви постараєтеся досить, існує дуже мало проблемних областей, які неможливо вирішити (можливо, поза квантовою теорією). Я опинився в становищі компанії, щоб надати деякі навички в розробці внутрішніх інструментів для групи аналізу, над якою працював у той час. Звідти я завжди просто прагнув бути найрозумнішим хлопцем у кімнаті самим невибагливим способом. Я був нетерплячий і переконався, що всі це знають. Я завжди намагався запропонувати рішення, де це можливо, і вважав, що якщо ви постараєтеся досить, існує дуже мало проблемних областей, які неможливо вирішити (можливо, поза квантовою теорією).

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

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


1
Мені дуже погано, що я не можу відзначити це як відповідь. Як і в багатьох інших відповідях, ви нічого не кажете, я вважаю, що це неправильно , але ви повністю зосереджуєтесь на тому, як продовжити мою кар’єру, коли суть мого питання полягає в тому, як бути успішним програмістом. Хоча успішний програміст має на увазі хорошу кар’єру, я б краще зосередитись на аспекті «успішного програміста», і дозволити, щоб частина кар’єри була (важливою і дуже навмисною) після роздумів. Я даю вам "+1", хоча за цінну інформацію, яка частково відповідає на моє запитання.
Пол Хазен

О, і кажучи про мережу, я хотів би більше дізнатися про вашу історію! Здається, ми поділяємо багато одного і того ж шляху / цілей. Не соромтеся обрати той спосіб контакту, який найкраще підійде для вас на веб- сайті paulhazen.net/about , і ми захопимо це пиво.
Пол Хазен

1

По-перше, дозвольте мені LOL на "лаконічну, але ретельну" умову наприкінці вашого грандіозного опусу. Перейти до бізнесу:

Як я можу об'єктивно визначити, які напрями навчання, загальні знання та інші навички я отримав би через ступінь CS, який мені зараз може бути або не вистачає?

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

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

Як я сортую ці вміння за найважливішим значенням?

Дізнайся, що ти любиш

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

Навчіться вчитися і натискайте на себе

Я думаю, що це призводить мене до двох мета-навичок, які я б розмістив над рештою: навчитися речам ненажерливо і наполегливо працювати. Це може здатися кліше і болісно очевидним, але поєднання зустрічається рідко. Я був по всій карті з точки зору необхідних навичок - передового HTML / javascript до розширення мови, розвитку мобільних пристроїв до комп'ютерного зору до системного адміністрування і назад, понад 7+ мов. Єдина справжня основна майстерність у всьому, що зробило подолання мого власного незнання звичкою.

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

Який найкращий спосіб (протягом наступних двох років) доповнити мою освіту, щоб досягти цих атрибутів таким чином, щоб вони відповідали або навіть перевершували рівень CS-ступеня з вищого університету?

  1. Неважливі класи CS

    Як і ви, відділ CS в UW мене відхилив ... хоча я думаю, що я дозволив їм зробити це втретє, перш ніж прийти до тями. Я закінчив фах з інформатики та малінгерів з прикладної математики. Але я все-таки взяв увесь не основний трек CS. Це CSE 373, 410, 413, 415 та 417. Тож, я впевнений, я вважаю, що спочатку слід слідувати за своєю пристрастю. Мої ведуть мене до тих занять. І я думаю, що ви отримуєте з ними досить всебічну основну освіту, хоча це може бути трохи світлим з теоретичного боку.

    Зараз ось ось класна річ: з інформатики більшість із них зараховуються до моїх необхідних факультативів. У відділі математики вам може знадобитися отримати чітке схвалення, і це може бути розтяжкою для будь-якого, крім CSE 417.

    Виклик вгору запит DARS (ймовірно UWNetID тільки посилання) і побачити , де речі коштують. Раніше я робив це для різних спеціальностей ad nauseum .

  2. AMATH Класи

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

    Чому я це згадую? Числові обчислення - наприклад, AMATH 301/352 - є величезною таємницею для більшості програмістів. Якщо ви нічого не отримаєте від цього, ви зможете писати цікаві пости в блозі . Але я заперечую, що знання проблем, що стосуються числових типів мови, та вміння їх вимірювати та покращувати, є досить важливим.

  3. Будуйте щось!

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

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

  4. Отримати роботу

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


ЦЕЙ. Це дуже добре. Насправді я вважаю це більш ніж достовірною відповіддю. Помічена відповідь була лише трохи валіднішою ... * зітхання * так важко судити з такою великою кількістю чудових відповідей :( Бажаю, я можу допомогти вашій репутації більше. Але, оскільки я знаю вас у реальному житті (але в основному через щебетання, як ми раніше я обговорював ха-ха), мені доведеться придбати вам пиво чи якийсь віскі як розраду втіхи.
Пол Хазен

-2

Існує більше кількох історій про те, що люди стають мільйонерами ще до того, як закінчити коледж, можливо, я найбільше чую Білла Гейтса. Люди з нішевими здібностями, як правило, роблять краще без ступеня, ніж печиво з печаткою випускника CS.

Знайдіть щось, в що потрапляє дуже мало людей, як правило, щось, що нудно, нудно або важко навчитися, і добре це засвоїти, одержимо це. Деякі області, про які я чув, - це матеріали Unix Back End (не Linux, хоча Linux не відстає від попиту), Flash (я не знаю достатньо про спалах, щоб точно пам’ятати, що це було, але я знаю хлопця, який переїхав швидко пізнавши це, і він сказав, що для цього існує ринок, в основному тому, що люди кажуть, що він вмирає, і цього не навчиться). Можливо, вам знадобиться пройти кілька занять, але якщо ви знаєте свої речі та маєте вражаюче портфоліо, там є бізнес, який вам знадобиться!


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