Halo lagi! Judul artikel berbicara tentang dirinya sendiri. Untuk mengantisipasi dimulainya kursus
"Insinyur Data", kami sarankan untuk mencari tahu siapa insinyur data. Artikel ini memiliki banyak tautan bermanfaat. Selamat membaca.
Panduan sederhana tentang cara menangkap gelombang Rekayasa Data dan mencegahnya menarik Anda ke dalam jurang.Orang mendapat kesan bahwa saat ini semua orang ingin menjadi Ilmuwan Data. Tapi bagaimana dengan Rekayasa Data?
Pada dasarnya, ini adalah jenis hibrid dari analis data dan ilmuwan data; Seorang insinyur data biasanya bertanggung jawab untuk mengelola alur kerja, memproses saluran pipa, dan proses ETL . Karena pentingnya fungsi-fungsi ini, ini adalah jargon profesional populer lain yang secara aktif mendapatkan momentum.
Gaji tinggi dan permintaan besar hanyalah sebagian kecil dari apa yang membuat pekerjaan ini sangat menarik! Jika Anda ingin bergabung dengan jajaran pahlawan, tidak ada kata terlambat untuk mulai belajar. Dalam posting ini, saya telah mengumpulkan semua informasi yang diperlukan untuk membantu Anda mengambil langkah pertama.
Jadi mari kita mulai!
Apa itu Rekayasa Data?Jujur, tidak ada penjelasan yang lebih baik dari ini:
"Seorang ilmuwan dapat menemukan bintang baru, tetapi tidak dapat membuatnya. Dia harus meminta insinyur untuk melakukannya untuknya. "
βGordon Lindsay Glegg
Dengan demikian, peran seorang insinyur data cukup signifikan.
Dari namanya, rekayasa data dikaitkan dengan data, yaitu pengiriman, penyimpanan, dan pemrosesan. Karenanya, tugas utama para insinyur adalah menyediakan infrastruktur yang andal untuk data. Jika kita melihat hierarki kebutuhan AI, rekayasa data mengambil 2β3 tahap pertama:
mengumpulkan, memindahkan dan menyimpan, menyiapkan data .
Apa yang dilakukan seorang insinyur data?Dengan munculnya data besar, bidang tanggung jawab telah berubah secara dramatis. Sebelumnya, para ahli ini menulis pertanyaan SQL besar dan menyalip data menggunakan alat-alat seperti Informatica ETL, Pentaho ETL, Talend, tetapi sekarang persyaratan untuk insinyur data telah meningkat.
Sebagian besar perusahaan dengan lowongan terbuka untuk posisi insinyur data memiliki persyaratan berikut:
- Pengetahuan yang sangat baik tentang SQL dan Python.
- Pengalaman dengan platform cloud, khususnya Layanan Web Amazon.
- Pengetahuan tentang Java / Scala lebih disukai.
- Pemahaman yang baik tentang database SQL dan NoSQL (pemodelan data, penyimpanan data).
Perlu diingat, ini hanya yang paling penting. Dari daftar ini, kita dapat mengasumsikan bahwa para insinyur data adalah spesialis di bidang pengembangan dan backend perangkat lunak.
Misalnya, jika perusahaan mulai menghasilkan sejumlah besar data dari berbagai sumber, tugas Anda sebagai insinyur data adalah mengatur pengumpulan informasi, pemrosesan, dan penyimpanannya.
Daftar alat yang digunakan dalam kasus ini mungkin berbeda, semuanya tergantung pada volume data ini, kecepatan penerimaan dan heterogenitasnya. Sebagian besar perusahaan tidak menemukan data besar sama sekali, oleh karena itu, sebagai repositori terpusat, yang disebut repositori data, Anda dapat menggunakan database SQL (PostgreSQL, MySQL, dll.) Dengan sekumpulan kecil skrip yang mengarahkan data ke repositori.
Raksasa TI seperti Google, Amazon, Facebook atau Dropbox memiliki tuntutan lebih tinggi: pengetahuan tentang Python, Java, atau Scala.
- Pengalaman dengan data besar: Hadoop, Spark, Kafka.
- Pengetahuan tentang algoritma dan struktur data.
- Memahami dasar-dasar sistem terdistribusi.
- Pengalaman dengan alat visualisasi data seperti Tableau atau ElasticSearch akan menjadi nilai tambah yang besar.
Artinya, ada pergeseran yang jelas menuju data besar, yaitu dalam pemrosesan pada beban tinggi. Perusahaan-perusahaan ini telah meningkatkan persyaratan toleransi kesalahan sistem.
Insinyur Data Vs. data ilmuwan
Ya, itu perbandingan yang sederhana dan lucu (bukan masalah pribadi), tetapi kenyataannya, semuanya jauh lebih rumit.Pertama-tama, Anda harus tahu bahwa ada banyak ambiguitas dalam perbedaan antara peran dan keterampilan seorang ilmuwan data dan seorang insinyur data. Artinya, Anda dapat dengan mudah dibuat bingung oleh keterampilan apa yang dibutuhkan untuk seorang insinyur data yang sukses. Tentu saja, ada keterampilan tertentu yang tumpang tindih dengan kedua peran tersebut. Tetapi ada juga sejumlah keterampilan yang bertentangan secara diametral.
Ilmu data adalah masalah serius, tetapi kami bergerak menuju dunia dengan ilmu data fungsional di mana praktisi dapat melakukan analisis mereka sendiri. Untuk menggunakan jalur pipa data dan struktur data terintegrasi, Anda membutuhkan insinyur data, bukan ilmuwan.
Apakah seorang insinyur data lebih banyak diminati daripada seorang ilmuwan data?- Ya, karena sebelum Anda bisa membuat kue wortel, Anda harus mengumpulkan, mengupas, dan menyimpan wortel terlebih dahulu!
Seorang insinyur data lebih tahu tentang pemrograman daripada ilmuwan data mana pun, tetapi dalam hal statistik, justru sebaliknya.
Tapi inilah keuntungan dari seorang insinyur data: tanpa dia, nilai model prototipe, paling sering terdiri dari sebuah fragmen kode kualitas mengerikan dalam file Python, yang diterima dari seorang ilmuwan data dan entah bagaimana memberikan hasil, cenderung nol.
Tanpa seorang insinyur data, kode ini tidak akan pernah menjadi proyek, dan tidak ada masalah bisnis yang akan diselesaikan secara efektif. Seorang insinyur data sedang mencoba untuk mengubah semua ini menjadi suatu produk.
Informasi Dasar yang Harus Diketahui oleh Insinyur Data
Jadi, jika karya ini membangkitkan cahaya dalam diri Anda dan Anda antusias - Anda dapat mempelajari ini, Anda dapat menguasai semua keterampilan yang diperlukan dan menjadi bintang rock nyata di bidang pengembangan data. Dan, ya, Anda dapat melakukan ini bahkan tanpa keterampilan pemrograman atau pengetahuan teknis lainnya. Itu sulit, tetapi mungkin!
Apa langkah pertama?Anda harus memiliki gagasan umum tentang apa itu apa.
Pertama-tama, Rekayasa Data mengacu pada ilmu komputer. Lebih khusus lagi, Anda harus memahami algoritma dan struktur data yang efektif. Kedua, karena para insinyur data bekerja dengan data, pemahaman tentang prinsip-prinsip operasi basis data dan struktur yang mendasari mereka diperlukan.
Sebagai contoh, database SQL B-tree biasa didasarkan pada struktur data B-Tree, serta dalam repositori terdistribusi modern, LSM-Tree dan modifikasi tabel hash lainnya.
* Langkah-langkah ini didasarkan pada artikel yang bagus dari Adil Khashtamov . Jadi, jika Anda tahu bahasa Rusia, dukung penulis ini dan baca postingnya .1. Algoritma dan struktur dataMenggunakan struktur data yang tepat dapat secara signifikan meningkatkan kinerja algoritma. Idealnya, kita semua harus mempelajari struktur data dan algoritma di sekolah kita, tetapi ini jarang dibahas. Bagaimanapun, tidak pernah ada kata terlambat untuk berkenalan.
Jadi, inilah kursus gratis favorit saya untuk mempelajari struktur dan algoritma data:
Plus, jangan lupa karya klasik tentang algoritma Thomas Cormen -
Pengantar Algoritma . Ini adalah referensi yang sempurna ketika Anda perlu menyegarkan ingatan Anda.
- Untuk meningkatkan keterampilan Anda, gunakan Leetcode .
Anda juga dapat terjun ke dunia database dengan video-video menakjubkan dari Universitas Carnegie Mellon di Youtube:
2. Belajar SQLSeluruh hidup kita adalah data. Dan untuk mengekstrak data ini dari database, Anda perlu "berbicara" dengan mereka dalam satu bahasa.
SQL (Structured Query Language) adalah bahasa komunikasi data. Tidak peduli apa yang dikatakan seseorang, SQL telah hidup, hidup dan akan hidup untuk waktu yang sangat lama.
Jika Anda telah dalam pengembangan untuk waktu yang lama, Anda mungkin memperhatikan bahwa rumor tentang kematian SQL yang akan terjadi muncul secara berkala. Bahasa ini dikembangkan pada awal 70-an dan masih sangat populer di kalangan analis, pengembang, dan hanya penggemar.
Tanpa pengetahuan SQL, tidak ada yang bisa dilakukan dalam rekayasa data, karena Anda pasti harus membuat kueri untuk mengambil data. Semua toko data besar modern mendukung SQL:
- Pergeseran merah Amazon
- HP Vertica
- Oracle
- SQL Server
... dan banyak lainnya.
Untuk menganalisis lapisan besar data yang disimpan dalam sistem terdistribusi seperti HDFS, mekanisme SQL diciptakan: Apache Hive, Impala, dll. Anda lihat, itu tidak akan pergi ke mana pun.
Bagaimana cara belajar SQL? Lakukan saja dalam praktek.
Untuk melakukan ini, saya akan merekomendasikan membaca tutorial yang sangat baik, yang, kebetulan, bebas dari
Mode Analytics .
- SQL Medium
- Menggabungkan data dalam SQL
Fitur khas dari kursus ini adalah keberadaan lingkungan interaktif di mana Anda dapat menulis dan menjalankan query SQL langsung di browser. Sumber daya
SQL modern tidak akan berlebihan. Dan Anda bisa menerapkan pengetahuan ini dalam
tugas Leetcode di bagian Database.
3. Pemrograman dengan Python dan Java / ScalaMengapa perlu belajar bahasa pemrograman Python, saya sudah menulis di artikel
Python vs R. Memilih alat terbaik untuk AI, ML dan Ilmu Data . Untuk Java dan Scala, sebagian besar alat untuk menyimpan dan memproses sejumlah besar data ditulis dalam bahasa-bahasa ini. Sebagai contoh:
- Apache Kafka (Scala)
- Hadoop, HDFS (Java)
- Apache Spark (Scala)
- Apache Cassandra (Jawa)
- HBase (Jawa)
- Apache Hive (Jawa)
Untuk memahami cara kerja alat-alat ini, Anda perlu mengetahui bahasa di mana mereka ditulis. Pendekatan fungsional Scala memungkinkan Anda untuk menyelesaikan tugas pemrosesan data paralel secara efisien. Sayangnya, Python tidak dapat membanggakan kecepatan dan pemrosesan paralel. Secara umum, pengetahuan tentang beberapa bahasa dan paradigma pemrograman memengaruhi luasnya pendekatan untuk menyelesaikan masalah.
Untuk membenamkan diri dalam bahasa Scala, Anda dapat membaca
Pemrograman dalam Scala dari penulis bahasa. Twitter juga menerbitkan panduan pengantar yang bagus -
Scala School .
Sedangkan untuk Python, saya menemukan
Fluent Python buku kelas menengah terbaik.
4. Alat data besarBerikut adalah daftar alat paling populer di dunia data besar:
- Apache percikan
- Apache kafka
- Apache Hadoop (HDFS, HBase, Hive)
- Cassandra Apache
Anda dapat menemukan informasi lebih lanjut tentang membangun blok data besar di
lingkungan interaktif yang menakjubkan ini. Alat yang paling populer adalah Spark dan Kafka. Mereka pasti layak ditelusuri, disarankan untuk memahami bagaimana mereka bekerja dari dalam ke luar. Jay Kreps (penulis bersama Kafka) pada 2013 menerbitkan karya monumental
The Log: apa yang harus diketahui oleh setiap pengembang perangkat lunak tentang abstraksi agregasi data waktu-nyata , omong-omong, ide-ide utama dari Talmud ini digunakan untuk membuat Apache Kafka.
5. Platform cloud
Pengetahuan tentang setidaknya satu platform cloud ada dalam daftar persyaratan dasar bagi pelamar untuk posisi insinyur data. Pengusaha memberikan preferensi ke Amazon Web Services, diikuti oleh platform cloud Google, dan menutup tiga pemimpin Microsoft Azure.
Anda harus berpengalaman dalam Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.
6. Sistem terdistribusiBekerja dengan data besar menyiratkan adanya kelompok komputer yang bekerja secara independen, komunikasi di antaranya dilakukan melalui jaringan. Semakin besar cluster, semakin besar kemungkinan kegagalan node anggotanya. Untuk menjadi ahli data yang keren, Anda perlu mempelajari masalah dan solusi yang ada untuk sistem terdistribusi. Daerah ini sudah tua dan kompleks.
Andrew Tanenbaum dianggap perintis di bidang ini. Bagi mereka yang tidak takut teori, saya merekomendasikan bukunya
Distributed Systems , bagi pemula mungkin terlihat rumit, tetapi itu benar-benar membantu Anda mengasah keterampilan Anda.
Saya menemukan
Merancang Aplikasi Data-intensif oleh Martin Kleppmann buku pengantar terbaik. Omong-omong, Martin memiliki
blog yang luar biasa. Karyanya akan membantu mensistematisasikan pengetahuan tentang membangun infrastruktur modern untuk menyimpan dan memproses data besar.
Bagi mereka yang suka menonton video, ada kursus
Sistem Komputer Terdistribusi di Youtube.
7. Jalur pipa data
Jalur pipa data adalah apa yang Anda tidak bisa hidup tanpanya sebagai insinyur data.
Sebagian besar waktu, insinyur data membangun apa yang disebut tanggal pipa, yaitu, ia menciptakan proses pengiriman data dari satu tempat ke tempat lain. Ini bisa berupa skrip pengguna yang masuk ke API layanan eksternal atau membuat kueri SQL, menambah data dan menempatkannya di penyimpanan terpusat (data warehouse) atau penyimpanan data tidak terstruktur (danau data).
Untuk meringkas: daftar periksa insinyur data utama
Untuk meringkas, Anda membutuhkan pemahaman yang baik tentang hal berikut:
- Sistem informasi;
- Pengembangan Perangkat Lunak (Agile, DevOps, Teknik Desain, SOA);
- Sistem terdistribusi dan pemrograman paralel;
- Dasar-dasar database - perencanaan, desain, operasi, dan pemecahan masalah;
- Merancang eksperimen - tes A / B untuk membuktikan konsep, menentukan keandalan, kinerja sistem, dan juga untuk mengembangkan cara yang andal untuk dengan cepat memberikan solusi yang baik.
Ini hanya beberapa persyaratan untuk menjadi insinyur data, jadi pelajari dan pahami sistem data, sistem informasi, pengiriman / penyebaran / integrasi berkelanjutan, bahasa pemrograman, dan topik lain dalam ilmu komputer (tidak di semua bidang studi).
Dan akhirnya, hal terakhir tapi sangat penting yang ingin saya katakan.Jalan untuk menjadi Rekayasa Data tidak sesederhana kelihatannya. Dia tidak memaafkan, membuat frustrasi, dan Anda harus siap untuk ini. Beberapa poin dalam perjalanan ini mungkin mendorong Anda untuk berhenti. Tetapi ini adalah pekerjaan nyata dan proses pendidikan.
Hanya saja, jangan membumbui dari awal. Inti perjalanan adalah untuk belajar sebanyak mungkin dan bersiap untuk tantangan baru.
Ini adalah gambar hebat yang saya temui yang menggambarkan hal ini dengan baik:

Dan ya, ingatlah untuk menghindari kelelahan dan istirahat. Ini juga sangat penting. Semoga beruntung
Anda suka artikelnya, teman? Kami mengundang Anda ke
webinar gratis , yang akan diadakan hari ini pukul 20.00. Sebagai bagian dari webinar, kita akan membahas bagaimana membangun sistem pemrosesan data yang efektif dan scalable untuk perusahaan kecil atau startup dengan biaya minimal. Sebagai praktik, kami akan memperkenalkan Anda ke alat pemrosesan data Google Cloud. Sampai ketemu lagi!