Jak wybrać inżyniera oprogramowania aplikacji internetowych? [Zamknięte]

10

Jak wybrać inżyniera oprogramowania aplikacji internetowych?

(Stała) pozycja polega na przepisaniu klienta istniejącej aplikacji serwerowej dla klienta stacjonarnego. Strony nie będą generowane dynamicznie na serwerze, ale serwer ujawni pełne API w dowolny sposób, na przykład, wywołania JSON RPC i może udostępnić pliki statyczne. Zastąpi klienta, który ludzie muszą pobrać i zainstalować, więc wymaganie porządnej przeglądarki z rozsądnymi ustawieniami (np. Włączoną obsługą JavaScript) jest w porządku. Prawie wszystkie przypadki użycia dotyczą komputera stacjonarnego. Nie będzie on dostępny dla wyszukiwarek (jest to aplikacja dla przedsiębiorstw).

Możemy posunąć się tak daleko, aby napisać całość na jednej stronie, ale nie musimy. W zasadzie wszystko to napisałby dany inżynier aplikacji internetowych. Dokładne biblioteki open source, których należy użyć, zależą również od inżyniera.

W szczególności szukam porady na temat tego, jakich kwalifikacji szukać / weryfikować w wywiadzie, ponieważ wybór inżyniera oprogramowania aplikacji jest ogólnie zbyt obszernym tematem.

Edycja - pozycja dotyczyłaby wyłącznie programowania JavaScript w przeglądarce (i byłaby odpowiedzialna za HTML i CSS) - inni programiści opracowaliby serwer, ale ta pozycja mogłaby żądać fasad nad API. Nie ma Ruby, ASP, JSP itp., Ponieważ warstwa serwera WWW jest bardzo cienka i po prostu tłumaczy wywołania na API warstwy biznesowej i zwraca je jako JSON (lub cokolwiek, ale JSON wydaje się najłatwiejszy).

psr
źródło
Do Twojej wiadomości - nie jest to duplikat programistów.stackexchange.com/ questions/ 105114/... , który był dość specyficzny dla witryn e-commerce i konkretniej pytał, czy kluczowe pytanie powinno brzmieć: „Czy jesteś sam, czy z jednym lub dwóch partnerów, którzy kiedykolwiek wprowadzili produkt na rynek? Nie dbam o to, czy się udało, czy nie, ale powiedz mi o tym ”.
psr
Poprawiłem tytuł w łączonym pytaniu, ponieważ zadawane pytanie jest dość konkretne. Niestety ten nie jest. Z FAQ : Twoje pytania powinny być racjonalnie scoped. Jeśli potrafisz sobie wyobrazić całą książkę, która odpowiada na twoje pytanie, pytasz za dużo.
Robert Harvey
Jeśli ograniczę to do tego przypadku, czy nie jest to ogólnie przydatne?
psr
Jaki jest twój najpilniejszy problem? Mogę dać ci uogólnienia, na przykład nie przejmuj się zbytnio tym, co TLA ma w swoim CV. W oparciu o opisaną przez Ciebie pozycję muszą być rozwiązywaczem problemów i odrobiną zawodów, którzy rozumieją więcej niż tylko budowanie aplikacji CRUD. Jeśli mają te cechy, są w stanie poradzić sobie z problemami technologicznymi, które im rzucasz. Zależy to również od tego, czy jest to praca na pełny etat, czy umowa tymczasowa.
Robert Harvey
Naprawdę, jak zatrudnić inżyniera oprogramowania aplikacji internetowych. W szczególności, przypuszczam, jakich kwalifikacji szukać / przetestować w wywiadzie
psr

Odpowiedzi:

2

Jako programista stron internetowych, który pracuje głównie nad aplikacjami dla przedsiębiorstw zajmującymi się starszymi systemami, mogę zaproponować kilka sugestii dotyczących tego, co czyni mnie sukcesem, i mam nadzieję, że to pomoże.

