Projekty prowadzimy w sposób umożliwiający realizację nie tylko zakresu projektu, ale i jego wizji.
- Stosujemy metodyki agile, nazywane lekkimi, zwinnymi, lub (rzadziej lecz bardziej adekwatnie) adaptacyjnymi,
- wykorzystujemy architektury sterowane modelem (Model-Driven Architecture - MDA) od czasów, kiedy jeszcze trzeba było tłumaczyć naszym kolegom z konkurencji czym one są,
- rozwiązania informatyczne powstają u nas w językach Java, PHP i Ruby - decyzję, który język wybrać podejmujemy w oparciu o potrzeby i oczekiwania Klienta.
Języki programowania
Proszę nie ufać tym, którzy zapewniają, że w jednym języku programowania mogą napisać dowolną aplikację.
Jest to przeważnie nieprawda, a w pozostałych przypadkach nadużycie.
Przy każdym z rozpoczynanych projektów decydujemy wspólnie z klientem, z której technologii skorzystać (klient rzecz jasna nie jest zobowiązany do podejmowania technologicznych decyzji, a jedynie wskazania swoich potrzeb).
W przypadku prostych aplikacji internetowych nie wytaczamy armat i nie zmuszamy klienta do kupowania oprogramowania klasy enterprise.
To jak usiłowanie sprzedania diabelskiego młyna klientowi, który chciał kupić huśtawkę.
Jeśli natomiast to właśnie diabelski młyn jest tym, czego oczekuje klient - z pełnym entuzjazmem sięgniemy po profesjonalne narzędzia.
Technologia Java
- Język programowania: Java (EJB lub, Spring + Hibernate, RCP lub Swing)
- Serwery aplikacji - Glassfish, JBoss
- Baza danych - dowolna, w praktyce najczęściej PostgreSQL, MySQL, Oracle
- Generatory - tak, stosowanie MDA
Technologia Ruby
- Język programowania: Ruby (framework Ruby on Rails 2 i 3)
- Serwer WWW: Apache + Mongrel
- Baza danych - dowolna, w praktyce najczęściej PostgreSQL i MySQL
- Generatory- tak, Rubik::Generator
Technologia PHP
- Język programowania: PHP (framework Propeller)
- Serwer WWW: Apache
- Baza danych - dowolna, w praktyce najczęściej MySQL
- Generatory- tak, Propeller::Generator
Agile i MDA
Stosujemy metodyki adaptacyje
- Iteracyjne wytwarzanie oprogramowania - po każdej iteracji (w przeciągu 2-3 tygodni) klient otrzymuje oprogramowanie z częścią zaimplementowanej funkcjonalności.
- Łatwe i elastyczne zarządzanie zmianami - dzięki architekturom sterowanym modelem (i generatorom) w dowolnej chwili możliwe są zmiany koncepcji dotyczące struktury projektu.
Stawiamy funkcjonalność oprogramowania ponad szczegółową dokumentację
- Nigdy nie zapominamy o tym, że Klient oczekuje optymalnego wykorzystania budżetu. Tworzenie rozbudowanej dokumentacji pociąga za sobą poważne koszty i decyzję o jej wytwarzaniu podejmujemy wspólnie z Klientem.
- W tradycyjnym podejściu do tworzenia oprogramowania przez piewsze tygodnie pisze się szczegółową specyfikację. My natomiast określamy tyle ile konieczne (lecz ani odrobinę mniej) i najszybciej jak to możliwe wykonujemy pierwsze prototypy oraz implementujemy pierwsze funkcjonalności. Szczegółowe specyfikacje w pierwszych etapach tworzą jedynie mylne przeświadczenie, że wszystko zostało już ustalone. My wraz z Klientem decydujemy podczas całego procesu, co jest dobre a co nie, w oparciu o testy kolejnych wersji oprogramowania.
- Pozostajemy z Klientem w ścisłym kontakcie we wszystkich fazach projektu, dzięki czemu na bieżąco ustalamy szczegóły wtedy, kiedy jest to niezbędne. Szczegółowe pytania rodzą się zawsze w trakcie implementacji, bez względu na to jak bardzo dokładną sporządzono wcześniej specyfikację.
Automatyzujemy procesy
- Stosujemy generatory wszędzie tam, gdzie jest to możliwe - dzięki temu powstaje wydajny, sprawdzony i wielokrotnie przetestowany kod, wolny od czynnika ludzkiego błędu.
- Traktujemy modelowanie jako element procesu implementacji, a nie wytwarzania poglądowej dokumentacji. Modele architektoniczne są zawsze w 100% zgodne z oprogramowaniem.
- Wykorzystujemy kompleksowy i otwarty system budowania projektów.
Stosujemy konwencje i wzorce projektowe
- Projekty informatyczne przejęte od innych zespołów projektowych to jeden z największych koszmarów dla programistów. Są to najczęściej setki trudnej do ogarnięcia i niespójnej z oprogramowaniem dokumentacji, zagmatwany kod programu.
My stosujemy konwencje, przy których przejście z jednego projektu do drugiego jest jak prowadzenie innego modelu samochodu. Jeśli ktoś przesiada się przykładowo z Poloneza do Chryslera, to może nie od razu prowadzi płynnie i pewnie, ale od samego początku wie jak to robić.

