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


9

Я буду студентом третього курсу інформатики, і я читав голову спочатку Java, керівник перший C, і в даний час я читаю C ++, що є мовою, яка мені найбільше подобається, оскільки вона має хороший стиль викладання для людей з досвідом. Я планую або навчитися робити програмне забезпечення за допомогою QT, вивчити aim-C (для iphone), або прочитати Effective C ++.

Як я можу отримати досвід роботи програміста? Чи є у мене навички приєднуватися до проекту з відкритим кодом чи мені потрібно вивчити php, mySQL чи будь-яку іншу мову. Я взагалі люблю програмування та інформатику, хоча деякі заняття можуть бути надзвичайно важкими (теоретична інформатика). Я також планую стати гуру на мові c ++, але це вже не скоро.


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

Як дістатися до Карнегі Холл?
jfrankcarr

1
Я буду здаватися на дупу на секунду, але ... досвід - Активна участь у заходах чи заходах, що ведуть до накопичення знань чи вмінь. Тому почніть активно брати участь у програмуванні.
Стівен Еверс

1
BTW, чим відрізняється StackOverflow від програмістів? Чи має на увазі схема закриття запитань зробити програмістів ще одним StackOverflow? Який сенс тоді - просто з’єднайте два. Раніше ми могли задавати езотеричні питання програмістам, які ми не могли в StackOverflow.
שינתיא אבישגנת

Відповіді:


11

ABC - ЗАВЖДИ БУДЕ КОДУВАННЯ. Це дійсно так просто. Один з моїх улюблених способів пізнання мови - це написання іграшкового перекладача для підмножини мови на самій мові, або якщо це не твоя річ, то, можливо, прослідковувач променів чи щось інше, що достатньо велике, щоб бути нетривіальним. але не настільки великий, що його не можна закінчити через місяць. Сенс полягає в тому, щоб працювати над тим, що змусить вас переглянути стандартну бібліотеку та засоби абстрагування даних, які пропонує мова. Іноді проект має успіх, іноді це не так, але в кінці його я знаю достатньо мови, щоб знати, які її сильні та слабкі сторони та чи хочу я продовжувати вчитися більше. Якщо виявляється, що мені подобається мова, то кожного разу, коли я читаю цікавий статтю чи допис у блозі, я намагаюся розпочати проект, в якому я реалізую деякі ідеї, які були представлені у статті чи публікації блогу. Таким чином я завжди отримую практику та вивчаю нові ідеї, щоб це начебто стало доброчесним циклом.

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


+1 Ви згадали кілька справді цікавих проектів, дякую.
Ентоні

8

Як добре пояснено у програмі « Навчи себе програмування на десять років» , ти повинен дотримуватися наступних кроків:

  • Зацікавтесь програмуванням, а займіться тим, що це весело. Переконайтесь, що це буде достатньо весело, щоб ви були готові вкластися в свої десять років / 10000 годин.

  • Програма . Найкращий вид навчання - це навчання ділом. Якщо говорити технічно, "максимальний рівень продуктивності для окремих людей в даному домені не досягається автоматично як функція розширеного досвіду, але рівень продуктивності може бути підвищений навіть досвідченими людьми в результаті цілеспрямованих зусиль для вдосконалення . " (стор. 366) та "для найефективнішого навчання потрібне чітко визначене завдання з відповідним рівнем складності для конкретного індивіда, інформативний зворотній зв'язок та можливості для повторення та виправлення помилок". (стор. 20-21) Книга Пізнання на практиці: розум, математика та культура в повсякденному житті є цікавим посиланням на цю точку зору.

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

  • Якщо хочете, покладіть на чотири роки в коледж (або більше в аспірантуру). Це дасть вам доступ до деяких робочих місць, які потребують повноважень, і дасть вам глибше розуміння галузі, але якщо ви не любите школу, ви можете (з деякою відданістю) отримати подібний досвід самостійно або на роботі . У будь-якому випадку, навчання лише книгам буде недостатньо. «Освіта з інформатики не може нікого зробити більш досвідченим програмістом, ніж вивчення кистей та пігменту може зробити когось художника-майстра», - каже Ерік Реймонд, автор «Словника нового хакера». Один з найкращих програмістів, який я коли-небудь наймав, мав лише ступінь середньої школи; він створив багато чудового програмного забезпечення, має власну групу новин та зробив достатньо варіантів акцій, щоб придбати власний нічний клуб.

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

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

  • Вивчіть принаймні півдесятка мов програмування. Включіть одну мову, яка підтримує абстракції класів (наприклад, Java або C ++), та, яка підтримує функціональну абстракцію (наприклад, Lisp або ML), та, яка підтримує синтаксичну абстракцію (наприклад, Lisp), та, яка підтримує декларативні специфікації (наприклад, шаблони Prolog або C ++), одну яка підтримує супроводи (наприклад, Icon чи Scheme) та підтримує паралелізм (наприклад, Sisal).

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

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

  • Майте хороший сенс якомога швидше відмовитися від стандартизації мови.


3

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

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


2

Іноді такі місця, як sourceforge, спочатку трохи непросто. Дійсно приємний спосіб знайти щось, що потрібно зробити, - проскакати через трекер випусків проектів і знайти помилку / проблему, яка вам подобається, як звучить виправлення.

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


1

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

Робота над реальними проектами

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

Проблеми - це можливості показати, що ти вмієш

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


-1

мені потрібно вивчити php, mySQL чи будь-яку іншу мову.

Так, пане, будь ласка, врахуйте мови всесвітньої павутини. HTML5, CSS3 та JavaScript.

Ось чому:

  1. Вони швидко навчаються та все більше багаті на реалізацію.

  2. Вони вже не просто пишуть Інтернет, але і ОС, сервер та базу даних.

  3. Найголовніше *

    Зараз вони використовуються для переосмислення Computer Science 101 - творця jQuery Джона Резіга.

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

c / c ++ / c # дизайнерські шаблони переносяться на JS там.

Сподіваюся, що це допомагає.


+1 - Так неправильно, що це спричинило негативні наслідки. Інформація дійсна. Посилання є надійною. Джерело - jQuery Genius John Resig - запускає курс програмування 101 з JavaScript, і він буде працювати. Перевірте Академію Хана. Підвищення потенціалу для підвищення кваліфікації; як мінімум. Дякую.
Джек Стоун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.