Seberapa pentingkah pengetahuan Domain vs pengetahuan Teknis?

33

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. Titik sakitnya adalah terlalu banyak penekanan pada pemahaman bisnis. Perdagangan (Perdagangan Energi tepatnya) adalah bidang yang BESAR dan pemahaman setiap bagiannya sangat besar. 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?

Mayank
sumber
12
Harap beri tahu manajer Anda bahwa Teknologi / Pemrograman tidak terbatas pada EXCEL || MS Office || Same-time Connect, yang dapat dipelajari siapa saja dalam seminggu.
Ranger
Saya tidak dapat mempercayai beberapa jawaban, saya harap orang-orang memilihnya dengan sepenuh hati.
Gaurav
@ Gaurav, saya harap tidak. Saya tidak berpikir emosi panas akan ada gunanya di forum ini (atau forum mana pun pada umumnya). Saya akan tertarik untuk mengetahui keberatan konkret Anda, jadi jangan ragu untuk mengomentari jawaban yang Anda miliki masalah.
Péter Török
@Ranger LOL! Anda mengatakan bahwa pekerjaan Manajer mudah?
Gopi
5
Minta dia untuk mempelajari apa yang Anda lakukan dalam seminggu. Itu adalah sikap yang sangat arogan. Aku bahkan bertaruh dengannya bahwa dia tidak bisa melakukan apa yang kamu bisa, bertaruh dua kali lipat gajimu. Mungkin butuh satu minggu bagi seorang pemula untuk mempelajari sintaks dari memori, operan, dan kondisional bahasa tertentu ... dan mungkin sebulan atau lebih untuk menguasainya. Itu adalah proses yang panjang untuk sampai di tempat kita sekarang, tetapi biasanya itu adalah hasrat kita sehingga kita telah menyebarkan kesulitan sepanjang hidup.
Incognito

Jawaban:

33

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

Karl Bielefeldt
sumber
1
Ketika seorang programmer tidak menyadari apa yang klien katakan sulit untuk
dikodekan
+1 @Sri Kumar benar, tapi saya pikir sebagai pemrograman, Anda masih harus dapat mengetahui apa yang mereka butuhkan dan bagaimana Anda akan menggunakan teknologi untuk menghasilkan solusi. Saya setuju, menulis solusi bisnis berarti menemukan semua jenis bisnis.
gideon
3
Jawaban saya akan sama dengan kata yang berbeda. Jika Anda tidak memahami konteks apa yang Anda buat, Anda akan membuatnya dalam konteks yang Anda mengerti, bukan yang DIHARAPKAN. Kecuali Anda berada di tim besar dan Anda sedang menulis spesifikasi dan objek XML berdasarkan diagram UML, itu sangat penting.
Incognito
Bahkan kompiler dan vcs memiliki domain, kami mungkin lebih nyaman dengannya.
Josh Johnson
24

Benjol dan manajer Anda benar, tetapi izinkan saya menguraikan:

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

ini adalah perbedaan antara programmer kode monyet dan pengembang

Steven A. Lowe
sumber
7
+1 Saya tidak digunakan untuk programmer. Saya membutuhkan pengembang, alias pemecah masalah. :)
jmort253
18

Ada pepatah yang datang dari Departemen Ilmu Komputer Universitas saya:

Jika Anda ingin membangun perangkat lunak untuk Ahli Geologi, Anda harus terlebih dahulu memahami Geologi. 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 menciptakan sesuatu yang memecahkan masalah mereka , bukan sesuatu yang hanya "keren".

Untuk menyelesaikan masalah, Anda harus terlebih dahulu memahami masalahnya. Anda harus 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 Contoh Iklan Pekerjaan Insinyur Bisnis ini yang saya tulis sebagai jawaban atas pertanyaan lain.

jmort253
sumber
2
+1 - Pelanggan dan pemangku kepentingan Anda akan mengharapkan Anda untuk menciptakan sesuatu yang menyelesaikan masalah mereka, bukan sesuatu yang hanya "keren".
Karthik Sreenivasan
"Jika Anda ingin membangun perangkat lunak untuk Geologist ..." suka pernyataan itu. Universitas mana? ingin bisa mengutipnya!
Raj Rao
1
@RajRao Sayangnya, saya parafrase, dan saya tidak ingat persis dari siapa saya belajar itu. Ruben Gamboa ( uwyo.edu/cosc/cosc-directory/ruben/index.html ) atau Dr. William Spears ( uwyo.academia.edu/WilliamSpears ) dari University of Wyoming, Laramie, Wyoming, USA.
jmort253
14

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.

vegai
sumber
2
+1 - Sangat naif untuk berpikir bahwa seseorang bisa menjadi arsitek yang sukses tanpa memahami domain. Jika saya bisa, saya akan memberi Anda +1 lagi karena menyebutkan komunikasi. Terlalu banyak orang mengabaikan perkembangan komunikasi dalam karier mereka.
jmort253
11

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 mendapati bahwa bisnis khusus ini membosankan, Anda dapat mencari sesuatu yang berbeda. Tetapi jika ide Anda tentang firdaus adalah meretas bersama situs-situs php kecil, berhati-hatilah: akan ada ribuan kiddies skrip yang melakukan itu juga.

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

