4 Good Reasons Why You Should Consider Outsourcing to Poland

Outsourcing to Poland is nothing new. Our country is a growing market for foreign investment and its steady expansion during the last few years suggests a bright future.

Poland ranks as 12th most attractive offshoring country in the world, according to A.T. Kearney.

But let’s leave these economic statistics aside and discover what makes Polish developers so hot on the global market.

Why international organizations should consider outsourcing to Poland

Poland’s tech scene may not be as mature as in other European countries, but we have a lot to be proud about.

Knowledge

Poland’s tech scene may not be as mature as in other European countries, but we have a lot to be proud about.

First, we’re growing quickly. According to Dealroom.co, Central and Eastern European tech startups raised €177 million in funding last year. Four years before, it was just €15 million. And Poland is among the countries that attract the biggest funding rounds.

Polish developers are known for their proficiency in general technical knowledge. Did you know that Polish IT professionals get the highest ranks in international programming contests like Microsoft Imagine Cup, Google Code Jam, TopCoder, or the Central European Programming Contest (CEPC) every year?

Poland’s leadership in the IT sector is clear – we currently occupy the 4th position in TopCoder’s global ranking.

And we keep aiming high. Polish development shops cooperate not only with the best tech startups but also with tech giants around the world.

Communication

Tech expertise needs to be paired up with soft skills. Fluent English is a standard among Polish graduates and employees, placing them high in the English-driven tech world.

At Sunscrapers, we look for developers who have technical knowledge, but also a high level of interpersonal skills and business understanding. We inspire them to take the initiative and improve their soft skills.

As a result, our team can communicate successfully, understand the needs of our clients, and deliver amazing results while working remotely.

Cultural proximity

Poland is a great outsourcing partner because of the similarity in cultural and social norms. Naturally, there exists a small gap between the Polish and Western mindset, but then again every nation should be proud of its traits, right?

That being said, we are way more similar to Western professionals and business partners than developers from continents like Asia or Africa. Plus, there are also strong institutional ties between global partners that help Polish development shops in cooperation with foreign clients.

Economic issues

Poland remained stable after 2008 crisis and today enjoys a steady growth rate. During the last decade, the country’s GDP per capita has almost doubled. Poland is also a member of EU, NATO, WTO, OECD, and ESA and has a transparent legal system.

We’re experienced in providing IT services to international clients. In 2016, the IT services market in Poland reached $7.9 billion. Around 140,000 IT professionals work in over 450 outsourcing centers today.

Poland ranked first in the AHK survey of top investment locations in the CEE region and today is considered as one of the most attractive spots for nearshore outsourcing in Europe.

The high quality of Polish IT services combined with excellent communication skills and economic factors are the driving forces that make Poland one of the top IT outsourcing destinations in the world.

Would you like to learn more about our outsourcing services? Drop us a line.

How to Start a Software Development Project?

Starting a software development project might raise many questions. No matter if it’s a web development or mobile development, you have to know what to expect. Here’s a short summary of steps needed to kick off a project at Sunscrapers.

The process will differ in some aspects, from case to case. That’s because we approach every project individually. Over the years, we’ve learnt that software development is far too complex to tar everyone with the same brush. What’s most important is the execution and decision making in a given business context. Market landscape, leadership, resources – all those factors  have an impact on the ultimate success of an application. We know that this context is inevitably different for everyone. That’s why we must approach those individual circumstances in – you guessed it – the individual way.

How do we start then?

1. An introductory call

We set up a 15-30min Skype (or Hangouts) video call to get to know each other. This is the moment to talk about your vision, goals, requirements, resources and constraints. We will also tell you more about Sunscrapers and our software development services.

The goal of the call is to give us enough input to determine:

  • whether we’re the right partner when it comes to our expertise and your needs – we’ll be honest if for any reason (e.g. technology mismatch) we’ll not be able to guarantee the top quality service,
  • how we could help – what service(s) and competences we think are needed, what engagement model would work best, what we can propose,
  • what next steps would make most sense.

We care about your time and needs, that’s why we won’t discuss functional aspects of the application during this call. Without determining the fit first it will probably a little bit too early to do that.

2. Project proposal

