Ada begitu banyak programmer di luar sana yang juga ahli dalam penulisan Query dan desain Database.
Haruskah ini menjadi persyaratan inti untuk menjadi programmer ahli atau insinyur perangkat lunak?
Meskipun ada banyak kesamaan dalam cara kueri dan kode dikembangkan, pendapat pribadi saya adalah, Kueri tampaknya memiliki Struktur yang berbeda dari Kode dan bisa sulit untuk menguasai keduanya secara bersamaan karena pendekatan yang berbeda.
Jawaban:
Apakah atau tidak penulisan permintaan basis data menjadi persyaratan inti tergantung pada pekerjaan, tetapi database relasional ada di mana-mana dalam teknologi saat ini.
Jadi, jika saya bertemu seorang programmer yang tidak tahu bagaimana menulis query database, saya akan mengharapkan satu dari dua hal:
Permintaan basis data pada dasarnya berbeda dari bahasa pemrograman standar lainnya. Mereka aljabar dan dimaksudkan untuk beroperasi pada data relasional, sedangkan C # atau Java sangat penting dan beroperasi pada disk, memori, input pengguna, dll. Bahkan bahasa fungsional seperti LISP atau Haskell yang lebih aljabar dalam bentuk kurang berorientasi pada data relasional.
EDIT: Seperti yang telah ditunjukkan dalam komentar oleh saya dan orang lain, ada beberapa alasan yang valid mengapa pengembang yang berpengalaman mungkin tidak mengetahui pertanyaan basis data dengan baik:
Meskipun valid, peringatan ini bukan alasan meyakinkan mengapa pengembang yang berpengalaman tidak akan tahu permintaan basis data. Kecuali sangat terspesialisasi, seorang programmer harus terbiasa dengan database relasional.
Singkatnya, sebagian besar pengembang yang berpengalaman harus mengetahui permintaan basis data .
sumber
Setiap insinyur perangkat lunak harus memiliki pemahaman dasar tentang database dan cara menyimpan dan mengambil data menggunakan SQL, setidaknya ke tingkat di mana mereka memiliki pemahaman tentang apa ini dapat digunakan untuk (dan dengan itu saya akan memasukkan pemahaman tentang kunci, pandangan , prosedur dan pemicu tersimpan).
Tidak setiap insinyur perangkat lunak perlu menjadi seorang ahli, dan tingkat keahlian yang dibutuhkan benar-benar tergantung pada jenis perangkat lunak yang mereka fokuskan. Perangkat lunak tertanam, driver perangkat keras dan sistem operasi jarang menggunakan SQL, tetapi perangkat lunak aplikasi (baik berbasis web atau desktop atau layanan / daemon) menggunakan basis data setiap saat.
sumber
Ada beberapa bidang keahlian (embedded system misalnya) di mana pengetahuan basis data tidak diperlukan. Tetapi sebagian besar aplikasi bisnis menggunakan semacam database dan jika Anda tidak benar-benar memahami cara menggunakannya dengan benar, Anda dapat membuat kekacauan kinerja yang sangat sulit untuk diperbaiki. Database refactoring dapat menjadi proses yang kompleks dan sulit dan banyak tempat memilih untuk tidak memperbaiki masalah struktural karena kesulitan itu dan hanya menggali diri mereka lebih dalam ke dalam lubang. Jika Anda memiliki pengetahuan basis data, desain jauh lebih mudah dan jauh lebih mungkin untuk bekerja dengan baik seiring waktu.
ORM bukanlah pengganti untuk mendapatkan pengetahuan basis data. Siapa pun yang menggunakannya tanpa mengetahui dasar-dasar kueri dan desain basis data pasti akan memiliki database yang berkinerja buruk, yang dirancang dengan buruk yang akan memengaruhi kemampuan aplikasi Anda untuk menangani beban dalam jangka panjang. ORM di tangan seseorang yang tahu apa yang dia lakukan baik-baik saja; di tangan orang-orang yang tidak dapat diganggu untuk belajar tentang database, mereka biasanya merupakan bencana.
Jika saya memiliki proyek dengan backend database, spesialis basis data akan menjadi pengembang kedua yang akan saya sewa (setelah pengembang aplikasi awal). Database pada umumnya tidak membuang-buang, bahwa data akan tetap ada di dekat dengan bentuk yang sama 20 tahun kemudian, membayar untuk memiliki keahlian dalam tahap awal.
Proyek sering mendapat masalah karena mereka tidak mempekerjakan orang-orang ini sampai database memiliki 100.000.000 catatan dan berjalan lambat. Atau mereka menyalahkan alat karena buruk (tidak ada SQL Server tidak lambat jika Anda mendesain dengan benar) bukan ketidakmampuan desain mereka.
sumber
Jawaban yang benar secara politis: Itu tergantung. Pengetahuan SQL tidak memiliki nilai apa pun jika pengembang tidak pernah bekerja dengan basis data relasional (dan pada hari ini dan usia aplikasi NoSQL, itu sebenarnya sangat mungkin).
Kedua, ketika ada DBA atau penulis kueri penuh waktu (apa pun judulnya), maka pemahaman juga kurang penting.
Ini hanya sangat penting jika pengembang perlu menjadi jack-of-all-trade dan ada persyaratan dalam proyek-proyeknya untuk menggunakan database relasional (misalnya dalam aplikasi web kuno atau terhubung dengan database yang ada)
Pendapat pribadi saya: Tidak. Pengembang perangkat lunak yang berpengalaman harus dapat mempelajari keterampilan baru (seperti SQL) jika dan ketika diperlukan, bukan 'secara default'. Fleksibilitas dan kemampuan untuk belajar dan memahami adalah, imho, yang membedakan pengembang yang baik dari yang baik. Aturan 'palu emas' juga berlaku - jika Anda memiliki pengembang dengan pengetahuan SQL yang luas, sangat mungkin pengembang ini akan mengeluarkan alat yang paling dikenalnya - basis data relasional - untuk mencoba menyelesaikan setiap masalah, sementara itu tidak harus memiliki menjadi solusi terbaik. Tentu saja, ini juga berlaku untuk pendukung NoSQL,;).
Memilih alat yang tepat untuk pekerjaan yang tepat adalah apa yang harus diketahui oleh programmer berpengalaman.
sumber
Lihat pengantar wikipedia ini untuk Pemrograman Komputer:
Query basis data memiliki bahasa mereka sendiri, mereka dapat dirancang, diuji, debbug, dan dipertahankan. Tujuan dari permintaan basis data adalah untuk memungkinkan Anda memperoleh informasi yang Anda butuhkan, seperti yang Anda butuhkan.
Jadi saya pikir itu pemrograman, pasti.
sumber
Seorang insinyur perangkat lunak yang baik dengan latar belakang dalam aplikasi perusahaan dan bisnis (EDIT: khususnya dalam proyek-proyek yang menggunakan RDBMS) harus memiliki pengetahuan ahli dalam menulis permintaan basis data relasional dalam format standar. Selanjutnya mereka harus dapat memahami skema kompleks dan mengusulkan desain skema setidaknya kompleksitas sedang.
Desain skema yang sangat canggih atau rumit harus menjadi ranah pemodel data atau arsitek fungsional.
Ini tidak berarti bahwa Pemrogram Database tidak punya tempat juga. Prosedur tersimpan yang kompleks, permintaan dan arsitektur perangkat lunak tingkat dan basis data yang kompleks dan efisien yang berfokus pada alat unik dan penawaran dari vendor basis data tunggal (mis. Oracle, MySQL, SQLServer, dll ...) sebaiknya dibiarkan jika mungkin dengan perangkat lunak profesional insinyur yang memiliki pengalaman dengan penawaran khusus yang sangat khusus dan rumit ini.
Namun, sebagian besar sistem bisnis dan perusahaan menurut saya tidak membenarkan perlunya pemodel data dan pemrogram basis data khusus, tetapi saya telah mengerjakan proyek-proyek seperti itu sebelumnya. GREATLY mendapat manfaat dari pengetahuan dan keahlian yang dibawa orang-orang ini ke meja.
sumber
Orang lain telah menjawab pertanyaan Anda tentang permintaan basis data.
Desain basis data adalah jenis desain tertentu. Ini tidak sulit untuk dipelajari, tetapi perancang basis data tipikal tidak mendapatkan banyak kesempatan untuk mendesain basis data.
Tempat saya bekerja sekarang memiliki desain database yang sama dengan yang ada pada tahun 1970. Kami telah memindahkan database dari IDMS ke DB2, tapi itu desain database jaringan yang sama. Saya memiliki kesempatan untuk membuat 5 tabel DB2 baru dalam 9 tahun saya telah bekerja di sini.
Saya menduga bahwa ada sangat sedikit tempat kerja dengan perancang basis data khusus. Jadi, saya menyimpulkan bahwa desain basis data dianggap sebagai bagian dari daftar analis senior.
sumber
Saya terus terang kagum bahwa begitu banyak dari kita berpikir bahwa setiap pengembangan berkisar pada database, dan database SQL pada saat itu.
Yang lain telah menyebutkan banyak cara di mana kita dapat menghindari seluk-beluk SQL dalam pekerjaan kita, bahkan ketika kita bekerja (secara tidak langsung) dengan database, tetapi bagaimana dengan semua pengembang yang menulis firmware untuk 101 produk listrik yang kita masing-masing memiliki? Bagaimana dengan orang-orang yang berspesialisasi dalam pemantauan waktu nyata?
Saya akan menyarankan bahwa sebagian besar pengembang saat ini akan memiliki keterampilan SQL ke tingkat yang berbeda-beda, tetapi masih jauh dari menjadi barometer kemampuan mereka.
sumber
Saya pikir Anda melebih-lebihkan pentingnya database dalam perangkat lunak.
Banyak kelas aplikasi tidak berpusat pada database.
Apakah kita memerlukan DBMS di pengolah kata dan editor gambar sekarang? Bagaimana dengan pengenalan suara dan sistem visi komputer yang mengandung banyak pertanyaan basis data?
Dan bagaimana dengan editor video linear dan mesin fisik video game?
sumber
Saya berharap pengembang generalis memiliki setidaknya kesadaran tentang teknologi basis data (relasional atau lainnya) dan dapat mendiskusikan pro dan kontra penggunaannya. Kalau tidak, aku takut yang mereka tahu bagaimana melakukannya adalah memasukkan data ke file datar.
sumber
Saya tidak berpikir menulis query harus menjadi persyaratan inti untuk programmer. Karena itu, saya percaya bahwa seorang programmer yang dapat menulis pertanyaan dan mendesain database akan lebih berharga bagi suatu organisasi.
Namun, jika pemrogram ini hanya dapat menulis kueri jenis "select * from tblxxxx", saya tidak akan menganggap pemrogram ini ahli. Demikian juga, jika database yang dirancang oleh programmer ini menempatkan hubungan satu-ke-banyak ke dalam satu tabel, bukan dua tabel maka saya tidak akan menganggap programmer ini sebagai ahli.
Inilah cara saya menjelaskan hal ini kepada orang-orang non IT. Para profesional TI berspesialisasi dalam bidang-bidang tertentu yang mirip dengan bagaimana tukang kayu, tukang listrik, dan tukang pipa mengkhususkan diri dalam bidang-bidang yang disegani di sana. Mereka cenderung tumpang tindih beberapa keterampilan tetapi tidak ahli di semua bidang. Seorang tukang listrik dapat melakukan tugas-tugas pertukangan sederhana dengan percaya diri tetapi tidak akan menjadi pertanda baik mencoba untuk mengatasi struktur yang kompleks.
Demikian juga, seorang programmer dapat dan harus tahu bagaimana menulis atau memanipulasi pertanyaan sederhana dan desain database tetapi tidak diharapkan untuk merancang struktur data yang kompleks.
sumber
Melihat-lihat di departemen kami, itu tergantung:
sumber