Benjol
sumber
1
Saya setuju dengan ini. Jika Anda ingin membuat kode dalam ruang hampa, kembali ke dunia akademis atau dapatkan pekerjaan dengan cabang penelitian di beberapa perusahaan besar seperti IBM, MS, atau Google. Bagi kebanyakan dari kita, kenyataannya adalah kita harus memahami bisnis, terutama jika tujuannya adalah untuk menjadi seorang arsitek yang secara fundamental merupakan kombinasi dari pengembang yang kuat dan BA yang kuat.
Curtis Batt
1
@ Mayank, imho, memang sangat sulit untuk memahami detail dari seluruh bisnis, dan itu adalah sesuatu yang Anda benar-benar hanya harapkan untuk dilakukan secara alami dari waktu ke waktu. Setiap elemen dari sistem yang Anda kerjakan secara alami harus melibatkan belajar lebih banyak tentang bisnis. Begitulah cara bekerja ketika saya telah bekerja di industri dengan pengetahuan domain yang berat.
Carson63000
2
@ Mayank, Tidak, tidak salah untuk mengatakan itu sangat sulit. Ketika saya tiba di pekerjaan saya saat ini, kolega-kolega saya yang baru memberi tahu saya akan butuh waktu 6 bulan hanya untuk menyelesaikan kode . Sekarang saya mendekati 4 tahun dan masih belajar hal-hal baru tentang bisnis ...
Benjol
1
+1000 jika saya bisa. IMHO, teknologi adalah bagian yang mudah / menyenangkan.
ozz
1
Tidak, dia tidak naif. Selanjutnya manajernya adalah berbunyi idiot, dan harus mendayung secara teratur.
Gaurav
8

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 Anda 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 membuat aplikasi perdagangan kecil mereka sendiri di Excel / VBA (hanya itu yang mereka ketahui) dan kemudian IT akhirnya mewarisi kekacauan program ini.

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

asgeo1
sumber
1
+1 Untuk "bisnis yang rumit" :) Saya telah bekerja di domain perbankan sebelum ini dan merasa jauh lebih menarik dan mudah. Juga, seperti yang Anda tunjukkan semuanya dilakukan di Excel!
Mayank
6

Jika Anda mengembangkan untuk 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.

Andrew Shepherd
sumber
2
Tunggu, analis bisnis mendapatkan persyaratan yang jelas? Itu bagus. Saya pribadi lebih suka berurusan dengan pengguna akhir secara langsung.
Christopher Mahan
@Christopher - Saya berkata "mencoba" untuk mendapatkan persyaratan :-)
Andrew Shepherd
Memang benar.
Christopher Mahan
1
+1 - Analis bisnis duduk dalam pertemuan panjang dengan pelanggan yang mencoba untuk mendapatkan persyaratan dari mereka yang cukup jelas untuk dikerjakan oleh pengembang.
Karthik Sreenivasan
6

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 tidak dapat digunakan dari dalam. (Dalam kasus terburuk, mereka bahkan tidak baik: - ((())

Memperbarui

Komentar Gaurav:

Yang saya ingin tahu adalah sejauh mana seorang pengembang harus berusaha dalam memahami domain bisnis. Haruskah dia berjalan terus, atau ada 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 sepenuhnya berbeda, ada dasar-dasar yang dapat digunakan kembali di antara domain yang berbeda. Dan yang paling penting, pendekatan desain berbasis domain yang Anda peroleh dapat digunakan kembali.

Péter Török
sumber
1
@ Peter Terima kasih telah memperbarui jawabannya. Saya punya pertanyaan lebih lanjut. Saya berasumsi bahwa jawaban ini, dan juga yang lain, berasumsi bahwa pengembang akan tetap pada satu domain bisnis, bagaimana jika itu tidak terjadi ketika pengembang sering mengubah domain bisnis yang sedang dikerjakannya. Saya tidak yakin dengan seluruh dunia, tetapi ini sangat umum di India. Untuk misalnya. baru tahun lalu saya beralih dari domain CAX ke domain Pemasaran, dan dapat beralih ke domain lain.
Gaurav
2
@Gaurav, 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 jauh ke dalam domain tertentu namun perlu dicatat bahwa domain tidak benar-benar berbeda, ada dasar yang dapat digunakan kembali antara domain yang berbeda Dan yang paling penting, domain didorong desain. pendekatan Anda gain dapat digunakan kembali.
Péter Török
@ Peter Terima kasih lagi. Saya akan memilih-up jawaban Anda, tetapi tampaknya Anda hanya dapat memilihnya sekali (aturan bodoh). Satu lagi jika tidak terlalu merepotkan dapat Anda masukkan komentar Anda dalam jawaban Anda.
Gaurav
@Gaurav, selesai, senang saya bisa membantu :-)
Péter Török
Dan alasan untuk downvote adalah ...?
Péter Török
2

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 untuk diperbaiki tanpa merusak sesuatu, dan itu jika proyek tidak berakhir dibatalkan karena kurangnya keterampilan teknis untuk benar-benar mendapatkannya dalam produksi.

Martin Cooper
sumber