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?
sumber
Jawaban:
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.
sumber
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 monyetdan pengembangsumber
Ada pepatah yang datang dari Departemen Ilmu Komputer Universitas saya:
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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.
sumber
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:
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
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.
sumber
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.
sumber