it-swarm-id.com

Seberapa pentingkah pengetahuan Domain vs pengetahuan Teknis?

Saya sedang mengerjakan aplikasi Manajemen Perdagangan dan Risiko dan meskipun dari latar belakang C #, saya telah diminta untuk mengerjakan paket SSIS. Sekarang saya bisa hidup dengan itu. Masalahnya adalah terlalu banyak penekanan pada pemahaman bisnis. Perdagangan (Perdagangan Energi tepatnya) adalah area BESAR dan memahami setiap bagiannya sangat luar biasa. Tetapi selama dua bulan terakhir saya telah bekerja pada pemahaman istilah bisnis - Tandai Ke Pasar, Metrik Risiko, Posisi, PnL, Yunani, Instrumen, Struktur Buku ... setiap detail kecil (Anda mendapatkan intinya). Sekarang IMHO, ini adalah tugas BA. Tentu sangat penting bagi pengembang untuk memahami bisnis tetapi di mana Anda menarik garis?

Ketika saya berbicara dengan manajer saya tentang hal ini, dia hampir mengejek saya dengan mengatakan bahwa siapa pun dapat mempelajari teknologi dalam seminggu. Ini bisnis yang lebih sulit. Cita-cita jangka panjang saya adalah tetap di sisi teknis, mungkin menjadi arsitek (jika mungkin). Jika saya ingin begitu fokus pada bisnis, saya akan mengejar gelar MBA!

Saya ingin tahu apakah saya salah atau terlalu naif dalam memahami kepentingan bisnis atau apakah frustrasi saya dibenarkan?

33
Mayank

Pekerjaan seorang programmer adalah menerjemahkan persyaratan bahasa alami ke dalam implementasi bahasa mesin. Anda tidak dapat melakukannya dengan efektif jika Anda hanya fasih di satu sisi atau di sisi lain. Kecuali Anda menulis kompiler atau perangkat lunak kontrol versi, hampir setiap pekerjaan pemrograman akan membutuhkan banyak pengetahuan non-pemrograman.

33
Karl Bielefeldt

Benjol dan manajer Anda benar, tetapi izinkan saya menguraikan:

mempelajari domain bisnis adalah cara Anda menambahkan nilai ke proses dan menambah nilai Anda ke bisnis

ini adalah perbedaan antara a kode monyet programmer dan pengembang

24
Steven A. Lowe

Ada pepatah yang datang dari Departemen Ilmu Komputer Universitas saya:

Jika Anda ingin membangun perangkat lunak untuk Geologist, Anda harus terlebih dahulu memahami Geology. Jika Anda ingin membangun perangkat lunak untuk Fisika, Anda harus mencoba-coba terlebih dahulu dalam Fisika. Jika Anda ingin memahami bisnis, maka Anda harus terlebih dahulu belajar berbicara bisnis.

Saya mendengar orang-orang di sini sepanjang waktu mengatakan bahwa Pengembangan Perangkat Lunak adalah bidang kreatif. Saya percaya ini benar sampai batas tertentu. Ini melibatkan kreativitas di mana seseorang harus dapat melihat di luar kotak untuk menyelesaikan serangkaian masalah.

Apa itu tidak berarti bahwa Anda hanya bisa duduk dan oh begitu kreatif membangun apa pun yang Anda inginkan. Ini bukan kelas Seni, itu Teknik, dan pelanggan dan pemangku kepentingan Anda akan mengharapkan Anda untuk membuat sesuatu yang memecahkan masalah mereka , bukan sesuatu yang cukup "keren".

Untuk menyelesaikan masalah, Anda harus terlebih dahulu memahami masalahnya. Anda perlu masuk ke kepala pengguna Anda dan memahami bagaimana mereka berpikir.

Apakah Anda sedang membangun perangkat lunak untuk keuangan, pemasaran, penjualan, geologi, fisika, atau bidang apa pun yang didukung perangkat lunak, Anda harus menjadi bagian dari bidang itu.

