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


1050

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

Я намагаюся вдосконалити свої знання, вивчаючи алгоритми, але це довгий і болісний процес. Мені алгоритми вважаються важкими, і швидкість, яку я навчаю, минуло десятиліття, перш ніж освоїти матеріал у книзі. З огляду на мою сьогоднішню ситуацію, я витратив місяць на пошуки роботи, але мої навички (C, Python, Objective-C) відносно неглибокі і не так бажані на місцевому ринку, де C #, Java та веб-розробка значно вищі попиту. Це не означає, що можливостей для C та Python не існує, але вони, як правило, вимагають досвіду 3+ років у мене немає. Мій GPA нормально (3.0), але він недостатньо високий, щоб подати заявку на великі компанії, такі як IBM, або повернутися до аспірантури.

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

Я збираюся розгорнути свою сітку ширше і зазирнути за місто, в якому я виріс, але що намагалися зробити інші люди в подібній ситуації? Я багато працював, але не маю впевненості вийти самостійно і написати власний додаток. (Тобто, став інді-розробником на ринку додатків для iPhone.) Якщо нічого не з’явиться, мені потрібно буде розглянути можливість модернізації та вивчення більш популярних навичок або спробувати щось незначно пов'язане, наприклад, ІТ, але враховуючи всі зусилля, які я доклав, як викидання.

Відповіді:


533

Найкращий спосіб навчитися програмувати - це писати програми.

Дві пропозиції:

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

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

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

  • Ще одна річ - « читати книги та зразки », і не соромтесь просити. Якщо ви хочете навчитися, то запитайте :)

70
+1 Погоджено. І якщо ви не хочете займатися цим завданням у свій час, це, можливо, не найкращий шлях для кар’єри для вас. Якщо ви зараз зібрали речі, ви можете створити портфоліо, яке може доповнити ваш GPA.
Кріс

68
@Chris, -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
"Добре знати одну мову" -> неправильно. Знаючи одну мову є НЕ достатньо. Знання кількох мов - це добре, вивчення ще більше мов - ще краще.
Denilson Sá Maia

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

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

7
@Denilson, ти міг вивчити кілька мов, не вивчивши спочатку одну мову?
Péter Török

141

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

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


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

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

11
"Проблемна область була добре зрозумілою (ваш професор не давав вам жодних завдань, які не вписувались у ваш семестр.)" Це одна з найбільших проблем освіти з інформатики. Є кілька програм CS або інженерії програмного забезпечення, які вирішують цю проблему, але більшість не змушує вас задуматися поза межами. Вам справді потрібно брати участь у власних проектах. Якщо ви не знаєте, як був побудований 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 - Ви самі це сказали - "Якщо у вас немає фінансових обмежень". У будь-якого недавнього випускника коледжу виникне ця проблема, якщо вони не живуть з мамою та татом. Я погоджуюся з Девідом М - якщо ви не можете знайти роботу безпосередньо у своїй галузі, знайдіть якусь роботу. Покажіть, що ви не просто сидите. Потім, коли ви не працюєте на денній роботі, продовжуйте вчитися вночі та розуміти свою сферу через проекти тощо. Звичайно, також телефонуйте та надсилайте резюме.

Будь-яка робота виглядає краще на резюме, ніж розрив.
Джим C

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

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

59

Ви подивилися на ProjectEuler ? Я навчив себе Python, роблячи проблеми на цьому сайті. :] Якщо ви вивчаєте Java або C #, можете спробувати це. Також рекомендую спробувати свої сили і на програмуванні GUI.

Редагувати:

Ось чудова тема щодо SO для багатьох посилань, які ви можете розглянути для практики кодування:

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


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

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

1
Я не погоджуюся з Чарльзом - Ейлер забезпечить мотивацію зрозуміти певні поняття та виконати їх.
Брам

Використовувати його як Xavier Ho здається цікавим і корисним. Тобто змусити себе опановувати ази нової мови. Я підозрюю, що PE допоможе тобі з програмуванням (у крихітному масштабі) АБО математикою; тож можна зануритися в будь-який спосіб. Ці моменти убік, я згоден з Чарльзом.

6
pythonchallenge.com є ключовим! Хоча Ейлер - це математичні проблеми, які потрібно вирішити програмуванням, pythonchallenge - це чисті проблеми програмування
Xster

48

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

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

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

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

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

Додано як післядумки:

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

Це стосується ....
Пол Натан

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

