Jak wygląda twarz typowego programisty?

Jak wygląda twarz typowego programisty?
Używając sieci neuronowej, na podstawie ponad 2000 zdjęć developerów z ośmiu krajów, stworzyliśmy uśrednione portrety typowej programistki i programisty.

Bardzo często spotykamy się ze stwierdzeniem „typowy programista”, ale to subiektywne określenie o dość niejasnym znaczeniu. Wiele zależy od osobistych doświadczeń - możemy wyobrazić sobie korpulentnego mężczyznę z brodą trzymającego w ręce puszkę piwa albo, równie dobrze, młodzieńca w okularach z grubymi oprawkami, swetrze i jeansach czy hipstera z wytatuowanymi ramionami i różowym irokezem. Zdecydowaliśmy się sprawdzić, jak naprawdę wygląda twarz „typowego programisty”.

By się tego dowiedzieć, przeanalizowaliśmy zdjęcia 1541 mężczyzn i 512 kobiet z DataArt, którzy na co dzień zajmują się programowaniem w ośmiu krajach – Argentynie, Bułgarii, Wielkiej Brytanii, Niemczech, Polsce, USA, Ukrainie i Rosji. Na podstawie wyników tej analizy, algorytm skompilował uogólnione portrety kobiety i mężczyzny zajmujących się programowaniem.

Przeciętni programiści – kobieta i mężczyzna; portrety powstały w wyniku działania algorytmu, który przetworzył zdjęcia ponad 2 tysięcy osób

Do scalenia wstępnie przetworzonych zdjęć użyliśmy metody Satya Mallick, która opiera się na wyborze 68 kluczowych punktów (współrzędnych kącików oczu, brwi, warg i nosa) w każdym analizowanym portrecie. Następnym krokiem była triangulacja obrazów na podstawie wspomnianych punktów. Dla każdej twarzy uśredniliśmy również kolory pikseli w wydzielonych trójkątach. Projekt został napisany w C++ i Python, z użyciem frameworku dlib/opencv.

Według głównego autora projektu, Andreya Sorokina, Senior Developera w DataArt, jednym z największych problemów było wysokie zużycie pamięci (ponad 4 GB) podczas przetwarzania tak dużej ilości obrazów. Zadanie skomplikowała również początkowa niska jakość zdjęć i różnice w kadrowaniu. Problemy zostały rozwiązane, a ilość zużywanej pamięci ostatecznie nie przekroczyła 100mb.

W drugim etapie badań inżynierowie DataArt sprawdzili, czy wybór technologii wpływa na cechy wyglądu specjalisty.

By stworzyć portret typowego programisty z podziałem na specjalizacje, nie tracąc przy tym konkretnych cech wyglądu twarzy, zachowaliśmy więcej właściwości indywidualnych. W każdej grupie przeprowadziliśmy analizę spektralną wektorów odpowiadających poszczególnym cechom.

Eksperyment pokazał, że istnieją drobne różnice. Programiści Java, na przykład, uśmiechają się częściej, a eksperci .NET mają gorszy wzrok, co potwierdzone jest faktem, że częściej noszą okulary.

Tak wygląda typowy Java developer

Twarz przeciętnego programisty .NET