Bersama Anda di ruang terbuka Khabr ada dua kapten tim karyawan Rosneft yang berpartisipasi dalam final maraton Digital Breakthrough 2020 IT dan tidak bisa tinggal diam tentang hal itu.
Rosneft tidak peduli dengan acara IT. Mengapa, perusahaan itu sendiri setiap tahun menghasilkan hackathon dan tantangan ( https://rn.digital/it2020 ) untuk mengguncang komunitas TI untuk memecahkan masalah mendesak untuk itu. Namun, karyawannya tidak diizinkan untuk berpartisipasi dalam hackathon-marathon Rosneft sendiri - itu tidak etis terhadap peserta dari luar. Tetapi mereka, para pengembang dan pemrogram perangkat lunak perusahaan yang intensif ilmu pengetahuan, ingin mengukur diri mereka sendiri terhadap kekuatan heroik!
Oleh karena itu, partisipasi karyawan Rosneft dalam berbagai hackathon merupakan semacam pemeliharaan tim dalam keadaan pertempuran, sumber inspirasi dan ide, yang mendorong pengembangan pendekatan non-standar untuk tugas-tugas TI. Hal utama tidak merugikan pekerjaan utama, tetapi ini sudah jelas. Pemimpin minyak berfokus pada digitalisasi proses bisnis dan substitusi impor teknologi informasi di bidang produksi minyak dan gas, dan oleh karena itu kehadiran semangat kompetitif di antara karyawan perusahaan dan keinginan untuk bersaing dengan seluruh dunia dianggap sebagai bentuk yang baik.
Dalam artikel ini, karyawan RN-BashNIPIneft Chingiz Akhmetov dan Maya Bikmetova akan memberi tahu warna-warni tentang jalur tim mereka menuju akhir acara TI yang keren, berbagi wawasan, dan peretasan kehidupan.
Chingiz Akhmetov dan tim "Inn BTG"
Mari perkenalkan diri kita dulu. “Inn BTG” adalah: “Inovatif. Cemerlang. Secara teknologi. Grandly ". Mereka juga Vladimir Ryzhikov, Radmir Karimov dan Murad Musin dan Chingiz Akhmetov.
Lebih dari setahun yang lalu, ketika salah satu tahapan Digital Breakthrough - hackathon 2019 berlangsung di Ufa asal kami, kami membentuk tim untuk berpartisipasi di dalamnya dan terlibat dalam memecahkan masalah. Pada waktu yang tak terlupakan itu, kami mencapai final, yang diadakan di Kazan! Sayangnya, saat itu tidak semua tim kami berhasil menghadiri acara tersebut. Oleh karena itu, dalam mode darurat, sisa-sisa tim harus membentuk "geng" baru dari pemberontak yang sama dari kota lain (Ufa kami bergabung dengan Cherepovets dan St. Petersburg). Sayangnya, di final kami tidak bisa menang atau bahkan tidak mendapatkan nominasi. Oleh karena itu, dari hackathon tahun lalu, kami hanya memiliki merchandise berupa kaus cantik berwarna cerah dengan simbol kompetisi dan gestalt terbuka untuk memenangkan final ...
Sehubungan dengan hal ini, pada tahun 2020, dua minggu sebelum dimulainya hub TI Ural dari Digital Breakthrough - maraton 2020, keputusan berkemauan keras dibuat untuk membuat tim baru untuk kemenangan yang brilian dan tanpa syarat, pertama di tingkat regional, dan kemudian di tahap akhir kompetisi.
Seperti tahun lalu, tulang punggung (3 pesawat tempur) dibentuk dari kolega dari salah satu departemen di institut desain dan ilmiah kami, yang kini mengembangkan paket perangkat lunak untuk pemodelan geologi ladang minyak "RN-GEOSIM". Juga, untuk keandalan, tim tersebut diisi kembali dengan seorang karyawan bank, tetapi bukan untuk pinjaman dan hipotek, tetapi karena dia adalah teman kami dari bangku mantan siswa dan dia tahu bisnisnya. Jadi, adalah mungkin untuk mengumpulkan "empat yang fantastis", di mana setiap peserta memiliki pengalaman dalam bidang pemrograman tertentu, dalam beberapa hal adalah seorang ahli.
Tangkapan layar siaran saat pengumuman pemenang perkara.
Sebagai peserta yang berpengalaman, kami ingin mencatat peningkatan dalam tingkat pengorganisasian hackathon dibandingkan sebelumnya. Tahun ini ada lebih banyak tugas, dan lebih beragam, misalnya, tugas muncul tidak hanya untuk layanan web. Hackathon kali ini diselenggarakan dalam format online yang membuat hidup para peserta menjadi lebih mudah dan dapat menghemat biaya transportasi. Berita utama, wawancara dengan orang-orang yang menarik, berbagai kontes dan kuis disiarkan di saluran YouTube. Informasi untuk peserta diposting di saluran Telegram. Dalam obrolan Telegram utama kompetisi, ada komunikasi dengan dukungan pada pertanyaan umum, jawaban segera datang. Ada juga saluran untuk mencari anggota dan tim. Perselisihan dipilih untuk komunikasi dalam tim (itu juga digunakan untuk komunikasi dengan ahli kasus di pos pemeriksaan). Singkatnya, semuanya untuk orang!
Secara terpisah, kami ingin memberikan "plus" untuk fakta bahwa sekarang tidak ada ikatan yang kaku untuk wilayah tersebut: tim kami berasal dari Ufa, tetapi kami pernah sibuk dan tidak dapat berpartisipasi di Volga Hub, tetapi kami dapat bersaing di Ural. Saya senang bahwa rekaman dari semua siaran dan perlindungan streaming diposting di saluran YouTube. Transparan dan informatif.
Tim kami memilih untuk berpartisipasi dalam solusi kasus "Rute Bersepeda" dari Departemen Informatisasi Wilayah Tyumen: "Pengembangan perangkat lunak yang memungkinkan analisis penempatan awal penyeberangan pejalan kaki, jalur sepeda, serta aktivitas berjalan kaki dan bersepeda penduduk kota". Bukan berarti kami adalah penggemar berat. Tugas ini dipilih karena dijelaskan dengan sangat rinci dalam wawancara pemegang kasus ( https://www.youtube.com/watch?v=hLPGCZ-5HRc ), dan tujuan utamanya adalah mendapatkan beberapa teknik, algoritme. Inilah topik kami.
Tim memprioritaskan kasus sebelum memulai. Rasio akhir jumlah tim berdasarkan kasus di Ural Hub menjadi terlihat setelah dimulainya.
Kami memahami bahwa sangat penting untuk memilih alat yang akan membantu membuat MVP (Minimum Viable Product, atau menurut kami “produk dengan fungsi minimal, tetapi cukup untuk memuaskan konsumen pertama”) dengan cara tercepat. Bagi kami, mereka adalah Python dengan pustaka NetworkX (untuk bekerja dengan grafik) dan OSMnx (untuk merepresentasikan data OpenStreetMap sebagai grafik). Performa dari solusi semacam itu meninggalkan banyak hal yang diinginkan, karena Python sendiri lambat, dan NetworkX tidak memiliki algoritme khusus untuk bekerja dengan grafik jalan. Dalam prototipe kami, waktu operasi untuk pengelompokan yang cukup kecil mencapai puluhan menit. Jelas bahwa waktu seperti itu tidak dapat diterima oleh pengguna, tetapi kami telah menunjukkan bahwa idenya berhasil. Di masa depan, kami pertimbangkanlebih baik menulis ulang kernel komputasi ke dalam bahasa yang dikompilasi menggunakan algoritma khusus dengan paralelisasi.
Esensi singkat dari algoritme kami adalah bahwa seluruh kota (skema algoritme, kiri, atas) dikelompokkan menjadi beberapa bagian. Di setiap bagian, tingkat permintaan jalur sepeda ditentukan (skema algoritme, kanan, atas). Grafik jalan difilter, hanya menyisakan jalan tempat jalur sepeda dapat dibangun. Kemudian grafik yang difilter dibandingkan dengan cluster, dan hanya jalan yang termasuk dalam bagian cluster yang diminta yang tersisa (algoritme berfungsi, kiri, bawah). Pulau-pulau yang dihasilkan dihubungkan oleh algoritma jalur terpendek sehingga sistem jalur sepeda terhubung, yaitu pengendara sepeda dapat melakukan perjalanan dari satu area ke area lainnya (skema algoritme, kanan, bawah).
Skema algoritme.
Kami dibagi menjadi beberapa tugas: satu melakukan bagian kalkulasi, yang kedua menampilkan server, yang ketiga melakukan visualisasi pada halaman web, yang keempat melakukan tampilan desktop. Kami berhasil mencapai hampir semuanya. Kami memutuskan untuk mentransfer grafik yang dihasilkan ke klien sepenuhnya dan menggambar melalui OpenLayers, meskipun mungkin akan lebih baik untuk menggunakan server ubin kami sendiri.
Skema dirancang oleh MVP (suboptimal).
Hasil akhir
Di final kompetisi Terobosan Digital, kami mendapat kasus dari Kementerian Energi “Pengembangan sistem untuk pemodelan ketergantungan konsumsi listrik dan indikator ekonomi Federasi Rusia menurut wilayah dan industri”. Dibandingkan dengan tahap regional, final lebih ambisius: jumlah kasus meningkat (15 versus 9), jumlah tim dalam satu kasus (26 versus 10). Dana hadiah untuk para pemenang juga bertambah, angka pastinya bisa dilihat di website https://leadersofdigital.ru .
Dalam proses mengerjakan tugas dan mengikuti hasil konsultasi dengan pemegang kasus, kami memutuskan untuk mengimplementasikan proyek di Notebook Jupyter dengan Python, dan menggunakan ekonometrik untuk pemodelan. Variabel dependen model adalah volume konsumsi energi aktual, variabel independen adalah volume pertambangan dan manufaktur. Perkiraan variabel dependen dilakukan menurut algoritme berikut:
1. Produksi industri diramalkan (dibuat tren linier):
a. Bagian grafik disorot, yang digunakan untuk menghitung koefisien tren.
b. Koefisien tren linier ditentukan dengan metode kuadrat terkecil.
2. Model ketergantungan tren konsumsi listrik terhadap volume produksi industri dibangun
3. Volume konsumsi energi diprediksi menggunakan model yang dibangun dan pemodelan dengan metode SARIMA (artikel https://habr.com/ru/company/ods/blog/327242/ banyak membantu kami. ).
Hasil perkiraan sisa.
Sayangnya, pendekatan yang dipilih sedikit kurang dari tiga teratas, dan kami menempati posisi ke-22. Akankah kami berpartisipasi dalam hackathon serupa di masa mendatang? Tentu saja! Memecahkan tugas yang tidak terkait dengan pekerjaan memungkinkan Anda untuk melihat tugas pekerjaan dengan mata segar nanti.
Maya Bikmetova dan "NEII"
Beberapa minggu sebelum Terobosan Digital 2020, saya berpartisipasi dalam hackathon lain yang lebih kecil, dan tim saya menempati posisi pertama. Mungkin, ini memengaruhi keputusan untuk mencoba tangannya di kompetisi semua-Rusia.
Saya mengundang kolega dan teman saya Marina Semyonova, Guzel dan Nail Akmurzin untuk bergabung dengan tim, karena jauh lebih mudah bekerja dalam tekanan waktu dengan teman yang saya kenal. Ini tidak menyia-nyiakan waktu, dan semua 30-36 jam hackathon dapat digunakan untuk mengembangkan dan membuat MVP. Kami memasuki Volga IT Hub of Digital Breakthrough - 2020 sebagai tim NEII. Nama ini sudah ada sejak lama. Kami percaya bahwa itu paling mencerminkan esensi kami: karyawan lembaga penelitian yang terlibat dalam pengembangan sistem berdasarkan kecerdasan buatan (AI).
Seperti yang telah ditulis oleh kolega saya (dan mereka adalah pesaing) di atas, karena situasi epidemiologis yang kompleks, hackathon diadakan secara online. Kami memiliki tiga pos pemeriksaan di mana kami berbicara dengan moderator, ahli teknis dan perwakilan pemegang kasus. Mereka mendengarkan ide-ide kami, memberi saran, mengamati apa yang telah kami lakukan, dan mengevaluasi presentasi kami.
Semua tim diberikan daftar 10 kasus. Saat mendaftar, kami memprioritaskan. Dan salah satu kasus yang paling diprioritaskan bagi tim adalah menemuinya di hackathon. Selain itu, setiap kasus berisi gambaran umum masalah, dan penjelasan rinci hanya diberikan di awal kompetisi. Kami mendapat kasus di mana perlu mengembangkan sistem cerdas untuk mengotomatiskan informasi dan memberikan manfaat sosial kepada penduduk. Pelanggan kasus ini adalah Kementerian Sosial, Demografi, dan Kebijakan Keluarga Wilayah Samara.
Skema umum dari solusi yang dikembangkan.
Kami juga mengobrol di Discord untuk membahas tugas. Bersama-sama mereka memberikan ide untuk solusi, membagikan siapa yang akan melakukan apa. Marina bertanggung jawab atas logika server - backend dan database, Guzel - untuk presentasi, dan Nail untuk frontend. Saya mengambil alih pengembangan model pembelajaran mesin, manajemen tim, dan komunikasi dengan pemegang kasus.
Sebagai hasil dari pekerjaan pada tugas tersebut, kami telah mengimplementasikan prototipe dari dua sistem.
1. Aplikasi web berupa chat bot untuk menginformasikan kepada penduduk tentang manfaatnya.
Pada bagian klien, warga menggambarkan situasi hidupnya. Permintaan yang dihasilkan dikirim ke layanan NLP, yang bertanggung jawab atas pemrosesan bahasa alami. Di balik terpal, kategori permintaan pengguna ditentukan menggunakan metode pembelajaran mesin. Dengan kata lain, masalah klasifikasi teks sedang diselesaikan. Perkiraan NLP model dikirim ke database. Informasi yang diperlukan tentang manfaat yang diharapkan dikembalikan dari database menggunakan kunci dan diberikan lagi kepada klien.
Skrip backend utama mengakses layanan NLP dan database.
Di kotak dialog, pengguna melihat manfaat apa yang menjadi haknya, dokumen apa yang perlu dikumpulkan.
Tangkapan layar dari prototipe chatbot untuk memberi tahu masyarakat tentang manfaatnya.
2. Layanan untuk memeriksa pembaruan undang-undang normatif dan legislatif.
Dalam proses komunikasi dengan perwakilan pemegang kasus, ternyata yang paling menyakitkan dari pekerja jaminan sosial adalah kebutuhan untuk secara teratur meninjau banyak dokumen peraturan untuk mengidentifikasi perubahan dalam undang-undang dengan cepat. Jika ada perubahan, karyawan memperbarui database lokal. Biasanya, ini membutuhkan banyak waktu dan upaya, dan karyawan memiliki lebih sedikit waktu untuk bekerja secara langsung dengan orang lain. Kami yakin bahwa pekerjaan rutin semacam itu dapat dan harus diotomatiskan.
Sebagai perkiraan pertama untuk memecahkan masalah ini, kami mengusulkan layanan yang secara teratur membandingkan dokumen di database jaminan sosial lokal dengan dokumen yang sama di database beberapa layanan online, misalnya, "Consultant Plus". Jika mendeteksi perbedaan dokumen, layanan mengirimkan pemberitahuan kepada pekerja jaminan sosial seperti “Ada perubahan dalam dokumen X. Segarkan database lokal Anda. " Dengan demikian, petugas jaminan sosial terbebas dari kebutuhan untuk menyekop banyak dokumen. Mesin akan mendeteksi perubahan hukum untuknya saat dia bekerja dengan warga.
Jika kita berbicara tentang sisi teknis dari masalah tersebut, sebagai dasar untuk menyelesaikan masalah membandingkan teks, kami menggunakan pendekatan klasik yang sering digunakan dalam Information Retrieval - merepresentasikan dokumen dalam bentuk vektor numerik dengan estimasi jarak cosinus di antara mereka.
Rumus untuk menghitung jarak cosinus antara vektor dua dokumen.
Dan sekarang beberapa peretasan bertahan hidup hackathon. Kami menyarankan di awal untuk menyetujui daftar dan versi pustaka yang akan digunakan. Ini akan menghindari situasi ketika proyek tidak dibuat karena konflik versi, dan Anda perlu mengirimkan kode Anda untuk ditinjau dalam 10 menit. Ngomong-ngomong, lebih baik memposting tautan ke presentasi dan solusinya setengah jam sebelum akhir kompetisi, dan tidak meninggalkannya hingga saat-saat terakhir. Pada hackathon, orang-orang sangat gugup dengan situs yang mogok lima menit sebelum pengiriman akhir dari keseluruhan proyek ... Teknologi yang digunakan: open source berumur
panjang! Hal utama adalah melacak versi kerangka kerja.
Di satu sisi, hackathon adalah kompetisi spesialis teknis, dan juri mengevaluasi kode: keterbacaan, pengoperasian, arsitektur solusi, dokumentasi. Di sisi lain, ada pemegang kasus, dan perwakilannya jauh dari dunia IT. Mereka, pertama-tama, menghargai keindahan, konsistensi dan kejelasan presentasi, desain antarmuka. Dengan kata lain, lebih baik jika ada orang dalam tim yang hanya akan menangani presentasi, orang yang, dengan bantuannya, akan "menjual" solusi kepada pemegang kasus.
Hasil akhir
Sayangnya, tidak ada waktu untuk mempersiapkan final Terobosan Digital - 2020. Pada akhir tahun, pekerjaan secara tradisional meningkat. Jadi kami mengandalkan keberuntungan dan satu sama lain!
Di final hackathon, kami berada di barisan yang sama. Kali ini kami menemukan kasus dari Sberbank: tugasnya adalah membuat solusi yang akan membantu mempercepat pekerjaan dengan email. Ternyata ini menjadi masalah besar, karena para eksekutif senior harus menyortir 2.000 email sehari, yang memakan waktu setidaknya 3 jam!
Pada pos pemeriksaan pertama, kami diberi tahu bahwa pengembang Sberbank telah lama memikirkan masalah ini, tetapi mereka belum menemukan solusi yang konkret - mereka membutuhkan ide yang akan membantu mereka akhirnya menemukan sesuatu.
Dan kami mulai berpikir. Dalam 2 jam, kami menghasilkan banyak ide menarik yang berbeda (ini adalah bagian paling kreatif dari hackathon, karena yang satu menyarankan, yang lain ditambahkan, dan ide ini berubah menjadi alat yang sempurna yang akan menggantikan email biasa = D).
Sebagai hasilnya, kami menyusun implementasi klien email kami sendiri "Sber-secretary", yang akan mengubah korespondensi menjadi obrolan, obrolan akan dikelompokkan berdasarkan subjek ke dalam folder, dan sistem akan secara otomatis menentukan pentingnya korespondensi (obrolan). Dalam obrolan, Anda dapat mendengarkan pesan yang belum dibaca, teks pesan dapat didikte, surat baru akan dibuat dengan satu perintah suara, dan alih-alih satu korespondensi di jendela utama, alih-alih satu korespondensi, dari 1 hingga 4 dapat ditampilkan, dan beberapa fitur tambahan lainnya.
Tata letak antarmuka klien email
Selanjutnya, kami menetapkan tanggung jawab: Saya bertanggung jawab atas sisi server proyek, Nail bertanggung jawab atas sisi klien, Marina mengembangkan desain dalam figma, dan Guzel melakukan presentasi yang indah dan luas serta bersiap untuk pertahanan.
Kami langsung tahu bahwa kami tidak akan punya waktu untuk membuat aplikasi yang berfungsi, tetapi kami berharap setidaknya bagian klien akan matang. Ada banyak pekerjaan, dan sebagai hasilnya, kami menunjukkan dalam figma fungsionalitas apa yang akan dimiliki klien email kami, menggambarkan arsitektur proyek, menyebutkan sejumlah keuntungan dari solusi tersebut, dibandingkan dengan Outlook, biaya proyek dan tahapan implementasi.
Saya pikir kami dapat mengatakan bahwa juri menyukai keputusan kami, karena selama salah satu titik pemeriksaan, pelacak menunjukkan bahwa kami bergerak ke arah yang benar. Kami tidak berhasil membuat lamaran kerja, tetapi masuk 5 besar (peringkat 5) dari 11 tim. Apa arti tempat ke-5 bagi kita? Ini berarti kami memiliki kesempatan untuk menunjukkan hasil terbaik di lain waktu!
Jika Anda juga berpartisipasi dalam "Terobosan Digital - 2020", maka tulis kesan dan pemikiran Anda di kolom komentar!