Досягнення проміжного статусу програмування [закрито]


32

Я інженер програмного забезпечення, який займався програмуванням позицій у VBA (хоча не смію вважати, що цей "справжній" досвід, як це був проб і помилки!), Perl w / CGI, C # та ASP.NET. Останні два є аспірантами, з моїм входом у «реальний світ». Я закінчую 2 роки навчання в коледжі і маю 5-річний досвід роботи (загалом) на всіх мовах, про які я згадав. Однак, якщо мова йде про моє резюме, я можу покласти на C # лише 2 роки, а ASP.NET - менше року.

Я відчуваю, що знаю C #, але мені все одно доводиться витрачати час на те, що "робить цей метод?", Тоді як деякі інженери вищого рівня можуть негайно сказати: "О, метод X робить це, навіть не дивлячись на це метод раніше ". Тож я емпірично знаю, що там є затока, але я не зовсім впевнений, як його подолати. Я почав програмувати в Project Euler , і я взяв книгу про дизайнерські зразки, але все ще відчуваю, що витрачаю кожен день, ступаючи воду, а не рухаючись вперед.

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

Моє запитання таке: як ти подолав це плато? Скільки часу у вас пройшло? Які методи ви можете запропонувати допомогти мені у цьому?

Я читав Code Complete , The Mythical Man Month і CLR через C #, друге видання - моє запитання: Що мені робити зараз?


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


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

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

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

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

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

Відповіді:


41

Вітаємо!

З вашого опису, ви є проміжним розробником.

Ця фаза триватиме приблизно 3-8 років, залежно від вашої готовності вчитися вище та поза проблемою моменту

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

Або ви могли мати життя поза програмуванням ;-)

Серйозно, будьте в курсі та самоаналіз, але час від часу вимикайте #% $ @ річ

Додаток: коли виходите на вулицю, не забудьте надіти штани.


17
і остерігайтесь цитувати Толкіна, це важкий хобіт, який потрібно зламати
Стівен А. Лоу

1
Добре зіграв містер Лоу, добре зіграв.
kemiller2002

1
Серйозно, життя поза програмою. Перше: життя є більше, ніж код. Два: багато чого можна дізнатися з інших дисциплін.
kemiller2002

1
+1 - Чудово зроблено. Ніщо не замінює практику (або гарне почуття гумору).

15

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


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

10
Я не згоден --- найкращі програмісти - це як найкращі письменники: вони буквально не можуть зупинити себе робити те, що вони роблять найкраще.
Норман Рамзі

2
Вони, можливо, не зможуть зупинити себе, але життя може, і за деякої волі.
Shannon Severance

@ShannonSeverance, Для багатьох це буде, а не лише для деяких.
Пейсьєр

9

Ви повинні пройти стадію личинок.

Хоча зараз я програмую в VB.NET на Windows, я пройшов стадію личинки на Linux x86, з монтажем як основним мовою.

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

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

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

Це шлях до величі.


2
Це якось пов’язане з чітоми? Картина в моїй голові передбачає хеоти.

2
lol "Це не так просто сирно!"
gnovice

Етап личинки або етап Ларавеля? ;)
Бред Томас

9

Я програмую з 8 років ... мені буде 33 на Різдво. Я все ще бачу гору вдалині. Незалежно від того, як далеко ви приїдете, завжди є чому навчитися.

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

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

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


9

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

Ось деякі симптоми, про які можна подумати:

  1. Ви вступаєте в редагування війн в Інтернеті? Якщо так, то, можливо, ви виявите, що вам подобається сперечатися про деталі у вашій зоні комфорту більше, ніж вам подобається намагатися зрозуміти точку зору іншої людини.
  2. Ви вважаєте мови як справді різними речами? І C #, і Java приносять свої таблиці і власні платформи, але обидва є ефективними моделями обчислення. Чи можете ви вивчити нову мову та платформу досить швидко, щоб отримувати зарплату за роботу?
  3. Ви все ще вважаєте завдання програмного забезпечення типізуючими? Якщо вам дають завдання на роботі, чому? Для чого цей код буде використовуватися? Яка система вона буде частиною? Ця інформація може кардинально змінити запропоноване рішення.
  4. Чи залишили ви все-таки все фазу вашому житті позаду? Ви слухаєте решту команди чи просто намагаєтесь придумати наступне, що потрібно сказати?
  5. Ви зрозуміли, що "тягнути все-більш", щоб створити баггі в останні хвилини, рішення вже не вражає? Після перших восьми годин ви можете легко уявити, що решту часу просто використовували для набору помилок.

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

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


8

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

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

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

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


8

Спробуй

Читати БІЛЬШЕ книг Візьміть ці великі заголовки від Amazon і прочитайте їх. Наприклад, автор Code Complete написав чудову книгу з інженерії програмного забезпечення - швидка розробка програмного забезпечення, придбайте та прочитайте її.

Вивчіть іншу мову програмування. Слід вивчити мову сценаріїв, як python / ruby. Або, можливо, функціональна мова програмування :) Це може змінити вашу думку про програмування. Можливо, ви знаєте, що деякі з цих схем не потрібні для таких мов.

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


4

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

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


3

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

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

і це добре відображається і з вашим резюме. :)

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


-1

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

  1. Посилання Essential C # : призначене для останнього видання. Я фактично прочитав попередній (C # 4.0), але я припускаю, що новіше, тим краще. У цій книзі є і деякі основні речі, але будьте терплячі, читайте цю обкладинку, щоб обкладати.
  2. C # у глибині : знову посилання на останнє видання, яке вийде через 10-15 днів. Я хоч і просто скупив книгу, але мої колеги, які її прочитали, дуже поважають це.

Ви вже читали CLR через C # , інакше це, мабуть, третя пропозиція будь-кого для розробників C #.

Вони також повинні зробити вас кращим розробником: Правила дизайну рамок та ефективної роботи зі застарілим кодом .


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