Pengembang Perekrestok.ru. Apa yang kami lakukan dan siapa yang kami cari dalam tim

Hari ini kami ingin berbicara tentang merekrut orang-orang di tim TI supermarket Perekrestok.ru online dan bagaimana pekerjaan kami diatur “di dalam”. Ritel adalah industri dengan spesifikasinya sendiri yang menarik, dan sekarang tergantung pada pekerjaan kami, apakah ribuan orang akan diberikan produk setiap hari. Dalam posting ini kami memberikan dasar kepada para pemimpin tim kami, mereka berbicara tentang proyek-proyek Perekrestok.ru, metode kerja, serta bagaimana masuk ke tim dan apa yang dapat mereka tanyakan pada wawancara.



Sergey // iOS-teamlead



Segala sesuatu yang akan saya ceritakan, menyangkut pengembangan aplikasi baru kami dari supermarket online. Saya ingin segera mencatat bahwa dengan satu atau lain cara, sebagian besar pengembang memulai perjalanan mereka dalam semacam startup kecil atau secara umum dalam outsourcing. Ini membantu mereka untuk menumbuhkan apa yang disebut luas - bagaimanapun, mereka terus-menerus dihadapkan dengan banyak tugas yang sangat beragam dan berbagai teknologi.

Kami memiliki tim produk in-house, kami berbicara tentang pertumbuhan "mendalam", oleh karena itu kami terbiasa dengan orang-orang yang tertarik pada jenis pertumbuhan profesional ini.

Kami membuat produk yang digunakan oleh ribuan orang - ada cukup banyak kisah pengguna dan skenario perilaku di sini, sehingga persyaratan untuk produk tersebut serius. Tentu saja, satu set klasik untuk kasus-kasus seperti: keandalan, kinerja, ekstensibilitas, modularitas, rawatan dan pengujian.

Untuk memastikan semua ini, kami mengambil arsitektur Uber-RIB sebagai dasar, hanya menyisakan antarmuka modul dan DI didesain ulang sepenuhnya, routing dengan diplinking, dan menempatkan aliran data searah di atas. Meskipun penerbangan normal (dan menarik), kami menyelesaikan lebih jauh.

Rencananya adalah membuat layar debug canggih dengan dudukan, diplinks dan katalog layar, yang masing-masing akan memungkinkan Anda untuk dengan cepat masuk dan mengubah status moki atau beralih. Ya, tepat di runtime.

Untuk mempercepat pekerjaan, kami mengembangkan sistem desain kami sendiri. Kami menaruh banyak perhatian pada kelancaran pengoperasian UI. Kami mendukung tema "gelap".

Tim kami dibangun sedemikian rupa sehingga tidak ada orang yang terlibat dalam sesuatu yang sepenuhnya terfokus, kata mereka, Sasha bertanggung jawab atas tombol ini, dan Pasha hanya bertanggung jawab untuk arsitektur secara keseluruhan. Faktanya, situasinya sedemikian rupa sehingga setiap orang melakukan segalanya, tetapi dalam kerangka pedoman dan templat modul yang telah ditentukan, jika tidak kita akan meluncur ke dalam anarki dari demokrasi.

Ruslan // Android-teamlead



Salah satu poin pengembangan utama adalah desain arsitektur perangkat lunak. Harga kesalahan yang dibuat pada tahap ini tumbuh secara eksponensial, sehingga prioritas kami adalah fleksibilitas perangkat lunak, yang memungkinkan kami untuk memenuhi kebutuhan bisnis dan kebutuhan pengguna.

Kami mematuhi pendekatan MVI, yang memungkinkan kami untuk mengurangi biaya debugging dan pengujian karena transparansi dan integritas negara. Masalahnya bagus, tetapi ada minus: ambang masuk yang sangat, sangat tinggi untuk karyawan baru. Karena itu, tujuan kami adalah menurunkan ambang ini. "Aturan 10 menit" membantu dalam hal ini, yang menyatakan bahwa kita harus menjelaskan semua pendekatan kita kepada seorang pemula dalam 10 menit. Bahkan jika dia belum pernah mengalami aliran data searah.

Ini membantu untuk merevisi pendekatan standar untuk implementasi MVI dan untuk mengembangkan solusi kami sendiri, yang ternyata lebih cepat dan, yang lebih penting, lebih mudah.

Apa yang bisa saya katakan tentang tim. Ini adalah kisah tentang "cinta", tentang bekerja bersama, jadi kita tidak mampu memandang seseorang hanya sebagai serangkaian kompetensi spesifik. Pria dalam paradigma kita adalah fungsinya di masa depan, tentang siapa dia di dalam tim kita.