Based on your individual circumstances as well as your progress up to date we’ll propose the best way to tackle the software development project. Essentially there are three entry points for collaboration:

  1. Product discovery workshop – aimed for those who just have an initial idea of what should be accomplished, don’t know much else and need our help in clarifying the business concept, it’s assumptions and feasibility. 
  2. Scoping session – most of projects will start with this step. It’s goal is to take all your input (brief, list of functionalities / requirements, mockups – everything or anything you have), analyse it, follow up with Q&A sessions (that’s where we discuss functional requirements in details) and then start our own internal process aimed at putting together a solid strategy for product development in a formal project proposal document. 
  3. Code audit – if we’re taking the project over from a different team, we will want to start with reviewing the existing codebase to get an opinion about it’s current state. Then, if the project backlog is well defined we may jump straight to development, or otherwise revert to the scoping session. 

3. Agreement

Once we’re mutually happy with the project proposal, we will move on to sort out the formalities needed to kick off the project.

4. Onboarding

Alright, all set! Our project manager will now take you through our client onboarding so that you understand how our collaboration will look like in detail. We’ll tell you about the tools, working process, roles and responsibilities to make sure we all make the most of our time together.

The whole process is designed to bring as much value to our prospects as possible. Our existing clients happily admit they’ve learnt a lot during our initial conversations! Even if we’ll not be able to help, we’ll always look for genuine ways to help, guide or recommend other solutions/providers. That’s simply the way we are.

If you’d like to see the process in practise and learn something on the way – do get in touch to check if we’ll be able to help you with your project.

 

Setting up HTTPS on Nginx with Certbot and Letsencrypt

