Pracowałem jako jedyny programista w firmie, która znała określoną technologię, jako jedyny, który wykonał program, który wykonałem, oraz jako wykonawca w podobnych sytuacjach. (Pracowałem również w środowiskach zespołowych z innymi programistami, którzy znali różne narzędzia oraz z innymi programistami, którzy zrobili dokładnie to, co zrobiłem.)
Plusy bycia jedynym programistą
- Jak wspomniałeś, często masz swobodę korzystania z narzędzi i języków, których możesz się uczyć. Nie zawsze musisz uzasadnić sprawę przed innymi, aby uzyskać pozwolenie na pracę z Nową Technologią X, podczas gdy wszyscy inni używają Bieżącej Technologii Y.
- Masz więcej obowiązków. Zasadniczo działasz zarówno jako kierownik projektu, jak i programista w każdym ze swoich projektów, a dzięki swojej zdolności do identyfikowania i wdrażania nowych rzeczy skutecznie jesteś także kierownikiem działu. (Nie mów tego sprzedawcom. Uwielbiają rozmawiać z decydentami, a ty nie masz czasu z nimi rozmawiać).
- Nie ma wątpliwości co do uznania za wykonaną pracę: to oczywiście Ty i Ty sam stworzyłeś rzeczy.
- Możesz spędzać więcej czasu na pracy nad własnymi projektami, a mniej na spotkaniach dotyczących projektów, które są w zasadzie projektami innych osób (ale jesteś tam jako osoba wspierająca, możliwe tworzenie kopii zapasowych itp.)
Cons
- Jak zauważył David w komentarzu, jesteś jedynym programistą, więc bez ciebie nie powstanie żaden program. Kiedyś chwaliłem się bratu, że jestem „facetem” przy konkretnym projekcie w pracy. Dokładnie opisał mi swoją sytuację: byłem uwięziony. Nie mogłem przejść do tej firmy, ponieważ nigdy nie pozbyłem się tego projektu. (On też miał rację. Zajęło mi to kilka miesięcy treningu przez dłuższy czas, zanim mogłem oddać go komuś, kto nawet był w stanie go wesprzeć.) Może ci być trudno wziąć prawdziwe wakacje, kiedy nic nie może niech się stanie bez ciebie.
- Jak podkreśla Pierre, na miejscu nie ma nikogo, kto mógłby dokonać recenzji kodu lub podzielić się z Tobą najlepszymi praktykami. Możesz kontaktować się z rówieśnikami na różne sposoby, ale nic nie jest tak skuteczne, jak stuknięcie współpracownika w ramię i poproszenie jej, aby spojrzała na Twój kod przez 5-10 minut.
- W podobny sposób możesz mieć trudności z uzyskaniem doświadczenia w korzystaniu z nowych narzędzi. Szkolenie poza siedzibą może być tak rzadkie jak czas wolny: ktoś narzeka, że firma nie może sobie pozwolić na to, że nie będziesz patrzeć na Language 3.0 przez tydzień, gdy nie ma nikogo, kto mógłby utrzymać aplikacje Language 2.0.
- Awans zawodowy może być niezwykle trudny do zarządzania. Możesz nie mieć pozycji, do której możesz dążyć, nawet zmiana tytułu może być trudna do zdobycia, a przeglądy na koniec roku nie mają żadnych ram odniesienia, więc doskonała praca może pozostać niezauważona, jeśli nie ma innej z tego powodu nikt tak naprawdę nie rozumie, co robisz.
Jeśli zdecydujesz się na przeprowadzkę do firmy, w której pracowałbyś w zespole programistów, nie sądzę, aby twoje solowe doświadczenie mogło cię bardzo zranić. Twój brak doświadczenia z wzorami projektowymi niekoniecznie jest tak ważny, jak chęć ich uczenia się. (Mogą się zdarzyć sytuacje, w których przeprowadzasz rozmowę z kandydatem o podobnym pochodzeniu, a także masz doświadczenie w zakresie wszelkich metod stosowanych przez firmę, ale dotyczy to w zasadzie wszystkich).
Na tej samej linii brak doświadczenia w drużynie równoważy umiejętność noszenia wielu czapek. Jest kilku programistów, którzy są dobrymi graczami zespołowymi, ale nigdy nie rozwijają umiejętności zarządzania projektem; już pokazałeś, że możesz to zrobić.
Zalecam, aby będąc programistą solo, poświęcić trochę czasu na czytanie narzędzi i technik, z których korzystają podobni programiści, więc nawet jeśli sam ich nie użyjesz, masz świadomość, że istnieją i możesz odnieść się do nich podczas wywiadu, choćby po to, by powiedzieć „tak, przeczytałem trochę o frameworkach MVC, ale sam ich nie użyłem”. Rób, co możesz, aby pozostać w kontakcie z innymi programistami: chodź na spotkania lokalnych grup użytkowników, czytaj i komentuj blogi (lub prowadź własne), od czasu do czasu próbuj dostać się na warsztaty, oglądaj seminaria internetowe itp. (Możesz również rozważyć witryny takie jak lynda.com do wewnętrznych szkoleń: to nie jest tak dobre jak tygodniowa konferencja gdzie indziej, ale możesz oglądać filmy w swoim własnym czasie i nie wprowadzać wszystkich w tryb paniki, ponieważ jesteś po za biurem.)