Habr, halo! Sangat menarik berapa banyak programmer dan pengembang telah menemukan ilmu data atau rekayasa data, dan sedang membangun karir yang sukses dalam data besar. Ilya Markin, Insinyur perangkat lunak di
Directual , hanyalah salah satu pengembang yang beralih ke rekayasa data. Kami berbicara tentang pengalaman dalam peran pemimpin tim, alat favorit dalam rekayasa data, Ilya berbicara tentang konferensi dan saluran profil yang menarik dari para javist, tentang Directual dari sisi pengguna dan teknis, tentang permainan komputer, dll.
- Ilya, terima kasih telah meluangkan waktu untuk bertemu. Saya mengucapkan selamat kepada Anda atas transisi yang relatif baru ke perusahaan baru, dan pada kelahiran seorang anak perempuan, Anda memiliki banyak kekhawatiran dan kekhawatiran. Segera pertanyaan pertama: apa yang begitu menarik sehingga Anda ditawari bekerja di Directual, sehingga Anda meninggalkan DCA?- Mungkin, pertama saya harus memberi tahu Anda apa yang saya lakukan di DCA. Saya masuk ke DCA (Data-Centric Alliance) setelah menyelesaikan program
Big Data Specialist . Pada saat itu, saya secara aktif tertarik pada topik big data dan menyadari bahwa inilah bidang yang ingin saya kembangkan. Lagi pula, di mana ada banyak data, ada banyak masalah teknik menarik yang perlu dipecahkan. Program ini membantu saya dengan cepat terjun ke ekosistem dunia kencan besar, di mana saya mendapat pengetahuan awal yang diperlukan tentang Hadoop, BENANG, paradigma Pengurangan Peta, HBase, Spark, Flink, dan banyak lagi, dan cara kerjanya di bawah beban tinggi.
Saya diundang untuk wawancara oleh orang-orang dari DCA. DCA adalah peserta utama dalam pasar RTB (
Penawaran Waktu Nyata adalah teknologi periklanan yang memungkinkan Anda untuk mengatur pelelangan antara penjual dan pembeli iklan waktu-nyata. Objek penawaran pada lelang online adalah hak untuk menampilkan iklan kepada pengguna tertentu. RTB didasarkan pada akurasi maksimum dalam memilih pengunjung target - sekitar. ). DCA memiliki cakupan tinggi pengguna Runet: sekitar 600 juta cookie, cookie tidak sama dengan pengguna - satu pengguna dapat memiliki banyak cookie: browser yang berbeda, perangkat yang berbeda. Kami menerima puluhan terabyte data pada kunjungan ke halaman Internet per hari. Semua ini diproses dan cookie ditandai dalam serangkaian segmen tertentu. Dengan demikian, kita dapat mengidentifikasi, misalnya, pecinta kucing berusia 20 hingga 25 tahun yang tinggal di Moskow, untuk mengundang mereka membeli makanan untuk kucing kesayangan mereka di dekat rumah. Dan ada banyak contoh seperti itu, ada yang sangat sederhana, ada yang kompleks. Di bawah tenda ada banyak java, scala dan C ++. Saya datang ke perusahaan sebagai pengembang, dan enam bulan kemudian saya menjadi pemimpin tim.
Saya meninggalkan DCA pada akhir musim semi, pada saat itu saya sudah bosan dengan beban manajerial dan mulai melihat posisi teknis. Ternyata saya tidak bisa menulis kode selama seminggu. Kami berkumpul dengan tim, membahas solusi menarik, memikirkan arsitektur, tugas melukis. Ketika saya mengambil sesuatu dari daftar untuk diri saya sendiri, kadang-kadang saya tidak punya waktu untuk menyelesaikan tugas, karena ada banyak kasus ketua tim. Mungkin masalahnya ada pada saya, dan saya tidak dapat mengalokasikan waktu dengan benar.
Namun, saya telah mendapatkan pengalaman yang bermanfaat. Pertama, bekerja dengan tim dan bisnis: menarik berada di persimpangan pengembangan dan bisnis, ketika Anda menerima permintaan untuk mengimplementasikan beberapa jenis fungsi, Anda berpikir, mengevaluasi kemungkinan. Seringkali Anda harus membuat keputusan yang akan lebih berguna dalam situasi khusus ini: menulis sesuatu dengan cepat "sambil berlutut" atau menghabiskan waktu 2 minggu, atau bahkan lebih, tetapi berikan solusi yang stabil dan berfungsi dengan baik.
- Dan keputusan apa yang paling sering dipilih - "berlutut" atau dalam 2 minggu?- Seorang pengembang di hati selalu perfeksionis, ia dapat terus-menerus terlibat dalam beberapa tugas menarik, membuat kembali, mengoptimalkannya. Tentu saja, Anda perlu tahu kapan harus berhenti. Keputusan dipilih yang berada di antara keduanya.
Kedua, saya, akhirnya, berada di posisi di mana Anda dapat berpartisipasi dalam pengambilan keputusan, sadar akan apa yang terjadi di perusahaan. Saya tidak suka hanya duduk dan mengkode di dalam kotak saya, saya ingin tahu apa yang terjadi dengan produk, bagaimana produk itu muncul, bagaimana reaksi pengguna.
Ketiga, saya mulai melakukan wawancara, mengunjungi "di sisi lain dari barikade", untuk berbicara. Wawancara pertama sangat menarik untuk dilakukan, saya membaca resume dan berpikir: "Sial, sekarang bintang itu akan datang, dan saya bahkan tidak tahu setengah dari apa yang ditulisnya. Apa yang akan saya bicarakan dengan dia sama sekali. " Dan dalam proses komunikasi, Anda menjadi sadar dan mengerti mengapa permintaan di pasar personalia TI melebihi pasokan. Sulit untuk menemukan spesialis yang baik, paling sering dia duduk di mana dia senang dengan semuanya. Seorang spesialis siap pakai untuk tugas dan teknologi spesifik Anda, yang tidak perlu dilatih ulang / dilatih ulang, tidak realistis untuk ditemukan, harus menghubungkan koneksi, meminta teman, kenalan, kolega. Jaringan sangat penting di sini. Jadi, misalnya, saya membawa teman saya ke perusahaan, di mana saya yakin dan dengan siapa saya bekerja sebelumnya di tempat sebelumnya. Mereka juga mengambil lulusan universitas baru-baru ini yang memiliki sedikit pengalaman bekerja dengan tumpukan kami, tetapi selama wawancara saya menyadari bahwa dia adalah pria yang sangat menjanjikan.
Seringkali orang bekerja dengan kerangka kerja, dan bukan dengan alat khusus, saya pikir ini adalah masalah saat ini. Seorang kandidat datang dengan pengalaman dua tahun sebagai pengembang Hadoop-Big Data, Anda mulai bertanya bagaimana Hadoop bekerja, bagian mana yang terdiri dari itu, dan seseorang tidak tahu. Karena Hadoop menyediakan antarmuka tertentu untuk menyederhanakan bekerja dengannya, ini cukup untuk berbagai tugas tertentu. Dan seringkali seseorang bahkan tidak melampaui batas-batas antarmuka ini, yaitu, kode yang ia dapatkan dari ini masih. Dan apa yang terjadi pada kode yang dikemas setelah dia mengirimnya ke sistem, orang itu tidak lagi peduli. Bagi banyak orang, ini sudah cukup, mereka tidak ingin mengerti lebih dalam. Melakukan wawancara adalah pengalaman luar biasa tidak hanya dalam perekrutan, tetapi juga memberi kepercayaan pada diri sendiri sebagai spesialis, yang sangat berguna.
Mengapa Directual. Ketika saya menjadi koordinator untuk program
Insinyur Data , Artyom Marinov dan Vasya Safronov dari Directual datang untuk berbicara dengan kami. Omong-omong, Artyom pernah mewawancarai saya di DCA (lagi tentang manfaat jaringan), dan sekarang mengundang saya untuk berbicara. Mereka membutuhkan seorang rockman, tetapi mereka siap untuk mempertimbangkan javista yang mengerti bagaimana jvm bekerja di bawah tenda. Jadi saya berakhir di sini.
- Apa yang begitu menarik sehingga Anda ditawari untuk melakukan Directual? Apa yang membuatmu tertarik?-
Directual adalah perusahaan baru yang ambisius yang mengimplementasikan semua proyek yang diumumkan, yaitu melakukan apa yang dijanjikan. Saya senang menjadi bagian dari tim dan mengambil bagian aktif dalam semua implementasi. Dan bagi saya adalah penting bahwa perusahaan membayar sendiri dengan bekerja dengan pelanggan, dan tidak hidup dengan uang investor.
Saya akan berbicara sedikit tentang proyek baik dari sisi pengguna dan dari sisi belakang.
Slogan Directual adalah "Biarkan orang membuat!". Inilah tepatnya ide utama - untuk memungkinkan siapa pun yang tidak memiliki pengetahuan dan pengalaman dalam menulis kode ke program di editor visual kami.
Cara kerjanya: pengguna melalui browser di platform kami dapat "menggulung kubus" (baca - node fungsional suatu proses) - yaitu, mengumpulkan skrip yang akan memproses data yang masuk. Data dapat berupa apa saja. Data keluaran yang diproses dapat memiliki ide yang berbeda - dari laporan dalam PDF hingga mengirim pemberitahuan ke beberapa administrator. Sederhananya, proses bisnis apa pun dapat diprogram dalam hitungan menit, tanpa bisa menulis kode. Perusahaan ini bekerja dalam dua arah solusi kotak untuk klien korporat, serta opsi cloud untuk berbagai pengguna.
Untuk memperjelas cara kerjanya, saya akan memberikan beberapa contoh.
Di setiap toko online ada sejumlah tahap fungsional ("kubus" dalam kasus kami) - mulai dari menunjukkan produk kepada pelanggan hingga menambahkannya ke keranjang dan mengatur pengiriman ke konsumen akhir. Menggunakan platform, kami dapat mengumpulkan dan menganalisis data: frekuensi pembelian, waktu penyelesaiannya, jalur pengguna, dll., Yang akan memungkinkan kami untuk berinteraksi lebih dekat dengan pelanggan (misalnya, untuk mengembangkan penawaran musiman, diskon individual). Namun, ini sama sekali tidak berarti bahwa platform kami adalah desainer untuk membuat toko online!
Directual berupaya dengan baik dengan otomatisasi proses logistik dan pekerjaan dari arah perusahaan-perusahaan besar, dan dengan penciptaan solusi teknologi lainnya - dari pertanian rumah kaca hingga rumah pintar. Pada platform, misalnya, Anda dapat membuat bot telegram dalam beberapa klik - hampir setiap karyawan yang menulis inti sistem memiliki botnya sendiri. Seseorang membuat asisten pustakawan, seseorang - bot yang membantu mempelajari kata-kata bahasa Inggris.
Kami sebagian "mengambil" pekerjaan beberapa programmer, karena sekarang tidak perlu meminta bantuan mereka, menyiapkan spesifikasi teknis, atau memeriksa pelaksanaan pekerjaan. Sekarang cukup hanya untuk mengetahui bagaimana bisnis Anda seharusnya bekerja, Anda perlu memahami prosesnya sendiri, dan kami melakukan sisanya.
- Dengar, tetapi ada perangkat lunak untuk pertanian hijau, misalnya, untuk waktu yang lama. Apa yang berbeda?- Ya, memang benar, ada solusi spesifik untuk pertanian hijau. Namun, Anda tidak mengembangkan perangkat lunak ini sendiri, Anda membeli solusi yang sudah jadi. Menggunakan platform kami, Anda dapat menyesuaikan perangkat lunak untuk diri sendiri, untuk bisnis dan tugas Anda, Anda tidak perlu merekrut pengembang.
- Dan apa yang sebenarnya kamu lakukan?- Perusahaan dibagi menjadi 2 bagian: pengembangan inti dari sistem kami dan kantor proyek, yang, pada kenyataannya, adalah pelanggan nol kami, jika boleh saya katakan demikian. Saya sedang mengembangkan inti sistem.
Seperti yang saya katakan, kami ingin memberi siapa pun kesempatan untuk bekerja di platform kami. Untuk ini, kami bekerja di cloud kami. Dan ada banyak masalah. Apa kesulitannya: misalnya, ada 10 ribu pengguna, mereka memiliki beberapa skenario aliran data, dan setiap aliran memiliki 10-20 kubus cabang. Bayangkan beban pada setrika. Dan kita harus bisa membedakan semuanya dengan jelas sehingga proses satu klien tidak mengganggu proses yang lain, dan tidak memperlambat pekerjaan. Jika satu klien memiliki masalah yang harus kita selesaikan, maka kita seharusnya tidak melukai pekerjaan klien lain.
Karena pengguna tidak perlu memikirkan bagaimana semuanya bekerja di bawah tenda, ia bebas dari pilihan penyimpanan. Kami mendukung database yang berbeda - dapat berupa database relasional dan NoSql. Secara umum, sistem berperilaku sama pada mereka. Tetapi klien tidak perlu memikirkannya - saat membuat akun, tergantung pada tugasnya, sistem akan membantu membuat pilihan penyimpanan yang optimal.
Platform kami adalah contoh yang baik dari sistem terdistribusi yang sangat dimuat, dan tugas saya adalah menulis kode yang baik sehingga semuanya bekerja tanpa gagal. Sebagai hasilnya, di sini saya mendapatkan apa yang saya inginkan: Saya bekerja dengan alat-alat yang menarik minat saya.
- Dan bagaimana Anda datang ke bidang bekerja dengan data?- Di tempat kerja pertama saya, saya terutama berurusan dengan jenis tugas yang sama di segmen yang agak sempit (baca - parsil xml :)), dan dengan cepat membuat saya bosan. Saya mulai mendengarkan podcast, saya menyadari betapa besar dunia ini, begitu banyak teknologi yang dibicarakan semua orang - Hadoop, Big Data, Kafka. Kemudian saya menyadari bahwa saya harus belajar, dan program "
Spesialis Data Besar " muncul dengan sangat tepat. Ternyata, saya tidak gagal: modul pertama (pemrosesan dan analisis log web: MapReduce, Hadoop, Machine Learning, sistem DMP - catatan penulis) sangat berguna bagi saya, saya hanya ingin belajar ini, tetapi modul kedua adalah tentang sistem rekomendasi Aku hanya tidak tahu harus melamar ke mana, aku tidak pernah menyentuhnya. Dan kemudian saya pergi ke DCA untuk bekerja dengan minat saya. Di sana, seorang kolega memberi tahu saya bahwa selain ilmuwan data, ada juga insinyur data di bidang ini, dia memberi tahu siapa dia dan bagaimana perusahaan itu bisa berguna.
Setelah itu, Anda baru saja mengumumkan peluncuran pilot program
Insinyur Data , tentu saja, saya memutuskan untuk pergi. Saya sudah tahu beberapa produk yang ada di program, tetapi bagi saya itu adalah gambaran yang baik dari alat, terstruktur segala sesuatu di kepala saya, saya akhirnya mengerti apa yang harus bekerja dengan seorang insinyur data.
- Tetapi sebagian besar perusahaan tidak berbagi dua posisi ini, dua profil profesional seseorang, mereka berusaha mencari spesialis universal yang akan mengumpulkan data dan menyiapkannya, dan mereka akan membuat model, dan mereka akan dibawa ke produk dengan beban tinggi. Bagaimana menurut Anda, terhubung dengan apa ini, dan seberapa benar itu?- Saya benar-benar menyukai kinerja Pavel Klemenkov pada program Big Data Specialist (dia bekerja di Rambler & Co saat itu), dia berbicara tentang ML-Pipeline dan menyebut para programmer matematika. Dia berbicara tentang spesialis universal sedemikian rupa sehingga mereka ada, ada beberapa dari mereka, dan mereka sangat mahal. Oleh karena itu, Rambler & Co sedang mencoba mengembangkannya di rumah, untuk mencari pria yang kuat. Sangat sulit untuk menemukan spesialis seperti itu.
Saya percaya bahwa jika Anda benar-benar memiliki banyak data dan Anda perlu bekerja secara menyeluruh dengan mereka (dan tidak hanya memprediksi jenis kelamin dan usia seseorang atau meningkatkan kemungkinan klik, misalnya), maka ini harus dua orang yang berbeda. Di sini aturan 20/80 berlaku: seorang ilmuwan data adalah 80% ilmu data, 20% - ia dapat menulis sesuatu dan memasukkannya ke dalam produk, dan seorang insinyur data - 80% insinyur perangkat lunak dan 20% ia tahu model apa, bagaimana mereka berlaku dan bagaimana cara menghitung, tanpa masuk ke matematika.
- Ceritakan tentang penemuan paling penting bagi Anda dalam ilmu data \ rekayasa data? Mungkin penggunaan beberapa alat / algoritma secara radikal mengubah pendekatan Anda untuk memecahkan masalah?- Mungkin fakta bahwa, memiliki cukup data, Anda dapat mengekstraksi banyak informasi berguna untuk tindakan Anda di masa depan. Sekalipun kadang-kadang Anda tidak tahu apa ini data mentah anonim, Anda masih bisa melakukan sesuatu atas dasar mereka: bagilah menjadi beberapa kelompok, temukan beberapa fitur, cukup dapatkan beberapa keteraturan menggunakan metode matematika pada angka. Benar, analis juga bisa melakukan ini sebelumnya, tetapi kenyataan bahwa sekarang telah menjadi lebih mudah diakses telah meningkatkan kekuatan besi - itu keren! Ambang untuk memasukkan ilmu data kini telah menurun, Anda tidak perlu tahu banyak sehingga Anda sudah bisa mencoba melakukan sesuatu pada beberapa alat.
- Apa file pekerjaan terbesar? Pelajaran apa yang Anda dapatkan dari ini?- Mungkin, saya akan mengecewakan Anda, saya belum pernah mengalami ini sebelumnya, mungkin di depan saya. Jujur saya berpikir, ingat, tetapi tidak ada yang seperti itu, sangat membosankan. Itu seperti administrator: jika Anda tidak "menjatuhkan makanan", Anda tidak "menghapus basis", Anda bukan administrator yang sebenarnya. Ya, saya mungkin bukan pengembang sungguhan.
- Alat rekayasa data apa yang paling sering Anda gunakan dan mengapa? Apa alat favorit kamu?- Saya sangat menyukai Apache Kafka. Alat keren baik dari segi fungsi yang disediakannya, maupun dengan rekayasa. Kekhasan pekerjaan Kafka terletak pada hubungan erat antara kode program dan sistem operasi tempat kerjanya - Linux (baca - βitu bekerja dengan cepat dan baikβ). Artinya, berbagai fungsi linux-a asli digunakan di sana, yang memungkinkan Anda untuk mendapatkan kinerja luar biasa bahkan pada perangkat keras yang lemah. Saya percaya bahwa di daerah kami seharusnya begitu - tidak cukup hanya untuk mengetahui bahasa pemrograman dan beberapa kerangka kerja untuk itu. Jika Anda ingin membuat sesuatu yang benar-benar keren, yang akan menyenangkan untuk digunakan tidak hanya untuk Anda, tetapi juga untuk orang lain, maka Anda perlu menggali lebih dalam dan tahu bagaimana kode Anda bekerja dalam sistem, pada perangkat keras.
- Konferensi apa yang Anda hadiri? Kolom profil apa \ blog \ tg saluran yang Anda baca?- Seperti yang saya katakan, semuanya dimulai dengan podcast, yaitu dengan
Pembekalan - dari orang-orang dari dunia java.
Ada juga
https://radio-t.com - podcast berbahasa Rusia yang keren tentang topik teknologi tinggi, salah satu yang paling populer (jika saya tidak salah) dalam bahasa kami.
Saya mengikuti berita dari
JUG.ru , orang-orang membuat konferensi hardcore keren, mengatur pertemuan. Saya mencoba untuk pergi ke orang-orang di Moskow, di St. Petersburg juga. Konferensi java teratas adalah Jpoint di Moskow (alias Joker di St. Petersburg), saya selalu pergi ke Jpoint atau menonton online.
Saya melihat apa yang dilakukan
Confluent - orang-orang yang mendapatkan dukungan korporat untuk kafka dan merupakan penggerak utama untuk itu. Mereka juga mengembangkan alat praktis di sekitar Apache Kafka di opensource. Saya mencoba menggunakan versinya.
Blog teknologi Netflix pada media adalah sumber yang bagus tentang solusi dari salah satu platform terbesar untuk memberikan konten video kepada pengguna. Beban tinggi dan sistem terdistribusi oleh sebagian besar "Saya tidak mau")
Saluran telegram:
https://t.me/hadoopusers - tempat di mana Anda dapat berkomunikasi dalam bahasa kami tentang topik rekayasa data;
https://t.me/jvmchat β java , , .
β , - ?β , - , . - : Β« , ?Β» , - java, C# C++, , - . , . , β β
β β , β -- β, : , -, 2D/3D-, , , , . , : , , , . , . .
-:
β Java Python?β Java, .
β Data Science Data Engineering?β Data Engineering
β ?β It depends, , , .
β ?β - , .
β ?β . , , . , , .