Jan // Ketua Tim, Innopolis



Kami memiliki tim termuda yang terdiri dari 10 orang, kami telah berada dalam proyek ini sejak Desember 2019, kami berbasis di Innopolis. Kami memiliki tugas yang berbeda, kami adalah tim lintas fungsi de facto yang bekerja pada segmen B2B, back office dan jendela toko (front-end).

Secara umum, sebelum pembentukan tim kami, X5 sudah memiliki kantor di Innopolis, sekitar sepertiga dari satu lantai technopark, tetapi tim dari jaringan kami yang lain duduk di sana. Hari ini perekrestok.ru juga ada di sini.Hal yang

paling nyata (keterpencilan dari Moskow mempengaruhi) adalah tingkat rendah perendaman tim dalam proyek. Pertama-tama, perlu untuk segera membuat sejumlah proses dalam timnya, sambil menghubungkannya dengan yang diterima secara umum di perusahaan. Dan juga - membantu staf yang kompeten.

Tapi ada sanggul, sanggul Innopolis adalah kota IT, jadi kami tidak punya masalah dengan personel, aliran kandidat tidak hanya besar, tetapi juga berkualitas tinggi.

Kami mencari orang, mulai dari tumpukan (kami memiliki PHP, PostgeSQL, JS), dan dari keinginan seseorang tidak hanya untuk duduk dan bekerja secara monoton, tetapi untuk membuat produk yang bagus, untuk tertarik pada hal itu. Idealnya, miliki visi dan kemampuan Anda sendiri untuk mengekspresikan sudut pandang tentang berbagai masalah.

Ivan // tim memimpin tim proyek integrasi



Tim kami ada selama sekitar enam bulan, itu adalah pengembang (backend + frontend), penguji dan pemimpin tim, sekarang kami telah mencapai tingkat di mana kami dapat menyelesaikan tugas apa pun dari awal hingga akhir. Meskipun pengalamannya singkat, kami dipercaya tugas bisnis dan teknis (terkait dengan jendela utama, interaksi antara sistem, organisasi API, penguraian menjadi layanan mikro, pengoptimalan, refactoring). Kami mencari orang-orang yang akan membantu kami memecahkan masalah baru dan tidak hanya memiliki pengetahuan, keterampilan, dan keinginan yang diperlukan untuk meningkatkan produk, tetapi juga berbagi pendekatan kami untuk bekerja.

Dari waktu ke waktu, tergantung pada proyek, analis bisnis (dan yang sistem) juga terhubung. Kami mengembangkan dan mengimplementasikan proyek yang terkait dengan interaksi sistem kami (internal dan eksternal), serta perubahan dalam pengalaman pengguna.

Jika lebih jelas, kami memilih opt.perekrestok.ru (platform untuk menempatkan pesanan perusahaan, seperti yang jelas dari URL), zoo.perekrestok.ru(showcase terpisah di mana Anda dapat mengambil makanan untuk binatang kesayangan Anda), memperkenalkan mekanisme untuk memilih produk serupa. Dan mereka juga membuat aplikasi untuk memesan makanan dengan kurir kaki, terima kasih kepada orang-orang dari tim pengembangan ponsel. Selain itu, kami menyederhanakan pilihan alamat pengiriman (dulunya lebih sulit, ya), sedikit menggergaji monolith menjadi beberapa layanan mikro, dan secara signifikan menyederhanakan mekanisme perakitan rilis, yang memungkinkan peluncuran tidak satu rilis per minggu, tetapi sepuluh, kami mencoba untuk menuju integrasi terus menerus penuh sehingga proses ini menjadi permanen dan berkelanjutan.

Saat ini kami sedang sibuk mengganti API untuk aplikasi seluler dan mendesain ulang beberapa halaman situs, refactoring.

Alexander // tim memimpin sistem logistik



Kami sedang mengerjakan tugas-tugas ke arah pengiriman dan semua yang terkait dengan ini. Kami mengembangkan aplikasi Android yang digunakan oleh kurir untuk melakukan perjalanan dan mengirimkan pesanan. Digunakan oleh Kotlin dan Jawa. Di sinilah tugas besar integrasi dengan register kas dan sistem untuk melakukan pembayaran.