Karena alasan inilah, selain gelar Ilmu Komputer saya, saya juga mendapatkan gelar Bisnis; itu telah membuat dampak besar pada kemampuan saya untuk mengkomunikasikan solusi potensial dan memberikan produk yang sukses.

Jika Anda ingin mempelajari lebih lanjut tentang apa yang akan saya cari ketika mempekerjakan seorang insinyur perangkat lunak bisnis, lihat ini Contoh Iklan Pekerjaan Insinyur Bisnis yang saya tulis sebagai jawaban untuk pertanyaan lain.

18
jmort253

Anda mungkin bertahan tanpa banyak pengetahuan domain atau kontak pelanggan sebagai pembuat kode tingkat rendah, tetapi seorang arsitek perangkat lunak adalah seseorang yang sangat akrab dengan domain tersebut dan secara aktif berkomunikasi dengan semua pemangku kepentingan.

14
vegai

Menurut saya, Anda salah dan terlalu naif.

Seperti yang dikatakan manajer Anda (sedikit sembrono), siapa pun dapat mempelajari teknologi dalam seminggu. Satu-satunya hal yang akan menandai Anda dan membuat Anda berguna bagi perusahaan Anda adalah pengetahuan bisnis Anda. Dan semakin sulit, semakin Anda layak.

Jelas, jika Anda menemukan bahwa bisnis khusus ini menjemukan, Anda dapat mencari sesuatu yang berbeda. Tetapi jika ide Anda tentang firdaus meretas bersama situs-situs php kecil, berhati-hatilah: akan ada ribuan kiddies skrip yang juga melakukan hal itu.

Serius, "Saya hanya seorang pembuat kode, jangan membingungkan saya dengan fakta-fakta" tidak akan memotongnya.

11
Benjol

Saya bekerja di Perdagangan Energi juga. Pengetahuan Bisnis adalah 90% dari pekerjaan. Anda tidak dapat menyiasati hal itu - ini adalah bisnis yang rumit.

Jika Anda setidaknya tidak memahami dasar-dasar perdagangan, dan pasar tempat Anda bekerja, Anda akan berjuang tidak peduli seberapa bagus seorang pembuat kode.

Saya bekerja dengan beberapa BA yang tidak bisa mendapatkan persyaratan dengan benar. Saya perlu mengandalkan keterampilan analitis saya sendiri dan pemahaman tentang pengetahuan bisnis untuk menyelesaikan pekerjaan.

Saya pikir jika Anda bekerja untuk toko yang menjual perangkat lunak Energy Trading, pengalaman Anda mungkin berbeda - tetapi dalam perdagangan energi IT Korporat fokusnya adalah memahami pasar dan bagaimana perangkat lunak dapat memberikan solusi untuk masalah bisnis terlebih dahulu.

Teknologi aktual yang digunakan dan implementasi berada di tempat kedua.

Orang di atas yang membuat komentar Excel tidak tahu seberapa tepat komentarnya. Pedagang sering membangun aplikasi perdagangan kecil mereka sendiri di Excel/VBA (hanya itu yang mereka ketahui) dan kemudian IT akhirnya mewarisi banyak program.

Saya ingin membangun kembali beberapa aplikasi ini dalam bahasa yang "tepat", tetapi itu tidak selalu menjadi prioritas.

8
asgeo1

Jika Anda mengembangkan bisnis, Anda akan memiliki gagasan aturan bisnis yang lebih jelas dan lebih terperinci daripada siapa pun di perusahaan. Ini belum tentu karena Anda lebih pintar daripada semua orang, itu datang karena itu satu-satunya cara Anda dapat melakukan pekerjaan itu.

Reaksi Anda mungkin, "Tapi apa yang dilakukan analis bisnis?"

