Logiczny skok z kompletnego nooba do programisty?

12

Programuję bardzo lekko przez kilka lat i nie robię dużych postępów. Jest to coś, co zdecydowanie mnie interesuje, ale po prostu nie miałem motywacji. Myślę, że zrozumiałem, co mnie zabija. Wszystkie książki, które przeczytałem, wszystkie screencasty, które obejrzałem, wydają się omijać jedną ważną rzecz:

Jak przejść od instrukcji drukowania, zmiennych itp. Do robienia bardziej skomplikowanych rzeczy?

Na przykład weźmy stronę taką jak Posterous. Dla tych, którzy nie wiedzą, jest to platforma blogowa, która przyjmuje posty na blogu za pośrednictwem poczty elektronicznej. Autor bloga ma specjalny e-mail @ posterous.com, na który wysyłają posty na blogu, i są one automatycznie formatowane i publikowane.

W jaki sposób programista użyłby swojego zestawu funkcji i instrukcji, aby osiągnąć coś takiego na zapleczu?

Przepraszam, jeśli to pytanie wydaje się bardzo szerokie, po prostu mnie frustruje. Czuję, że mam przyzwoitą znajomość podstawowych pojęć, ale nie mam pojęcia, jak to właściwie zrobić .

Blair Beckwith
źródło
Przetwarzają wiadomość e-mail, zachowują kodowanie i WSTAWIAJĄ tekst do bazy danych. Następnie wystarczy wybrać wszystkie posty i wyświetlić je na danej stronie. Aby wyjaśnić swój brak umiejętności programowania, możesz to poprawić, po prostu wykonując więcej.
Ramhound,
Tak wiele niesamowitych odpowiedzi, chłopaki. Wszystko staje się teraz trochę jaśniejsze. Dziękuję wszystkim!
Blair Beckwith,

Odpowiedzi:

12

Kluczem jest rozbicie zadania na odrębne kroki, które wiesz, jak to zrobić (lub możesz dowiedzieć się, jak to zrobić). To, co wiesz, jak to zrobić, zależy od twojego doświadczenia.

Weźmy przykład e-maila Posterous:

Wymagania: Akceptuj wiadomości e-mail @ posterous.com, sformatuj je i opublikuj na stronie internetowej.

Zadanie 1) Zaakceptuj wiadomość e-mail.

E-maile najprawdopodobniej będą musiały zostać pobrane z serwera pocztowego. Będziesz musiał zbadać wywołania interfejsu API, aby pobrać wiadomości e-mail z określonego serwera poczty. Musisz także dowiedzieć się, jak wyodrębnić treść z treści wiadomości e-mail (prawdopodobnie kolejne wywołanie interfejsu API).

Zadanie 2) Sformatuj wiadomość e-mail.

Z zadania 1 prawdopodobnie masz gdzieś coś w pamięci. Sformatuj to, aby było zgodne z krokiem 3 ...

Zadanie 3) Opublikuj treść na blogu.

Jeśli dodajesz tę funkcję do email2blog, prawdopodobnie masz już mechanizm publikowania postów na blogu. Użyj tego mechanizmu i zamiast akceptować dane wejściowe z obszaru tekstowego w witrynie, zastąp je treścią z kroku 2.

Teraz, w jaki sposób otrzymujemy z instrukcji print, jeśli instrukcje i funkcje do wykonania każdego z zadań.

Zauważ, jak w zadaniu 1 dwukrotnie wspomniałem o wywołaniach API? Wywołania API są zasadniczo funkcjami napisanymi przez kogoś innego, dzięki czemu można korzystać z ich funkcji. Jeśli wiesz, jak wywoływać funkcje, możesz wyszukać poprawne wywołanie API potrzebne do pobrania poczty z serwera pocztowego.

Nie rozmawiałem dużo o formatowaniu, ale jeśli wiesz, jak manipulować ciągami, to wiesz, jak formatować. Formatowanie strony HTML to ćwiczenie polegające na dodawaniu <b>bolded text</b>gdzieś tagów, takich jak wewnątrz ciągu.

W zadaniu 3 wspomniałem, że istnieje jakiś mechanizm publikowania blogów. Jeśli jest to istniejąca platforma blogowa, dobrze się z tym zapoznasz. Ale jeśli nie, musisz dowiedzieć się o HTTP Post i innych rzeczach związanych z frameworkiem internetowym.