Nie jestem pewien, czy szukasz tymczasowej / konsultacyjnej sytuacji, która zapewni Ci jedną aplikację, czy też FTE w celu opracowania i utrzymania tego długoterminowego okresu, ale myślę, że powinny one mieć zastosowanie w obu przypadkach.

  • Używam głównie Ruby. To sprawia, że ​​szybkie prototypowanie jest bardzo szybkie i łatwe, a Rails ułatwia bootstrap nowego projektu. Teraz nie wiem, jakie jest twoje środowisko, czy posiadasz instytucjonalne upoważnienia dotyczące języków, platform, narzędzi, ale czy możesz zatrudnić programistę, który jest biegły w nowoczesnym, elastycznym języku / frameworku, który sprawia, że ​​pisanie DSL jest do czynienia zagraniczny interfejs API jest stosunkowo szybki i łatwy, to plus. Zasadniczo, każdy z języków z Lisp-nature będzie lepszy pod tym względem. Konieczne jest także zatrudnienie osoby biegle posługującej się językiem z dobrym ekosystemem bibliotek typu open source do zajmowania się powszechnymi abstrakcjami.
  • Jeśli możesz znaleźć kogoś, kto jest przyzwyczajony do radzenia sobie ze starszymi systemami i wyodrębniania ich osobliwości, jest to rzadkie i powinieneś to zbadać. Większość deweloperów jest przyzwyczajona do budowania projektów od podstaw (lub angażowania się w utrzymanie istniejących projektów) i budowania czegoś nowego do współpracy z czymś starym wymaga pewnego ... nie zestawu umiejętności, per se, ale podejścia.
  • Kiedy mówisz „serwer ujawni API w dowolny sposób”, to raczej niejasne, ale zgaduję, że masz na myśli, że istnieją programiści, którzy mogą implementować API na serwerze? Wyjaśniłbym, że stanowisko będzie wymagało współpracy z tymi programistami w celu określenia interfejsu API. Jeśli możesz podać przykład wymaganego rodzaju interakcji i zapytać kandydata o jego wstępne przemyślenia na temat tego, jak go wdrożyć, może to być wymowne. Myślę, że fakt, że początkowo myślałeś o JSON RPC, pokazuje, że skłaniasz się we właściwym kierunku, więc uważaj na każdego, kto ma wizje złożonych interakcji XML i XSLT.
  • Jeśli możesz oczekiwać przyzwoitej obsługi JavaScript w przeglądarce, poszukaj kogoś, kto ma doświadczenie w tworzeniu frameworków JS, takich jak Backbone.js, JavaScriptMVC itp. W takim przypadku możesz zrobić całą aplikację (w zasadzie) w przeglądarce i być może obsługiwać ją z Node.js lub czymś podobnym ... więc spójrz w stronę dobrych twórców JS. Jeśli powiedzą, że wolą pisać JS w CoffeeScript, prawdopodobnie są jeszcze lepszymi programistami JS.

Tylko kilka przemyśleń z mojego doświadczenia w okopach, ale jeśli mój dział zatrudnia nowego programistę, powiedziałbym im, żeby szukali.

Chciałbym, aby mój dział miał budżet na innego programistę ...

Jason Lewis
źródło
Serwer istnieje, a inni programiści (niż nowi programiści) sprawią, że API się wydarzy. Nie dotkną starszego systemu ani nie będą odpowiedzialne za osobliwości - inni to zrobią, chociaż ten programista może poprosić o konkretną fasadę. Bez rubinu, ponieważ nie ma stron generowanych dynamicznie - a ten programista byłby czystym kodowaniem JavaScript w przeglądarce (odpowiedzialnym również za HTML i CSS). Jeśli ostatecznie nie zatrudnimy innego programisty, zrobię to sam w Backbone.js przy użyciu JSON RPC, więc dziękuję za małą weryfikację.
psr
1

Uwaga: To po prostu moja opinia, więc nie rzucaj we mnie zlewem kuchennym;)

Myślę, że wymieniasz nazwy dwóch wyraźnie różnych pozycji (co może być trochę mylące).

Inżynier oprogramowania : Inżynier. Ten, który jest silny w rozwiązywaniu abstrakcyjnych problemów, które niekoniecznie są powiązane z żadną konkretną platformą. Dobra znajomość wzorców projektowych, algorytmów (zarówno znanych algorytmów, jak i projektowania i analizy algorytmów), pewnej siły w algebrze liniowej i być może rachunku różniczkowego. Kiedy w przeszłości zatrudniałem inżyniera oprogramowania, nie martwiłem się tak bardzo wiedzą na temat konkretnych dziedzin, jak umiejętnością rozwiązywania złożonych problemów.

Twórca aplikacji internetowych : ktoś, kto zna tajniki budowania aplikacji internetowych. Rozumie architektury serwerowe a po stronie klienta i jak skutecznie komunikować się między nimi. Zna standardy W3C, zarówno ukończone, jak i stany WIP. Rozumie, jak działają bazy danych i jak je optymalizować w razie potrzeby (optymalizacja zapytań, buforowanie bazy danych, indeksowanie itp.). Zrozum także różne mechanizmy buforowania i inne sposoby optymalizacji ich aplikacji. Rozumie również konwencje semantyczne.

Prawdopodobnie jest tam kilka rzeczy, za którymi tęsknię, które mogę wypełnić, gdy o nich myślę.

Z opisu tego, czego szukasz, wydaje mi się, że wcale nie szukasz inżyniera oprogramowania; szukasz programisty aplikacji internetowych.

Najpierw sprecyzuję, kogo szukasz i jakiej wiedzy oczekujesz od kandydata. Może ci trochę pomóc.

Demian Brecht
źródło
Widzieć programmers.stackexchange.com/questions/45681/… - pisanie wymagań pracy dla programisty aplikacji internetowych. Stąd nazwa. Chcę, aby twórca aplikacji internetowych działał wyłącznie na przeglądarkach (jak już powiedziałem). Więc żadne dane DB nie są istotne. Umiejętności inżynierii oprogramowania byłyby.
psr
Naprawdę? Chcesz kogoś pracującego w systemie internetowym, który nie rozumie baz danych i rzeczy po stronie serwera? Eesh.
Demian Brecht
Nie wspominając o tym. Nie jest zbyt często, że twórca aplikacji internetowych po stronie klienta będzie musiał wiedzieć, jak najpierw przejść przez szerokość drzewa lub jak określić najgorszy czas działania dla danego algorytmu lub implementacji kryptosystem. Tylko mówię. Powiedziawszy to, jeśli zatrudniasz dla Google lub Amazon, mogę wycofać tę uwagę.
Demian Brecht