6
Не просто жіноча річ; Люди, які або вже компетентні, або здатні бачити, що їм потрібно зростати (Так! Ви!), Як правило, ставлять під сумнів власну компетенцію більше, ніж ті, хто не починає підозрювати власну некомпетентність. Існує назва цього явища. Ефект Даннінга – Крюгера. Ваш досвід у школі мав феноменальний успіх, якщо ви залишите школу, здатну продовжувати ваш життєвий шлях, незалежно від того, чим би ви не закінчились. Я бажаю вам удачі !!!
Warren P

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

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

39

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

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

  • Знайдіть співавтора . Кодування самостійно є важким, тому інша річ, яка б дуже допомогла, - якщо ви знайшли приятеля, який би співпрацював з вами в цьому проекті. Це робить його набагато веселішим і тримає вас вмотивованими. У своєму недавньому дописі в блозі Джефф Аттвуд розповідає про цю точну річ у своєму досвіді побудови ТА. 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

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

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

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


27

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

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

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

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

Зрозуміло, ви не можете бути експертом у .NET, PHP чи інших чинних галузевих стандартах, але це не має значення. Через 5-10 років мову вибору все одно зміниться. Тільки тому, що ви навчитеся їздити в Пежо, це не означає, що ви не повинні мати можливість керувати Fiat, і те саме слід застосувати до мов програмування. Треба зайняти кількамісячну практику з кількома хорошими книгами, щоб бути компетентними працювати будь-якою мовою.

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

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

Примітка. Я живу в Європі і знаю лише про європейські університетські ступені. Однак я впевнений, що рівень університету в США значно вищий, ніж в ЄС.


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

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

1
Я зустрів десятки CS-центрів - під час інтерв'ю з ними - це не могло пояснити жодних алгоритмів сортування, навіть якщо залишилося думати на п’ять хвилин. Можливо, тут університетський стандарт в штаті не застосовується цілком добре. Як вказує @Chris S, досить просто просуватися через ступінь, не навчаючись багато чого.
Дін J

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

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

24

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

Робота над вправами, як запропонували інші - в Project Euler та інших місцях.

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

Дотримуйтесь його; ти будеш добре.


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

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

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

23

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

Тут немає заміни практиці, практиці, практиці та досвіду. Програмуйте 8 годин на день і через 5 років у вас може бути розуміння того, чого вам зараз не вистачає.


6
Це причіпка-22, чи не так? Програмуйте повний робочий день, щоб отримати потрібну роботу.
Джим Шуберт

16
Ні, через 5 років ти зрозумієш, що нічого не знаєш :)
Earlz

1
@Earlz, і те, про що ти нарешті знаєш, уже застаріло.
Ден Брайант

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

1
@Earlz як дуже дзен :)
Tullo_x86

23

Таке відверте запитання, чудові відповіді - я коротко передзвоню :)

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

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

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

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

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

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

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

Хе, і, оцінюючи, для початку поділіть своє завдання на біти, підсумовуйте час, а потім подвоюйте його (воно називається, ділити, перемагати, піти додому;)

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


10
У вашому першому реченні сказано, що ви коротко прозвучаєте ... але тут у вас є одна з найдовших відповідей. ;)

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

щойно надрукував це і приклеїв до стіни
Що таке питання

22

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

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

  • Програма поза роботою
  • Читайте книги з розробки програмного забезпечення (Code Complete, Шаблони дизайну, Mythical Man-Month тощо).
  • Продовжуйте вивчати нові технології - школа повинна була навчити вас вивчати мови, а не самі мови. Дізнайтеся про нові рамки, IDE, apis, бібліотеки, інструменти для побудови тощо.
  • Побалакайте на таких сайтах, як SO та тут. Регулярне спілкування з досвідченими людьми - одна з небагатьох напівкоротких клавіш до мудрості.

1
Чесно кажучи, Міфічний чоловік-місяць трохи завищений, чи не так? (Але мені дуже подобаються книги "* in Nutshell").
Каміло Мартін

2
@Camilo не згоден. Mythical Man Month - це тема інженерії програмного забезпечення, тоді як у двох словах книги - це лише одна технологія. Врешті-решт, вам знадобиться розуміння проблем програмного забезпечення з розробкою програмного забезпечення. МММ - одне з тих читань, які висвітлюють тему.
Брайан Віггінтон,

21

Дійсно велике питання. Я впевнений, що є багато людей, які переживають саме те, що ви описали, на всіх сферах життя та на ринках роботи.

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

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

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

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


2
+1 для згадування важливості навичок співпраці / спілкування. Більшість випускників їх не вистачає.
Денис Откідач

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

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

21