Jeśli po przeczytaniu tego wszystkiego nadal nie masz pojęcia, o czym mówię, to mam nadzieję, że przekonałem cię, że nie można zastąpić doświadczenia. Po prostu idź tam i zbuduj coś! Nie przejmuj się zbytnio popełnianiem błędów noob, ponieważ każdy programista był kiedyś noobem.

Steve
źródło
5

Najważniejsze jest znalezienie czegoś, co chcesz zrobić i zrobienie tego .

Tak zaczęła się większość wielkich firm.

  • Google? Brin i Page pasjonowali się indeksowaniem sieci.

  • Metafilter? Matt Haughey był pasjonatem pisania i udostępniania.

  • Świergot? Dorsey pasjonowała się prostotą i nie dostajesz o wiele prostszych niż 140 znaków.

  • Przepełnienie stosu? Joel i ekipa pasjonowali się odpowiedziami.

Języki, takie jak PHP, Perl, Python i Ruby, zostały zaprojektowane w ten sam sposób. Podobnie GNU / Linux. Ktoś miał zadrapanie i zaczął go swędzić, a następnie wypuścił swoje narzędzia do powszechnego użytku.

Rozejrzyj się więc i zdecyduj, gdzie jest twój świąd, a następnie zacznij pisać program, aby go podrapać. Może lubisz grać w gry, więc możesz napisać kilka gier. Być może masz problem ze znacznikami ID3 w kolekcji mp3 i musisz to naprawić. A może interesuje Cię historia rodziny i chcesz zaindeksować sieć w poszukiwaniu odniesień do osób lub miejsc w Twojej historii. A może chcesz jakoś wejść w interakcję ze światem rzeczywistym. A może chcesz opracować oprogramowanie FLOS - spójrz na GitHub, Gitorious i Sourceforge.

Znajdź coś, co Cię pasjonuje i zacznij programować, a wkrótce będziesz mieć ogromne programy, zanim zdasz sobie z tego sprawę. I dlatego planowanie jakiegoś rodzaju jest dobrym pomysłem;)

Wayne Werner
źródło
2

Powoli i stopniowo.

Zwykle w przypadku dużych projektów nie zaczynasz od zanurzenia się w pisaniu kodu. Ktoś gdzieś musi mieć plan. Coś zapisują, cechy pożądanego systemu. Następnie zaczynają się od pierwszej strony / okna / czegokolwiek. Następnie dodają kolejny. Przez cały czas powoli dodajemy funkcję po funkcji, naprawiając błąd po błędzie. Nie tylko powstaje, musi istnieć duży obraz, ogólny projekt.

Aby być lepszym, potrzebujesz praktyki! Zacznij od małego projektu. Coś prostego i to również Cię interesuje. Zaplanuj, co robisz, zanim to zrobisz, a zobaczysz, że nie jest tak trudno „faktycznie zrobić ”.

FrustratedWithFormsDesigner
źródło
1

Możesz oglądać tyle screencastów, czytać tyle książek i śledzić tyle samouczków, ile chcesz, ale nigdy nie masz ochoty nigdzie się wybierać. Musisz wymyślić coś, co chcesz stworzyć. Następnie podziel go i spróbuj go utworzyć. Wpadniesz na wiele rzeczy, których możesz nie wiedzieć. Ale badasz je i uczysz się bardziej złożonych zadań.

Ryan Matthews
źródło
1

Zetknąłem się również z tym wyzwaniem i zasadniczo znalazłem swoje rozwiązanie: potrzebowałem zewnętrznego źródła, aby zwiększyć produktywność.

Możesz być tak zafascynowany technologią jak każdy, tak podekscytowany programowaniem jak każdy, a także inteligentny i szybki do nauczenia się jak każdy, a to będzie tylko tyle znaczyło, chyba że zabrudzisz sobie ręce i nie będziesz robić rzeczy. Ale może być trudno wiedzieć, od czego zacząć, a nawet jeśli masz pomysł, od czego zacząć, może być trudno uruchomić piłkę.