Pekerjaan kami menyangkut aplikasi kurir, antarmuka pengguna, dan perutean pesanan - secara umum, ada cukup banyak tugas, dan mereka benar-benar berbeda. Misalnya, untuk aplikasi kurir, kami membuat REST API, sekarang operasi sedang berlangsung untuk mengerjakan pesanan, pembayaran, buku log, pemeliharaan rute, dan peringatan insiden. Untuk logistik dan perutean pesanan - integrasi dengan sistem TMS (Transport Management System) untuk secara otomatis membuat rute dan mendistribusikan pesanan, juga alat antarmuka untuk melihat dan mengelola rute pada peta, sistem akuntansi dan pengiriman untuk kotak dengan pesanan di gudang dari gerobak dan pawai ke mobil kurir. Dan juga implementasi terperinci dari logika bisnis untuk menghitung biaya pengiriman - itu juga tergantung pada area dan pada periode waktu tertentu, ditambah dengan mengambil pesanan ke area,di mana sudah ada semacam pesanan, lebih murah. Semua ini diperhitungkan.

Di masa depan, kami akan mengimplementasikan layanan dengan API untuk merangkum seluruh logika dan operasi pengiriman, mentransfernya dari monolith ke layanan microser. Seseorang yang ingin bekerja bersama kami dalam hal ini akan membutuhkan pengetahuan dan pemahaman yang baik tentang PHP, Laravel, PostgreSQL dan (lebih disukai) golang. Juga akan ada tugas antarmuka untuk bekerja dengan peta dan data tabular, di sini kandidat perlu memiliki pengetahuan yang baik tentang HTML, CSS, JS dan beberapa jenis kerangka kerja a la Vue.

Kami berencana untuk menulis alat baru untuk bekerja dengan data statistik dan membuat laporan (postgreSQL, RabbitMQ, MongoDB, PHP) dan untuk berintegrasi dengan bus mobil CAN BUS untuk mengambil dan memproses parameter teknis dan indikator armada kami.

Sistem gudang tim Dmitry // teamlead



Tim saya sedang mengembangkan WMS (Sistem Manajemen Gudang). Sebagian besar ini adalah pengembangan backend di PHP (Laravel), tetapi kami juga mulai menggunakan Go.
Untuk database kami menggunakan PostgreSQL. Inilah tugas-tugas utama yang kami selesaikan:

  • Manajemen gudang: menyortir persediaan, menempatkan barang dalam sel, kontrol kualitas, penghapusan dan banyak lagi.
  • Pemrosesan pesanan: reservasi, pembuatan dan penunjukan tugas seleksi, pemilihan barang berdasarkan tugas.
  • Integrasi dengan BO (pesanan dan data master barang) dan sistem X5 ERP (harga, pengiriman, penghapusan, dll.). Untuk integrasi dengan BO, kami menggunakan RabbitMQ.
  • Kami sedang mengembangkan aplikasi untuk TSD di Android. Aplikasi TSD asli membuka di webview aplikasi satu halaman yang ditulis dalam jQuery dan knockout.js.
  • Kami mengembangkan dan mengelola laporan operasional untuk karyawan gudang.

// -



Apa itu tim pengembangan situs web? Sekarang ini adalah dua tim spesialis di bidang backend dan frontend, yang tugasnya mengembangkan dan mendukung situs utama perekrestok.ru dan semua proses bisnis internalnya, kecuali untuk pengiriman, gudang (WMS), dan API seluler (yang menjadi fokus rekan kerja lainnya).

Kami adalah tim spesialis dengan beragam pengalaman dan pengetahuan: sudah ada pakar terkemuka yang telah dibentuk, dan mereka yang baru-baru ini memulai karir mereka di bidang TI dan telah berkembang dari magang menjadi pengembang. Kami saling menjaga, baik dalam solusi arsitektur maupun dalam cross-coding. Kami tidak takut untuk meminta bantuan rekan jika ada keraguan tentang sesuatu. Bagaimanapun, kami mencoba untuk saling mendukung dan kami tahu bahwa, setelah mencapai tujuan bersama, masing-masing dari kita akan menjadi lebih baik dalam memahami produk dan sebagai spesialis teknis.

Apa yang tidak bisa tidak saya kagumi dan bangga pada kami adalah seberapa kuat motivasi dalam tim: tidak ada dari kita yang peduli dengan nasib proyek. Semua orang tertarik untuk membawa tugas ke Produksi dan tidak ragu untuk berkomunikasi tentang semua masalah dengan PM dan QA.

Kami secara berkala meninjau peta jalan kami. Ini membantu kita untuk lebih memahami ke mana kita bergerak dan fokus pada tugas-tugas yang akan mendatangkan keuntungan sekarang atau di masa depan.

