Gdy produkty opracowują całe zespoły ludzi, ile jeden programista może osiągnąć samodzielnie? Innymi słowy, czy jedna osoba mogłaby napisać Photoshop, słowo MS itp.? A jeśli nie, czy tworzenie stron internetowych byłoby obszarem, w którym jeden programista mógłby wiele zrobić?
web-development
project-management
błotnik 1901
źródło
źródło
Odpowiedzi:
Zacznij od małego
Linux jest obecnie znacznie większy niż jego pierwsze wersje, ale ważne jest to, że wyszedł z wystarczającą ilością rzeczy, aby zyskać przyczepność.
Tylko jeśli warto
Mam osobistą zasadę, że duże rzeczy są warte zrobienia, jeśli zasadniczo różnią się od pozostałych. W przeciwnym razie nurkujesz w czerwonym oceanie .
Dobrze zacząć, ale nie zawsze zrównoważony
Jeśli twoje oprogramowanie jest wystarczająco dobre, możesz poważnie się nim zająć. Weźmy na przykład Markusa „Notcha” Perssona, twórcę gry Minecraft. IIRC rozpoczął grę sam, a kiedy gra zyskała na popularności, zaczął szukać współpracowników, a nawet założył firmę.
Przynosząc satysfakcję z osiągnięcia czegoś samemu, duże projekty wykorzystują swój potencjał dzięki współpracy programistów, a nie jednemu geniuszowi, co prowadzi mnie do następnego punktu.
Mit
Sprawdź The Myth of the Genius Programmer , przemówienie Bena Collinsa-Sussmana i Briana Fitzpatricka na Google I / O 2009. Powinieneś mieć tam wszystkie fałszywe oczekiwania. Najważniejsze, że chcę tutaj wspomnieć, że czasami jeden programista dostaje uznanie za całość, podczas gdy za tym stoi więcej ludzi.
To zdecydowanie możliwe
Innym przykładem, oprócz Linusa Torvaldsa, jest John Carmack. Przeniesił Wolfensteina w zaledwie cztery dni, kiedy EA oszacował pełny zespół na dwa miesiące.
To nie jest ilość kodu, ale wiedza architektoniczna i techniczna, która pozwala osiągać wielkie rzeczy za pomocą mniejszej ilości kodu, niż można by się spodziewać.
Biorąc pod uwagę umiejętności i wiedzę (powyżej średniego poziomu), możesz sprawić, że dużo pracy wydaje się mało.
źródło
Ze względu na charakter wykonywanej pracy sam opracowałem kilka całkiem dużych aplikacji. Tak, to wykonalne. Mógłbym o tym mówić godzinami, ale nie mam teraz dużo czasu, więc oto kilka zalet i wad osobistych doświadczeń.
Plusy:
Cons:
źródło
Przy odrobinie poświęcenia i umiejętności jedna osoba z pewnością może wiele osiągnąć. Nie jest to jednak łatwe, wystarczy być dobrym programistą. Aby odnieść sukces w projekcie, często musisz pomyśleć o przypadkach użycia, projekcie interfejsu użytkownika, dokumentacji, wsparciu i wielu innych sprawach. Gdy sprawy zaczną się zmieniać, a liczba użytkowników będzie rosła, wszystko to w pojedynkę stanie się nierealne - w tym momencie albo więcej ludzi wchodzi do projektu (poprzez udział społeczności, zatrudnianie ludzi lub w inny sposób), albo projekt umiera.
źródło
Zależy to od oprogramowania, które on / ona próbuje opracować, ograniczenia czasowego i umiejętności. Jeśli opracowuje prostą aplikację MIS, jest bardzo prawdopodobne, że może to zrobić w krótkim czasie. Próba opracowania oprogramowania tak skomplikowanego jak Photoshop, MS Word, Blender, Flash itp. Jest możliwa, ale zajmuje dużo czasu i ma najbardziej podstawową funkcję, a funkcje są proste.
źródło
Wszystko zależy od umiejętności, czasu i chęci. Im więcej masz wiedzy, tym mniej czasu zajmie Ci osiągnięcie czegoś. Zdobędziesz niezwykle intymną znajomość bazy kodu jako jedynego programisty, który może również przyspieszyć proces rozszyfrowywania / refaktoryzacji / debugowania.
Osobiście pracowałem nad aplikacją do przesyłania z komputera na serwer. Zakodowałem aplikację serwera, aplikację komputerową i przetestowałem to wszystko sam. Napisałem nawet instalator aplikacji. Wymyśliłem sposób, aby umożliwić przeciąganie i upuszczanie ikon na pasku zadań w systemie Windows, a nawet skończyło się na pisaniu nowej biblioteki Java od zera. Zrobiłem to w ciągu roku, który jest wciąż w fazie rozwoju i testów.
Cały ten projekt był jedną główną próbą. Codziennie po szkole pracowałem nad projektem, a także w weekendy. Czy jest tak masywny jak MS Word, Photoshop itp.? Nie. Projekt jest wciąż duży i wciąż się rozwija i można wiele osiągnąć.
źródło
Aktualnie pracuję nad takim projektem w wolnym czasie (jest to aplikacja internetowa, a nie aplikacja komputerowa, ale zasady są takie same). Oto, co znalazłem do tej pory:
1) Nie wymyślaj koła na nowo . Używaj istniejących bibliotek / frameworków, zamiast robić wszystko od zera. Jedno zastrzeżenie tutaj: pamiętaj, aby zwracać uwagę na licencje, które dotyczą wybranej dystrybucji / wydania / dowolnego modelu. Niektóre licencje copyleft będą wymagały otwartego źródła „pracy pochodnej”. Niektóre licencje zezwalają wyłącznie na użytek niekomercyjny. Śledź biblioteki / frameworki, których używasz, abyś mógł zapewnić odpowiednią atrybucję na ekranie / obszarze „Kredytów” / cokolwiek innego
2) Pracuj iteracyjnie . Jest to związane z tym, co powiedział dukeofgaming w „Start Small” . Bardziej prawdopodobne jest, że będziesz trzymać się projektu, jeśli zobaczysz wyniki. Dopóki nie zobaczysz, że coś działa, jakikolwiek rozwój, który wykonujesz, jest odpowiednikiem malowania w ciemności.
3) Nie bój się prosić o opinie / pomoc wcześnie . Możliwe, że nie jesteś dobry we wszystkim. Jeśli jesteś świetny w drobiazgowym podejściu do kodowania, prawdopodobnie masz do czynienia z interfejsem użytkownika. Dotyczy to również odwrotności. Nigdy nie boli zasięgać porady od tych, którzy są lepsi od ciebie w określonym obszarze. Wielu ludzi będzie tego unikać, ponieważ martwią się, że ktoś ukradnie ich pomysł. Nie martw się o to - jeśli ktoś spróbuje cię skopiować, oznacza to, że jesteś w coś wartościowego. Pomysły są tanie, wdrożenie jest kluczowe. Apple nie wynalazł odtwarzacza MP3, Microsoft nie wynalazł systemu operacyjnego, Facebook nie wynalazł sieci społecznościowej, a Google nie wynalazł wyszukiwarki. To, co zrobili, sprawiło, że było to atrakcyjne dla użytkowników (i nie było do bani).
źródło