Jeśli jesteś dobry w samodzielnym uruchomieniu, prawdopodobnie potrzebujesz tylko kilku pomysłów. Wypróbuj kilka zagadek programistycznych lub spójrz na proste narzędzia, z których regularnie korzystasz, i zadaj sobie pytanie: „Czy mógłbym to zrobić? Gdybym to zrobił, co bym zmienił?”

Naprawdę zniechęcające jest siedzenie przed otwartym edytorem lub czystą kartką papieru i mówienie „Okej, mózg, stwórz! ”. Ale jeśli się zepsujesz, pomyśl o tym, co możesz zrobić, i prowadź się stamtąd, możesz dostać się dalej.

A jeśli okaże się, że po prostu nie umiesz sam stworzyć kodu, poproś kogoś, aby dał ci pracę do wykonania, z terminem i wymaganiami. Wrzuci cię do biegu.

przedpola
źródło
1

Fakt, że masz podstawową wiedzę, jest dobry - sam nie jestem zawodowcem, ale mogę sprzedawać to, co robię, więc muszę robić coś dobrze. Polecam poznanie podstaw języka i platformy, dla której tworzysz (i wygląda na to, że masz).

Najpierw zrób mapę tego, co próbujesz zrobić, i zorientuj się, jak to zrobisz, wszystko sprowadza się do sprowadzania rzeczy do szczegółów, ponieważ pomaga to szybciej je rozgryźć. Więc po prostu Google, co próbujesz robić w języku, którego używasz, jeśli utkniesz - nawet zadawaj pytania na temat Przepełnienia stosu (ja sam zadałem już ponad 70 pytań, hehe)!

Osobiście nauczyłem się przez google, początkowo nawet nie nauczyłem się podstaw, co powinienem był zrobić, jednak zanim zacząłem robić całkiem niezłe rzeczy, wciąż nie wiedziałem, co to jest „tablica”. ;)

Jeff
źródło
0

Myślę, że aby rozwinąć swoje umiejętności na zapleczu interfejsów, powinieneś zacząć manipulować danymi. Większość dużych projektów dotyczy przenoszenia, przekształcania i wyświetlania danych.

Wiem dla siebie, że nie rozumiałem większych projektów, dopóki nie czułem się dobrze z kilkoma różnymi rodzajami dostępu do danych i manipulowania plikami.

J Lundberg
źródło
0

Wskakiwanie w coś, co jest nieco ponad twoją głową i rozwiązywanie tego, może być świetnym sposobem na rozwinięcie swoich umiejętności. Możesz spróbować spojrzeć na niektóre z serii O'Reilly Cookbook:

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

Format dźwięki Problem / Rozwiązanie / Dyskusja jak to może być dokładnie to, czego szukasz, kod „receptury”, która będzie robić coś ciekawego i dyskusję o tym, jak to działa.

DKnight
źródło
1
Jeśli zdecydujesz się na zakup należy znaleźć pierwszy kod kuponu: retailmenot.com/view/oreilly.com
DKnight
0

Myślę, że po prostu nie rzucasz sobie wyzwania, by robić więcej.

Jeśli jesteś naprawdę ciekawy, jak to zrobić, sprawdź to! Jeśli chcesz wiedzieć, jak działa Posterous, zacznij od czegoś małego, na przykład szukając potrzebnych narzędzi, jak uzyskać informacje z pola tekstowego na stronę internetową. Potem stopniowo się na tym opierasz. Następnym pytaniem może być ustanowienie połączenia e-mail ze stroną internetową i bazą danych.

Masz najlepsze narzędzie, jakiego kiedykolwiek będziesz potrzebować, Internet.

Bryan Harrington
źródło
0

Oprócz podziału projektu na zadania, kluczem jest także nauka ponownego użycia kodu. Podziel swój kod na moduły, których możesz użyć ponownie w innych projektach, w których musisz zrobić to samo.

Np. W tym przykładowym projekcie prawdopodobnie będziesz pracować z bazą danych w celu przechowywania postów na blogu. Możesz napisać klasę bazy danych do łączenia się z bazą danych, wykonywania zapytań, uzyskiwania wyników itp. Następnie we wszystkich przyszłych projektach możesz używać tej samej klasy i mieć możliwość łatwej pracy z bazą danych.

Kliknij opcję Upvote
źródło