Гаразд, так я побачив цю хакерську новину, і я був схожий на "СВЯТИЙ КРАЙ ТЕ МЕНЕ !!"

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

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

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

Я б не зосереджувався на вивченні додаткових мов такої мови, як C # або Java, а зосереджувався на принципах програмування. Ви повинні мати можливість передати хороші навички кодування та застосувати їх будь-якою мовою (це важливо для довголіття у вашій кар'єрі. Ява не зігріється назавжди). З іншого боку, знання «гарячих навичок» може допомогти влаштуватися на роботу. Навички інтерв'ю НАДІЙНО важливі. Візьміть кожне отримане інтерв'ю, навіть якщо це просто для практики.

У будь-якому разі не думайте, що великі компанії, такі як IBM, недоступні. Я почував себе таким же, як і ви кілька місяців тому, і зараз працюю в IBM. Мій середній бал теж не був таким чудовим. Я все ще смокчу програмування, але знаю, що з часом я стану кращим. Просто будьте впевнені у своїй здатності вчитися!


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

20

Вау, яка відповідь перед цим.

Як щодо зовсім іншої відповіді ...

Дозволяє переосмислити вашу проблему з точки зору буття людини.

"Я закінчила клас зачаття, і я вже збираюся народитися. Моя мама завершується, і мене повинні доставити завтра вранці. Але коли я дивлюся на спортсменів, як Усейн Болт, я думаю," як я можу колись це запустити швидкий? ».

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

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

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

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

Для мене я добре навчався в школах на рівнях O (британська кваліфікація), але я не міг сказати про рівень А (необхідний, щоб вступити до університету, щоб отримати ступінь). Тож я пішов до меншого місця, щоб зробити ступінь (і, як результат, не той ступінь, який я вважав за краще). Але я висунув це (все ще не маючи поняття, чого я хотів зробити як кар’єра) і дізнався багато про електроніку та речі, про які більшість хлопців із програмного забезпечення ніколи не вчиться. За цей час я звільнився як письменник комп'ютерних ігор.

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

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

Мене часто вражає (і дивуюсь), що молоді люди, часто ще в підлітковому віці, здається, знають, що хочуть робити. Але справжнє питання: чи все ще вони роблять це у 27 років? Або вони змінили курс, оскільки їхні ранні ідеї для них були невірними?

З точки зору того, як я можу зробити щось таке вражаюче, як ТОМ (що б там не було, Google, SO)? Що ж, ти робиш це шматками, як і ти робиш програмне забезпечення та все інше в житті. Ви починаєте з основ, отримуєте досвід в цьому. Якщо ти досить хороший, ти продовжуєш і отримуєш більше досвіду тощо, або відмовляєшся від нього, тому що розумієш, що ти недостатньо хороший, або що це так нудно, як пекло (ось чому я не роблю комедів, хоча його завжди була золотою шахтою. Для мене це нудно!).

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

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

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


-1: Чи можете ви трохи посилити це і зосередити більше на питанні, а менше на собі?
Джим Г.

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

Гарна відповідь, Стівен. Просто з іншого POV, ніж інші відповіді тут.

+1, бажаю, щоб я міг додати 1000 голосів, щоб зробити це головною відповіддю. Торкнувся мене!

18

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


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

17

Дотримуйтесь правила 10 000 годин.

Для того, щоб стати майстром чогось, потрібно потренуватися не менше 10 000 годин. Тому витратьте 10 000 годин на програмування, і ви станете майстром цього. Якщо ви не витратили 10 000 годин на програмування і не відчуваєте себе майстром ремесла, не переживайте, просто витрачайте більше часу на кодування.

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


1
і ти повинен переконатися, що ти не робиш одну і ту ж годину знову і знову! Надав себе продовжувати вчитися.
Froome

+1 за правило 10 к. Спочатку про це чули, але це звучить маркетингово чудово і дуже реально.

14

Лише пару думок, якщо можна.

Венді каже, що можна закінчити ступінь вищої кваліфікації, але поки мало розуміння практики програмування. Хіба це не дуже хвилює, навіть жахливо? Це настільки ж тривожно, як шахрайство, яке занурило англійські кафедри у 70-х: література - це не сукупність ідей, які можна зрозуміти та інтегрувати, а скоріше купа «текстів», які студент повинен абстрагувати та «деконструювати» ( http: / /www.answers.com/topic/deconstruction ). На щастя, цей гарячий прилив потьмяніє, можливо, тому, що інструктори, які знищили свій бур'янистий прибій, зараз виходять на пенсію.