Analis bisnis duduk dalam pertemuan panjang dengan pelanggan yang mencoba untuk mendapatkan persyaratan dari mereka yang cukup jelas bagi pengembang untuk bekerja dengannya. Saya melihat cara mereka harus berurusan dengan pelanggan, dan merasa bersyukur bahwa saya tidak harus melakukan itu.

6
Andrew Shepherd

Saya suka menggambar analogi antara pengembangan perangkat lunak dan arsitektur. Keduanya adalah seni terapan. Keduanya membutuhkan pemodelan yang rumit di dalam pikiran seseorang. Aspek yang berlaku untuk pertanyaan ini adalah bahwa menulis perangkat lunak tanpa pengetahuan bisnis seperti merancang sebuah bangunan tanpa memahami gaya hidup dan kebutuhan penduduk. Saya pikir banyak dari kita telah melihat (atau bahkan tinggal/bekerja di) bangunan yang mungkin terlihat indah dan modern dan yang lainnya dari luar, hanya saja tidak dapat digunakan dari dalam. (Dalam kasus terburuk, mereka bahkan tidak Nice: (())

Memperbarui

Komentar Gaurav:

yang saya ingin tahu adalah sejauh mana seorang pengembang harus berusaha dalam memahami domain bisnis. Haruskah dia pergi jauh-jauh, atau ada beberapa garis yang harus ditarik.

Saya tidak berpikir Anda bisa menggambar garis di mana saja secara umum. Kecuali ada bagian aplikasi/domain yang tidak perlu Anda sentuh (dengan demikian pahami). Yang IMHO sangat jarang dalam kehidupan nyata, dalam jangka panjang. Bagian mana pun dari aplikasi yang sedang digunakan aktif akan mendapatkan laporan bug dan permintaan fitur. Domain juga berubah, karena undang-undang yang sesuai, aturan pajak, kebijakan, kebiasaan - singkatnya, dunia nyata - berubah. Ini harus diikuti dalam perangkat lunak juga.

Tetapi bahkan tanpa permintaan eksternal untuk perubahan, pengujian unit dan refactoring kode warisan memerlukan pemahaman area domain yang relevan juga. Kalau tidak, Anda hanya "membekukan" perilaku aplikasi saat ini, tanpa mengetahui apakah itu benar atau tidak.

Pembaruan2

bagaimana jika pengembang [...] sering mengubah domain bisnis yang sedang dikerjakannya?

Itu tentu saja berarti bahwa sebagian besar investasi (waktu dan uang majikan Anda) untuk mendapatkan pengetahuan bisnis Anda hilang :-( Jika Anda tahu itu akan terjadi, tentu saja itu mungkin tidak layak untuk digali terlalu dalam. Namun, perhatikan bahwa domain tidak --- (sama sekali berbeda, ada dasar-dasar yang dapat digunakan kembali di antara domain yang berbeda. Dan yang paling penting, desain yang digerakkan domain pendekatan yang Anda peroleh adalah dapat digunakan kembali.

6
Péter Török

Saya telah bekerja di sektor perbankan selama lebih dari sepuluh tahun mengembangkan aplikasi perdagangan dan setuju bahwa penting bagi pengembang untuk memahami bisnis dengan baik. Tetapi berkali-kali, selama proses wawancara, jika orang tersebut tidak memiliki pengetahuan yang baik tentang bisnis, mereka tidak melewati pintu.

Ini telah menyebabkan sejumlah besar aplikasi kritis dan sistem yang dikembangkan oleh orang-orang ini dengan pengetahuan bisnis yang kuat tetapi lemah hingga keterampilan teknis tingkat menengah. Sistem ini selalu berakhir dirancang dengan buruk yang terus-menerus macet, penuh dengan bug, tidak berskala, hampir tidak mungkin diperbaiki tanpa merusak sesuatu, dan itu jika proyek tidak berakhir dibatalkan karena kurangnya keterampilan teknis untuk benar-benar mendapatkannya dalam produksi.

2
Martin Cooper