Зробити логічний перехід від завершеного noob до розробника?


12

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

Як мені перейти від заяв на друк, змінних тощо до виконання складніших матеріалів?

Наприклад, візьмемо такий сайт, як Posterous. Для тих, хто не знає, це платформа для ведення блогів, яка приймає публікації в блозі електронною поштою. Автор блогу має спеціальну електронну пошту @ posterous.com, на яку вони надсилають повідомлення в блозі, і вони автоматично відформатовані та розміщені.

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

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


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

Стільки дивовижних відповідей поки що, хлопці. Зараз усе стає трохи зрозуміліше. Дякую всім!
Блер Беквіт

Відповіді:


12

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

Візьмемо приклад вашого Posterous електронної пошти:

Вимоги: Прийміть електронні листи @ posterous.com, відформатуйте та опублікуйте їх на веб-сайті.

Завдання 1) Прийняти електронну пошту.

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

Завдання 2) Відформатуйте електронний лист.

Із завдання 1 у вас, ймовірно, вміст десь сидить у пам'яті. Відформатуйте це, щоб він відповідав кроку 3 ...

Завдання 3) Опублікуйте вміст у блозі.

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

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

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

Я не багато обговорював питання про форматування, але якщо ви знаєте, як зробити маніпуляцію з рядками, то ви знаєте, як форматувати. Форматування сторінки HTML - це вправа додавання тегів, таких як <b>bolded text</b>внутрішній рядок десь.

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

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


5

Головне - знайти щось, що хочеш зробити, і зробити це .

Ось так і почалася більшість великих компаній.

  • Google? Брін та Пейдж із захопленням індексували Інтернет.

  • Метафільтр? Метт Х'югі захоплювався написанням та спільним доступом.

  • Twitter? Дорсі захоплювався простотою, і ви не набагато простіші за 140 символів.

  • Переповнення стеку? Джоел та екіпаж пристрасно відповідали.

Такі мови, як PHP, Perl, Python та Ruby, були розроблені однаково. Так було і GNU / Linux. У когось з’явилася подряпина і почав свербіти цю подряпину, а потім випустив свої інструменти для загального споживання.

Тому погляньте навколо і вирішіть, де ваш свербіж, а потім починайте писати програму, щоб подряпати свербіж. Можливо, вам подобається грати в ігри, тому ви могли написати кілька ігор. Можливо, у вас є проблема з тегами ID3 у вашій колекції mp3, і вам потрібно це виправити. Або, можливо, ви зацікавлені в сімейній історії та хочете сканувати Інтернет, шукаючи посилання на людей чи місця вашої історії. Або, можливо, ви хочете якось взаємодіяти з реальним світом. Або, можливо, ви хочете розробити програмне забезпечення FLOS - погляньте на GitHub, Gitorious та Sourceforge.

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


2

Повільно і поступово.

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

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


1

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


1

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

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

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

Насправді важко сісти перед відкритим редактором чи чистим аркушем паперу і сказати «Гаразд, мозок, творіть! » Але якщо ви зламаєте це, подумайте, яку саме справу ви могли б зробити, і їхати звідти, ви можете дістатися далі.

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


1

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

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

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


0

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

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


0

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

http://oreilly.com/store/series/cookbooks.html

Звуки в форматі Проблема / Рішення / дискусії , як це може бути саме те , що ви шукаєте, код «рецептів» , які будуть DO - то цікаве і деякі дискусії про те , як це працює.


1
Якщо ви вирішили придбати обов'язково знайти код купона перший: retailmenot.com/view/oreilly.com
DKnight

0

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

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

У вас є найкращий інструмент, який вам коли-небудь знадобиться, Інтернет.


0

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

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

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