Роки тому - десятиліття тому - мій перший курс з КС навчив мене мові складання (до того, як був винайдений C), використовуючи актуальні проблеми, такі як сортування, хешування та пошук (і, так, рекурсія). Мій другий курс викладав дизайн та реалізацію реального робочого компілятора. Я був студентом за сумісництвом в MIT, і ці два курси були все, що мені було потрібно, щоб почати отримувати зарплату як програміст; а через два-три місяці стати лише дещо продуктивним.

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

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

Я особливо зауважую, що кафедра використовує Python як мову викладання! Я маю на увазі, справді! Схоже, що ступінь CS в MIT означає, що він може кваліфікувати студента на посаду викладача CS в MIT. Розмова про рекурсію!

Потім я наткнувся на цей внесок у програмування кодування жахів ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) і подумав це дуже до речі цієї розмови:

"Я запізнювач у цій дискусії [про прогнозування успіху у кандидатів-програмістів], але в моєму досвіді, як пізній квітучий старший 30-річний студент CS, я вважав, що заняття з програмування є марними та менш погано викладаються як Я був тільки в коледжі громади, а потім в університеті Іллінойсу в Чикаго, але вступні заняття з програмування були:

"1. Об'єктно-орієнтована, що залишає студентам мало розуміння процедурних методів або взагалі їх немає

"2. Класи проти бур'янів. Заняття складалися в основному з описів різних типів завдань та математики, що стоїть перед ними, а не айнтаксису та структури, про яку людям сказали просто читати книгу.

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

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

"1. Java як потрібна мова програмування. Я тут не збираюся базувати Java, але чи не було б приємно студентам вивчати власну збирання сміття? І чи не вказівники будуть приємно вивчати, навіть якщо ми ніколи не вирішили програмувати на мові з ними знову?

"2. Взяти основний клас з теорії операційних систем, після того, як він занурився з Java, і з'ясував, що він знаходиться в C (звичайно), не маючи навіть одного класу C в кампусі?

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

Всього кілька точок даних, але, як говорили інші, переслідують.

- Піт


Мені так набридла ця задимлена точка зору.
Андрес Яан Так

Python - одна з найкращих мов викладання, яка існує
Casebash

@Icplben, Піт або Джамал від codinghorror.com?
Закі

14

По-перше, повісьте там!

По-друге, ось які речі мені допомогли:

  1. Продовжуйте пошук роботи за межами регіону, що цікавить вас. Однозначно буде добре, щоб повторно знайти. Прекрасний шанс вийти та побачити нове місце!
  2. Оскільки досвід недостатній, я думаю, що інтерв'юери хочуть переконатися, що ви хтось із захопленням та енергійністю ставиться до роботи та вирішення проблем. Тож я переконався, що мені цікаво кодування для компанії. Яким я був;)
  3. Задайте питання інтерв'юеру. Дослідіть компанію та підготуйте деякі матеріали під час співбесіди. Які шаблони дизайну ви використовуєте? Чому технологія X замість технології Y? Я відчуваю, що це сприймає вас як особистість під час співбесіди і дає вам можливість перепочити.
  4. Код для розваги вдома! Це не повинно бути успішним, але просто введіть код, який, можливо, використовує техніку, про яку ви читали, або технологію, подібну до бази даних.

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


14

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


1
На жаль, це правда. Холостяк марний, за винятком значка, який вам вдалося пробити. Однак, навчальний план comp sci жахливий на рівні низького рівня. Навчальна програма 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 - ваш друг у цьому випадку;)

Не намагайтеся кодувати веб-додаток (наприклад, google або переповнення стека), якщо ви не хочете інвестувати близько 6 місяців. Це величезна крива навчання. Вам потрібно навчитися керувати VCS, запустити веб-сервер, кодування HTML JS та CSS, систему баз даних та мову веб-додатків. Це жорстоко. Більшість цих технологій не підлягають передачі, якщо ви не хочете займатися веб-роботою.

Якщо ви хочете робити веб-додатки, ви можете поглянути на встановлення простого веб-додатка (наприклад, цей додаток для пошуку IP для країни на основі джанго - http://www.coulix.net/blog/2006/aug/17/ip- country-flags-django-коментарі / ). Ви можете покуповувати за кодом знижки на суму 90 доларів США (щоб ви могли працювати на справжньому веб-сервері) та спробувати налаштувати речі. Чи не надто турбуватися про безпеку або продуктивності (але роблять використання SSH) - це просто проект навчання.

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


Я думав, перша версія Google була зроблена за короткий час? На кшталт літа або щось подібне
граф

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

@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.