Roman dan Semyon akan memberi tahu Anda lebih banyak tentang tim mereka sendiri.

Roman // tim memimpin tim pemasaran dan perdagangan



Tim kami terdiri dari tim pengembang dan pengembang backend. Kami terutama terlibat dalam pengembangan bagian backend dari www.perekrestok.ru jendela , kantor belakangnya (CRM / CMS), serta pengembangan versi B2B situs, opt.perekrestok.ru .

Sebagian besar tim kami adalah lintas fungsi, sehingga tugas ditemukan di berbagai bidang. Ini dapat berupa: pencarian produk, integrasi dengan sistem internal dan eksternal (ERP untuk mendukung B2B, loyalitas WMS, B2C dan B2B kami, sistem pembayaran, rekomendasi untuk pembelian atau penggantian barang), manajemen dan perhitungan kampanye pemasaran, tempat pasar, pemberitahuan email / sms , laporan analitik, umpan data, dan sejenisnya.

Berikut ini membantu kami dalam menyelesaikan sebagian besar tugas: keahlian dalam kerangka kerja PHP modern (Laravel, Symfony, Yii); lengan tumbuh dari bahu; kemampuan membuat profil pekerjaan pertanyaan PHP dan SQL; memahami perbedaan antara interaksi sistem sinkron dan asinkron; kesediaan berbagi ilmu dengan rekan kerja.

Kami landak cukup berani sehingga tidak takut SQL telanjang selama beberapa ratus baris (ya, ada hal seperti itu). Kadang-kadang kita harus turun ke bawah kode warisan dengan harapan lemah dan kembali darinya dengan panji-panji keberhasilan refactoring yang dimunculkan. Setelah kami dipercepat memperbarui indeks pencarian teks lengkap 365 kali dari 1 jam hingga 10 detik. Kami senang profil dan mempelajari statistik pemuatan aplikasi. Dan kami memahami bahwa cepat atau lambat jumlah data dan pengguna akan melebihi tanda kritis, dan kami melihat ke layanan microser untuk kemungkinan penskalaan horizontal dan mengurangi konektivitas yang kuat dari node sistem.

Semen // situs web pemimpin dan etalase toko



Halo semuanya! Saya seorang pemimpin tim, saya akan mencoba memberi tahu sedikit tentang tim, tugas, dan proyek itu sendiri, di mana tim kami terlibat.

Kami sedang mengerjakan proyek showcase (situs web perekrestok.ru ), kami juga menyebut proyek "FD", yang berarti "kantor depan". Semua yang dihadapi pengguna (pembeli) adalah FD: pencarian, katalog, pemesanan, akun pribadi, pembayaran online, berbagai mekanisme stok, resep, spanduk, dll.

Ada banyak fungsi di situs ini, kami terus menambahkan yang baru dan memodifikasi yang sudah ada. Kami memiliki tim produk dan desain yang sangat kuat, mereka memantau tren dan menghasilkan tugas yang menarik bagi kami. Selain pengembangan fungsi baru, kami terlibat dalam mendesain ulang, membuat pendaratan promosi, mengoptimalkan dan, tentu saja, memperbaiki kesalahan, serta membantu tim lain dengan meninjau permintaan penggabungan mereka untuk proyek showcase.

Untuk frontend, kami memilih VueJS dan telah menggunakannya selama setahun sekarang, kami menulis semua yang baru di atasnya, dan kami secara bertahap mengganti kode lama. Di backend, kami mencoba untuk tidak menggunakan model ActiveRecord yang standar untuk Laravel, tetapi terlalu bersemangat untuk menggunakan CPU. Kustomisasi permintaan basis data dan penolakan Refleksi yang tidak perlu memberikan peningkatan produktivitas dengan urutan besarnya, yang secara positif mempengaruhi Time To First Byte.

Sekarang tim kami sedang mengerjakan epik - ini adalah pemesanan yang sepenuhnya didesain ulang untuk peramban di perangkat seluler. Bersama dengan tim lain, kami terlibat dalam tugas mengoptimalkan dan memperbaiki arsitektur backend untuk kemungkinan penskalaan horizontal.

Dalam tim, setiap orang sangat terlibat dalam proyek, ketika semacam darurat terjadi, maka setiap orang yang dapat terhubung untuk menyelesaikan masalah.

Denis // teamlead dukungan lini ketiga