Security of our applications is nearly as important as the business logic. As software developers we are completely aware of it. That’s why we follow all the good practices and avoid anti-patterns that may put our apps to danger. We update the libraries we use whenever a security patch is released. We look out for new vulnerabilities. Making our software as secure as possible and keeping it that way has become our point of honor. Nevertheless SSL and HTTPS tend to be overlooked by some of us. Maybe because it was a pain to obtain and set up the certificate? Maybe it was expensive? If those were your excuses not to secure your site with HTTPS, then you’re out of luck, because they’re no longer valid! Let’s Encrypt (https://letsencrypt.org/) is a Certificate Authority (CA) offering free certificates and a tool that makes it easy to obtain and renew them. In this post, we’ll explore how to use this tool (it’s called Certbot, by the way) and how to set up our Nginx server properly to use the certificate and provide secure connection.

We’re assuming we have a server with Ubuntu 16.04 and a user with `sudo` privileges. Let’s get into it.

Installing Certbot

First we need to install „ppa:certbot/certbot” repository:

sudo add-apt-repository ppa:certbot/certbot

 

Then update the apt package info and install Certbot:

sudo apt-get update

sudo apt-get install certbot

 

For setup instructions on other operating systems, visit https://certbot.eff.org/

Obtaining the certificate

In order to get the certificate, Let’s encrypt has to confirm that the domain we’re getting the certificate for belongs to us. To do that, Certbot creates a special filewe need to make available via our server. Then Let’s Encrypt validation server will make a request to reach the file. If it succeeds, validation is complete.

There are several Certbot plugins that automate the process. We’re going to use `Webroot`. (There’s also nginx plugin, but it alters the server configuration, and we don’t want that. That’s why we’re using Webroot instead).

When we request the certificate, Certbot will create the validation file in hidden `.well-known` directory. We have to serve files from that directory. To do so, edit your nginx configuration file and add new location block inside server section for your application:

location /.well-known {

    root /var/www/html/;

}

 

Now run syntax check and restart your nginx server:

sudo nginx -t

sudo systemctl restart nginx

 

After that, we can run certbot:

sudo certbot certonly -—webroot —-webroot-path=/var/www/html -d my-domain.com -d www.my-domain.com

 

Here we’re assuming that `/var/www/html` is the root directory of our server. It should exist if you’re using Nginx. If it’s not there -create it. You will have to enter your email address and accept the terms of service if Certbot wasn’t run on your machine before. After the operation is finished, you should see a block of text starting with `IMPORTANT NOTES:`. There you will have paths where your certificates has been saved. It’s best to copy this information and save it somewhere safe.

The certificate files should be created in `etc/letsencrypt/archive`. Certbot will also create symbolic links to them in `/etc/letsencrypt/live/<your-domain.com>/` along with a README file containing short explanation what generated files are for.

There should be four files:

  • cert.pem
  • fullchain.pem
  • privkey.pem
  • chain.pem

It’s a good idea to create a secure backup of those files.

Generating Diffie-Hellman group

This step is recommended to increase security. Use `openssl` to create a `dhparam.pem` file:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

 

The `dhparam.pem` file will be created in `/etc/ssl/certs/dhparam.pem`. We will use it in `ssl_dhparam` setting in nginx configuration in the next step.

Configuring Nginx

In this step we will create a new server block for our application with https and modify the one we had so far for http. The file you’ll want to open usually lives in `/etc/nginx/sites-available/`. Let’s take a look at the settings we’ll place there.

 

First of all, enable ssl and use our certificate:

listen 443 ssl http2;

ssl_certificate /etc/letsencrypt/live/<your-domain.com>/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/<your-domain.com>/privkey.pem;

 

Add `dhparam` pointing to the Diffie-Hellman group we created earlier:

ssl_dhparam /etc/ssl/certs/dhparam.pem;

 

Some other recommended settings:

ssl_prefer_server_ciphers: on;

ssl_ciphers: "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH”;

 

There are other nginx settings you can play with, explained in nginx documentation (http://nginx.org/en/docs/http/ngx_http_ssl_module.html).

 

We’ll add a command that will make Nginx redirect users from http to secure https connection, in the server block we had before (the one used with http):

return 301 https://$server_name$request_uri;

 

Your server configuration should look somewhat like this:

server {

    return 301 https://$server_name$server_uri;

    server_name example.com;

    listen 80;

}

 

server {

    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;

    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";

    ssl_prefer_server_ciphers on;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    listen 443 ssl http2;

 

    location /.welll-known/ {

        root /var/www/html/;

    }

 

    … other settings … 

}

 

Now check your configuration for errors:

sudo nginx -t

 

… and restart the server:

sudo systemctl restart nginx

 

Now you should be able to access your site both with http and https!

 

PWA (Progressive Web App) – pierwsze kroki

Skrót PWA (Progressive Web App) od roku 2015 pojawia się coraz częściej na konferencjach związanych z technologiami web i mobile. Szczególnie na tych organizowanych przez Google’a. Czym jest PWA? Jakie korzyści i pułapki są z nim związane? Na te pytania postaram się odpowiedzieć w tym wpisie.

5B

Na świecie jest ok 5 bilionów urządzeń podłączonych do sieci, z czego bardzo dużą część odgrywają tu urządzenia mobilne. Dlatego w dzisiejszych czasach termin “mobile-first” nie powinien być nikomu obcy. Badania pokazują, że podczas korzystania ze smartfona 3 razy więcej osób korzysta z witryn webowych niż z natywnych aplikacji. Niestety te same badania pokazują zupełnie odwrotny trend jeśli chodzi o czas spędzony w aplikacji. W tym wypadku native-apps są zdecydowanym faworytem. Dlaczego tak się dzieje? Na to pytanie można odpowiedzieć jednym stwierdzeniem “native like experience”.

Native like experience

Prawda, że wygodniej jest otworzyć ulubioną aplikację poprzez kliknięcie w ikonę na ekranie startowym, niż wklepać adres w przeglądarce ? Problem zaczyna się, gdy w danym momencie nie mamy dostępu do sieci. Przeglądarka dla zabicia czasu serwuje nam szary ekran z dinozaurem. Z kolei aplikacje natywne cały czas wyświetlają swój UI oraz bardzo często informacje, które udało się pobrać podczas ostatniej wizyty. Dzięki temu nadal mamy dostęp do danych, które mogą nas interesować.

Gdy brakuje sieci zawsze można pograć w dino 🙂

Wisienką na torcie są oczywiście push-notifications. Lubimy dostawać powiadomienia, nawet jeżeli nie mamy otwartej aplikacji. Zawsze cieszymy się na nowe zdjęcie kota lub odpowiedź na nasz komentarz. Jesteśmy wtedy bardziej zaangażowani. I o to zaangażowanie chodzi wszystkim twórcom i wydawcom aplikacji. Do pewnego czasu wszystkie wyżej wymienione funkcjonalności dostępne były tylko w natywnych aplikacjach. Wszystko zmieniło się w momencie zaprezentowania podejścia PWA – czyli Progressive Web Application.

PWA. A co to? A komu to potrzebne?

PWA jest niczym innym jak “zwykłą” aplikacją webową (HTML + CSS + JS) wzbogaconą o kilka szmerów-bajerów, które pozwalają osiągnąć wyżej opisany “native experience”.

Aplikacja musi spełniać następujące wymogi (pwa checklist):

  • Jest serwowana przez HTTPS dla zachowania bezpieczeństwa danych.
  • RWD – czyli responsive web design – krótko mówiąc musi dobrze wyglądać zarówno na Desktop’ie, jak i na platformach mobilnych.
  • Działa nawet wtedy, gdy nie jesteśmy podłączeni do sieci (nie musi to być cała funkcjonalność, ale przynajmniej ekran informujący o braku połączenia).
  • Posiada plik ‘manifest.json’ opisujący apkę, dzięki któremu możemy dodać skrót do ekranu startowego.
  • Ładuje się szybko nawet przy wolnych połączeniach typu 3G.
  • Jest Reactive (i nie chodzi tu wcale o bibliotekę React, a o to, że słowo Responsive było już zajęte przez RDW) 🙂 – głównie chodzi o to, że aplikacja reaguje szybko na akcje użytkownika np. przełączanie ekranów.

Wszystkie te kryteria możemy spełniać iteracyjnie. Jeśli mamy już aplikację webową, która dobrze wyświetla się na urządzeniach mobilnych to zostaje nam do zaimplementowania kod zapewniający działanie w trybie offline i dołożenie małego pliku manifest.json. W następnych krokach możemy skupić się na sprawach czysto wydajnościowych, czyli na szybkości ładowania aplikacji i na jej responsywności (szybkości w działaniu).

Offline-first & Service Worker FTW

Jednym z najważniejszych aspektów PWA jest działanie w trybie offline. Możemy to zaimplementować na kilka sposobów. W minimalnej wersji możemy wyświetlać nasz własny ekran, z informacją o braku dostępności sieci. W kolejnych etapach możemy zapisywać w pamięci urządzenia dane, które udało nam się pobrać podczas ostatniej wizyty. Ostatnim stopniem wtajemniczenia jest pobieranie danych w tle. Jak tego wszystkiego dokonać ? Z pomocą przychodzi Service Worker API. O tym jak dokładnie działa Service Worker potrzebny byłby osobny post. W wielkim skrócie – dzięki SW możemy określić, które zasoby powinny zostać zapisane do cache’a, a po które chcemy sięgnąć w głąb internetowych czeluści. To, co najważniejsze zapisujemy na później, tak, aby przy kolejnym odpaleniu aplikacji użytkownik nie musiał czekać aż pliki zostaną ściągnięte z naszego serwera. Oprócz zarządzalnego cache’owania Service Worker pozwala także na implementację Push-Notifications i Background Sync.

Pokaż mi manifest.json a powiem ci kim jesteś

Plik manifest.json służy do opisu aplikacji. Zamieszczamy w nim informacje na temat nazwy apki, ikon i adresu początkowego. Przykładowy plik może wyglądać tak:

{
    "name": "Sunscrapers PWA",
    "short_name": "Sun PWA", 
    "icons": [{ 
      "src": "/android-chrome-192x192.png", 
      "sizes": "192x192", 
      "type": "image/png" 
    }, { 
      "src": "/android-chrome-512x512.png", 
      "sizes": "512x512", 
      "type": "image/png" 
    }], 
    "theme_color": "#ffffff", 
    "background_color": "#ffffff", 
    "display": "standalone" 
}

Nazwa naszej aplikacji – name – wyświetlana będzie na tzw. splash-screen’ie, natomiast skrócona nazwa – short_name – wyświetlana będzie np. pod ikoną na pulpicie urządzenia.

PWA pozwala na dodanie ikony na pulpicie i wyświetlenie splash-screen

Możemy też ustawić kolor tła dla splash-screen’u (background_color) oraz kolor jaki ma przyjmować interfejs przeglądarki i telefonu w momencie odpalenia aplikacji (theme_color). Ostatnia pozycja – display – pozwala nam na określenie w jakim trybie ma zostać uruchomiona aplikacja. Tryb standalone ukrywa interfejs przeglądarki sprawiając wrażenie aplikacji natywnej.

Aplikacja w trybie display-standalone i odwiedzona w przeglądarce

Wszystko super – tylko co ja z tego będę miał?

Dla programistów niewątpliwym plusem będzie wspólny code-base. Przy PWA tworzymy rzeczywiście jedną aplikację, która uruchamia się na wszystkich platformach (Desktop, iOS, Android etc.) Czego nie można jednak powiedzieć o innych technologiach jak React Native, Ionic czy Cordova. Tam owszem piszemy jeden code-base, ale na platformy mobilne. Często bywa też tak, że różnice architektoniczne pomiędzy platformami nie pozwalają na współdzielenie kodu. W przypadku PWA możemy mówić o jednej platformie jakiej jest WEB – pod nią piszemy jeden, współdzielony kod.

Dla wydawców aplikacji zaletą Progressive Web App są aktualizacje. Żeby wypuścić na rynek nową wersję aplikacji mobilnej trzeba się zwykle nieźle natrudzić, oczywiście w zależności od platformy. Zgłoszenie do sklepu, przejście review… Następnie użytkownik po otrzymaniu notyfikacji oraz zaakceptowaniu aktualizacji musi zaktualizować aplikację
W przypadku PWA jedyne co musimy zrobić to wgrać nowe pliki na nasz serwer. To wszystko! Przy kolejnym uruchomieniu aplikacji użytkownik dostanie najnowszą wersję kodu. Proste, prawda? 🙂

Dla biznesu PWA będzie zapewne źródłem oszczędności. Skoro wszystko można napisać przy pomocy technologii webowych, to po co zatrudniać Android i iOS developerów? 😉 PWA nie jest jeszcze jednak w pełni gotowe zastąpić aplikacje natywne, zatem developerzy mogą spać spokojnie, nie martwiąc się o swój dalszy los.

Z kolei użytkownicy skorzystają z szybkości reakcji aplikacji, jej responsywności i z tego, że będą mogli ją uruchomić na każdej platformie. Microsoft ogłosił niedawno, że ich wyszukiwarka zaimplementowana w Windows Store, będzie wyszukiwała również Progressive Web Apps i będzie pozwalała na ich zainstalowanie w systemie. To sprawi, że użytkownicy jeszcze bardziej odczują “native-like-experience”.

Zbyt piękne żeby było prawdziwe – gdzie tkwi haczyk?

Jak to mówią: każdy kij ma dwa końce i nie wszystko złoto co się świeci. Nie bez powodu we wstępie wspomniałem o Google’u. To właśnie Google bardzo aktywnie i intensywnie promuje Progressive Web Apps. Apple raczej o tym nie wspomina, obawiając się prawdopodobnie spadku aktywności w App Store. Po co użytkownicy mieliby wchodzić do sklepu, skoro mogą odpalić znany dobrze adres w przeglądarce i dodać aplikację bezpośrednio do ekranu startowego ? No właśnie. Badania pokazują, że na każdym kroku instalacyjnym w optymistycznym wypadku tracimy aż 20% użytkowników.

Poza tym, nie wszystkie funkcjonalności telefonu dostępne są przez WEB API. Chociaż ich liczba z każdym rokiem wzrasta, to nie każdy dostawca przeglądarki implementuje je w tym samym czasie. To co oferuje nasz telefon poprzez WEB API, możemy sprawdzić za pomocą strony https://whatwebcando.today/.

Dodatkowym technicznym problemem jest niestety brak implementacji Service Worker API w przeglądarce Safari. W takim wypadku musimy szukać innych rozwiązań cache’owania plików, chociaż sami twórcy Safari umieścili implementację Service Worker API na ich liście 5-years-plan.

Nie oznacza to jednak, że PWA na iOS się nie opłaca. Wręcz przeciwnie. Jak pokazują use-casy zastosowanie Progressive Web App pozwala na zwiększenie convertion-rate nawet o 75%. Forbes poprzez implementację Progressive Web App o 43% zwiększył czas przebywania użytkowników w aplikacji. Housing.com o 40% zmniejszył bounce-rate, czyli liczbę osób opuszczających aplikację po obejrzeniu zaledwie jednej strony.

Quo vadis PWA

Podsumowując – Progressive Web App to doskonały sposób na uatrakcyjnienie aplikacji webowej. Małymi krokami możemy przekształcić ją w PWA i zyskać na wydajności, czasie, wspólnym kodzie dla wielu platform i zadowoleniu użytkowników.

Wprowadzenie do GIT – Piotr Szpetkowski

Ta prezentacja jest częścią cotygodniowych tech talków w Sunscrapers. Prezentacja stanowi ogólny przegląd GITa i jego podstawowych funkcjonalności. Jeżeli chcesz zacząć pracować z tym systemem kontroli wersji, obejrzyj nasz filmik!

Czy prezentacja była dla was przydatna? Dajcie znać!

Dlaczego programowanie w parach jest przydatne?

Niektórzy programiści uważają programowanie w parach (po ang. pair programming), za jedną z najbardziej pomocnych rzeczy w ich pracy. Inni z kolei nie do końca rozumieją ten koncept – uważają go za trudny w realizacji i niezbyt racjonalny. W Sunscrapers uważamy, że programowanie w parach może naprawdę czynić cuda! Jeżeli zastanawiasz się jakie są jego zalety, przeczytaj listę stworzoną na podstawie naszych doświadczeń.

Inny punkt widzenia

Czy kiedykolwiek zaciąłeś/aś się na szczególnie trudnej części twojego kodu, z którą nie była w stanie poradzić sobie nawet twoja gumowa kaczka? Cóż, programowanie w parach daje ci możliwość spojrzenia na twój problem z innej perspektywy. Towarzyszący ci developer może wpaść na rozwiązanie szybciej niż ty, dzięki czemu nie musisz tracić czasu na bezowocne rozmyślania. Co więcej, programowanie z kimś innym pomaga zwiększyć produktywność i angażuje cię do bardziej kreatywnej pracy.

Głupie błędy

Małe błędy w kodzie są czymś zupełnie naturalnym, ale potrafią bardzo zirytować i pochłonąć twój cenny czas. Czasami jedna niewielka pomyłka jest trudna do wykrycia, zwłaszcza jeżeli musisz przejrzeć całą swoją pracę samodzielnie. Współuczestnik w programowaniu może być tutaj wybawieniem, gdyż zauważa błędy w kodzie w momencie w którym powstają. To prawdziwe koło ratunkowe oszczędzające nie tylko cenny czas, ale też twoje oczy! 🙂

Szybsze uczenie się

Każdy kto wprowadzał nowy język programowania lub nowych członków zespołu do projektu, wie doskonale jakie to bywa trudne i czasochłonne. Programowanie w parach po raz kolejny przychodzi z pomocą! Pozwala na szybsze uczenie się nieznanych zagadnień, a wdrażanie nowych funkcjonalności przebiega sprawniej. Również szkolenie kolegów i koleżanek z pracy jest o wiele łatwiejsze – szybciej się wdrażają, pracując z bardziej doświadczonymi programistami.

Zabójca “syndromu oszusta”

Wspominaliśmy jak radzić sobie z niską samooceną w jednym z naszych poprzednich postów dotyczącym syndromu oszusta: 5 Ways to Fight the Impostor Syndrome. Programowanie w parach jest jedną z metod polecanych przy walce z impostor syndrome. Dzięki wspólnej pracy z drugim developerem popełniasz mniej błędów, co skutkuje lepszej jakości kodem. Czasami twój/twoja partner/ka może być twoim nauczycielem, innym razem to ty możesz pochwalić się swoją wiedzą. Najważniejsze jest jednak to, że czujesz się lepiej, swobodniej i bardziej kompetentnie jako programista/programistka.

Umiejętności miękkie

W Sunscrapers wierzymy, że umiejętności miękkie są bardzo ważne w pracy każdego developera. Radzenie sobie z presją czasu czy docieranie się z nowym klientem może sprawiać trudności. Możesz być najbardziej utalentowaną osobą na świecie, ale ciężko będzie ci pracować, jeżeli nie potrafisz radzić sobie z ludźmi i problematycznymi sytuacjami. Tu z odsieczą znowu nadchodzi programowanie w parach! Wspólna praca z drugą osobą może być świetną okazją do nauczenia się dobrych praktyk komunikowania się z innymi. Pozwala zdobyć umiejętności interpersonalne, dzięki czemu jesteś bardziej pozytywny/a i elastyczny/a. I… stajesz się lepszą wersją siebie!
Organizujemy programowanie w parach najczęściej jak tylko możemy. To proste – szykujemy sobie wygodne miejsce w biurze i działamy. Jesteśmy świadomi, że koncept programowania w parach nie jest dla wszystkich. Nie ma nic złego, jeżeli nie do końca to czujesz. Pamiętaj tylko, aby robić regularny code review ze swoim zespołem 😉

Working Models in Software Development

There are different working models in software development. Differences between them might seem subtle, but actually they vary in terms of price, attitude and added value. Think about what you need and choose the best one for your company with our comprehensive guide.

Team leasing, body leasing or body shopping

Team leasing, which is also called body leasing or body shopping, is form of outsourcing conducted by a software company. Software company is an intermediary between client and developers. Such firm is dynamically looking for developers to meet specific project’s requirements, but it doesn’t lead the programming itself. Software company arranges two job interviews. First one verifies candidate’s soft skills and is conducted by a software company. Second one is a technical interview carried out by the client. Signing a contract between software company and developer happens only after client’s approval. Then, a developer is passed on to exclusively work for a chosen client, usually in client’s office.

What’s interesting is that an intermediary software company is an employer of a developer. That is why it is also responsible for administration and payroll of this employee. Salary, leave – all is handled by a software company. Usually a software company operates on a commission basis.

Pros

Body leasing is probably the fastest option, which makes it a great advantage for big companies. A software company usually employs a lot of recruitment specialists, who can easily and rapidly choose a bunch of interested candidates. And since it has the access to so many developers, it is also able to move team members between different clients and projects quite easily. What’s also important is that there is a lot of companies that do such intermediary services, so their prices should be rather attractive.

Cons

Choosing working models like team or body leasing is only profitable when the client’s project is big enough. Huge companies need tremendous number of developers and they need them fast. This may be associated with the considerable threat – hiring low quality employees. The biggest issue here is the speed of recruitment process itself. It is so rapid, that negotiations with developers are mostly based on giving them higher salaries, not checking their skills. Software companies don’t conduct technical interviews, which doesn’t help either. Another problem with body leasing is a matter of an identification with a company. Employees don’t feel connected to anyone. They don’t have all in-house benefits and very often they don’t identify themselves as a team members, which can be an issue with building a strong, devoted team.

Will team leasing work for me?

Team leasing is a good option if your company is under the pressure of time and cares more about the amount of developers and less about their quality. If flexibility in increasing and decreasing your team’s members is extremely important to you, you should consider team leasing. Also, if your company works on difficult projects and keeping employees in-house is a struggle – body leasing might be the way to go.

 

Team augmentation and dedicated team

Team augmentation and dedicated team working models are based on developers that are working full time for a client, but are hired by a remote software shop that specialises in nearshoring or offshoring solutions.

Team augmentation helps with insufficient manpower in a client’s company. Tech leadership and project management is usually on the client’s side. Software shop is providing know how and experience gained from other projects and encouraging developers to demonstrate proactive attitude.

Dedicated team, on the other hand, is about setting up a more autonomous group of developers. Tech leadership and project management are on a software shop’s side.

In both of these models, software shop is taking care of all employee’s benefits, like office space, hardware, leaves, worktools, but also professional development, wellbeing and entertainment. Developers are usually more committed to the company, because they are working in an environment conducive to their progress.

Developers can be either recruited for a specified project, like in team leasing, or chosen from the internal resources of a company. We believe that there is a better chance to access skilled and proven experts in software development with the second option. That’s why at Sunscrapers we have our own, independent standards of the recruitment process, so we can hire the most qualified, yet versatile developers.

Pros

Software development company that offers team augmentation and dedicated teams, usually provides added value to its services based on its past experiences and gathered know how. When it comes to price, dedicated team or team augmentation are almost always cheaper than in-house recruitment. While the initial cost may seem comparable in relation to a salary of a local, in-house employee, web development company pays for workplace, equipment, benefits or administration. It also cares for employees’ development and entertainment, making them more productive and harmonious. All of this is possible while maintaining flexibility in the recruitment process.

Cons

What can be a hurdle with both team augmentation and dedicated team is remote cooperation. Communication or a project management will require some extra effort. Another problem is difficulty in carrying out a project that requires a very broad range of technologies. Software shops usually specialise in particular technologies in contrary to big recruitment companies. Software shops are experts in specific areas, for example Python development or mobile apps production.

When it’s a good option?

Team augmentation and dedicated team models are perfect for medium and long-term projects. If you need committed developers to work closely on your projects and value for money is an important factor – it might be the best solution for you.

 

Project

With project based cooperation you set a goal to achieve in a specified time and budget and a software shop handles the delivery. This working model is a great decision when you need a web development shop to comprehensively take care of your standalone project. When you know what you want, you can assign everything to a software shop with multiple competences. Such projects are usually completely independent from your daily operations. Cooperation costs are based on fixed fee or time and material – we’ve mentioned differences between them in one of our previous posts. Are you doomed to fail your IT project? Hourly rate vs. fixed price discussion

Pros

Software shop provides added value to the project through its experience. Thank to previous projects and ability to upskill, web development company is able to deliver a requested solution. Software shop takes care of everything. It offers not only on-demand availability, but also access to a range of specialties: design, web/mobile development or consulting. All worries are removed from client’s shoulders with no obligation of long-term cooperation.

Cons

The major drawback of this working model is its price. Usually, it’s higher than other solutions, but there is a reason for that. Developers may be assigned to a project only for a short, irregular periods of time. And since project is held completely by a software shop, it generates more costs. Software shop has to engage more manpower without long-term cooperation, which might be pricey.

Is project model an option for me?

Project based model works best with short and medium-term ventures. It’s a good option if you would like to work with a partner with broad competences and you need flexibility in choosing them. Also if you are looking for an exact specialisation you can choose a software shop basing on its know-how, quality of work and relevant experience. Finally, project model is a great solution when you don’t have your own IT competences and outsourcing is the only option.

Considering your true needs is extremely important while choosing the best working model for your company. If you have any questions, leave a comment below. If you need help in choosing the right working model for your business – contact us!

Sunscrapers in Top Web & Software Developers in Poland by Clutch

We thoroughly check opinions about a product before we make a purchase. It is pretty obvious right? The same goes with looking for a reliable web development company. We know how important it is to research information before cooperation starts. And at this point there is a rescue for all companies looking for software providers – Clutch. Clutch is a B2B market research firm that helps to find partners for one-off project or a long-term relationship. It uses an innovative research process that melds a traditional research and newer consumer review services.

We were really thrilled to hear that we were showcased in their recently updated listing of Top Polish Web & Software Developers! We stood out from almost 140 companies with a thirteenth place.

Leaders Matrix

Leaders Matrix consists of 15th best Polish companies that are able to deliver. We feel that it is just the beginning of changing the image of Polish developers in the world!

What are our biggest advantages? Our clients mentioned our engagement in offshoring cooperation, which made any communication barriers or time zone differences irrelevant. Also our superior English skills and uncompromising responsiveness were indicated as our strong points. What is more, our our knowledge and passion for Python was much appreciated in our client’s reviews and we are more than happy to read that!

Highlight from our client’s review.

Our startup client wrote that “For a company the size of Sunscrapers, it’s unique that they try to keep relationships on a personal level. They invest in people and find quality programmers who don’t only care about being paid a lot. We are glad we found Sunscrapers as a partner.”

Big thanks everyone!

We feel grateful for being acknowledged by Clutch. Thanks to the support from our clients, we are able to solve their problems with technology. Big thanks to our team as well. We are really proud of our developers: keep up the good work!

If you would like to read more reviews, check out our Clutch. Feel free to contact us if you have any questions!