Saya memimpin tim dukungan teknis dari garis ketiga, kami merekrut orang-orang di sini untuk tugas dengan cepat menyelesaikan masalah pada prod. Jika terjadi sesuatu dengan situs tersebut, pada awalnya bisnis ini menuju ke baris pertama dan kedua, dan kemudian, jika diperlukan campur tangan programmer, mereka mendatangi kami. Teman-teman kami memiliki kompetensi yang komprehensif - cara melihat sistem antrian, menganalisis kesalahan dalam JS, PHP, menganalisis transfer data ke layanan pihak ketiga.

Kami merekrut orang-orang yang dikembangkan secara komprehensif ke dalam tim, seperti yang telah disebutkan, mereka yang cukup tahan stres, Anda sering harus beralih tergantung pada urgensi dan prioritas, ini tidak boleh stres. Nah, Anda bisa membayangkan bagaimana dukungan dan stres pada prinsipnya terkait.

Kesalahan yang perlu ditanggapi dapat beragam mungkin, dari tipe yang paling sederhana - "gaya atau goresan tidak menarik", hingga fakta bahwa "kode promosi tidak berfungsi" atau pesanan telah dikeluarkan, tetapi gudang tidak menerimanya, jadi Anda perlu melacak sejarahnya , atau jumlah yang ada berbeda dari yang pertama - Anda perlu melacak jalur pesanan dan memahami dengan tepat di mana dan pada tahap apa ada yang salah.

Ada juga hal-hal standar seperti kesalahan "500" atau "404" ", Anda perlu memonitor dan menanggapinya.

Selain ketahanan terhadap stres, penting bagi orang-orang seperti itu bahwa mereka tahu cara bekerja dengan kerangka kerja, sementara mereka memahami cara kerja mereka dan memahami mereka sehingga mereka dapat membaca kode dan menulisnya dengan indah. Untuk dapat menganalisis informasi, tidak hanya menyelesaikan tugas, tetapi pikirkan bagaimana ini akan mempengaruhi ekosistem yang berdekatan.

Secara umum, pengembangan baris ketiga adalah inti tim, orang-orang yang mengetahui seluruh sistem dan memahami cara kerja semuanya, tidak hanya melihat potongan kode mereka, tetapi juga memahami di mana lagi kesalahan dapat terjadi. Orang-orang seperti itu dengan cepat tumbuh menjadi pemimpin tim, dalam beberapa tahun menjadi pemimpin dari junior adalah hal yang normal.

Rinat // tim pengembangan tim di Innopolis



Ketika saya mengumpulkan orang-orang dalam sebuah tim, pemilihannya bukan untuk tugas-tugas tertentu. Saya lebih melihat pengalaman dan keterampilan masing-masing spesialis secara individual. Saya percaya bahwa setiap anggota tim memiliki kekuatan super masing-masing, dan kemampuan ini diungkapkan terbaik saat memecahkan masalah umum dalam tim. Ini dapat dianggap sebagai efek sinergi.

Di Perekrestok.ru saya mewujudkan mimpi itu - untuk membentuk tim sepenuhnya dari awal, untuk menyeimbangkannya dengan keterampilan semua orang. Hasilnya menunjukkan bahwa kami sangat baik, secara aktif bergabung dan membantu tim utama di Moskow.

Jika Anda melihat persyaratan untuk setiap peserta yang diajukan, maka ini adalah pengetahuan yang baik dalam tumpukan teknologi. Saya menghargai ketika seseorang tidak hanya melakukan tugas di dahi, tetapi dapat membenarkan pro dan kontra dari keputusannya. Saya juga menyambut baik pandangan luas dan keterlibatan dalam proses.

Kami memiliki banyak pekerjaan dengan database, setiap bagian kode disebut ratusan ribu kali sehari. Karena itu, pertanyaan wajib ketika memilih tim adalah pengetahuan mendalam tentang sql dan persiapan algoritmik yang baik dari kandidat untuk menulis kode yang optimal dalam kompleksitas.

Persyaratan yang sangat penting adalah tanggung jawab untuk keputusan kita. Karena di ritel, harga kesalahan bisa sangat tinggi, dan semua orang harus memahami ini.

Proyek kami secara aktif berkembang, setiap hari kami memecahkan rekor yang hadir dan jumlah pesanan. Karena itu, kami memerlukan spesialis di Moskow dan di Innopolis. Rencana perusahaan itu muluk-muluk, pasti tidak akan membosankan.

Ngomong-ngomong, di dalam proyek disebut "XO". X - Persimpangan, O - Online.


All Articles