In-house versus Lingkungan pengembangan perangkat lunak [ditutup]

13

Dalam industri ini, ada perbedaan yang dibuat antara lingkungan 'pengembangan in-house' di mana pengembang perangkat lunak menulis kode yang akan digunakan oleh perusahaan itu sendiri dan lingkungan 'pengembangan perangkat lunak' yang tepat di mana perangkat lunak dibangun untuk dijual / didistribusikan kepada publik.

Di antara yang lain, satu perbedaan yang jelas antara keduanya adalah bahwa perusahaan yang berorientasi pengembangan perangkat lunak biasanya akan mengikuti semacam siklus hidup pengembangan perangkat lunak seperti penulisan spesifikasi, pengujian, pembangunan dll. Sedangkan toko yang berorientasi di rumah biasanya akan melakukan hal-hal dengan cara yang lebih kasual karena mereka sendiri adalah pengguna akhir dan selalu dapat memperbaiki sesuatu yang tidak dilakukan dengan benar.

Sebagai seorang mahasiswa (seperti kebanyakan siswa lainnya), saya agak berharap diri saya akan berakhir dengan bekerja di lingkungan pengembangan perangkat lunak, tetapi saya akhirnya mendapatkan posisi pertama saya di sebuah perusahaan yang beroperasi dengan lebih banyak cara in-house.

Kadang-kadang, saya bertanya-tanya apakah saya kehilangan pengalaman pengembangan perangkat lunak yang lengkap. Apakah ada dasar untuk perasaan ini? Haruskah saya berusaha bergabung dengan lingkungan pengembangan perangkat lunak yang tepat?

Isaac Kleinman
sumber
9
Saya pikir Anda terlalu generalisasi. Metodologi yang digunakan tidak ada hubungannya dengan produk in-house versus proyek yang dijual secara komersial. Saya telah bekerja pada produk yang dikirim yang dikembangkan sangat ad-hoc, mengabaikan banyak dari apa yang dianggap praktik terbaik. Saya juga telah mengerjakan proyek-proyek internal yang memiliki spesifikasi terperinci, rangkaian uji, dan sejumlah besar praktik kendali mutu.
Thomas Owens
Kedua pertanyaan yang Anda ajukan hanya dapat dijawab sendiri.
leo
6
IMHO, masalah Anda tidak ada hubungannya dengan kehilangan In-House vs perusahaan perangkat lunak. Anda terdengar seperti Anda menderita berada di lingkungan pengembangan yang tidak terstruktur dan tidak memiliki mentor yang kuat yang membantu Anda mengikuti praktik terbaik.
maple_shaft
1
Apakah perangkat lunak dikembangkan untuk dijual atau untuk penggunaan internal, itu semua disebut "pengembangan perangkat lunak." Komersial mungkin istilah yang lebih baik daripada apa yang Anda sebut 'pengembangan perangkat lunak'.
Caleb
1
Anda menggabungkan dua dimensi pengembangan perangkat lunak - proses pengembangan terstruktur ad-hoc vs, dan pengembangan in-house vs produk. Tingkat masing-masing dapat bervariasi secara independen.
Sean McMillan

Jawaban:

13

Dalam pengalaman saya, perbedaan yang Anda buat antara "di rumah" dan "produk yang dapat didistribusikan" adalah salah.

Ada perusahaan yang menganggap serius proses pengembangan perangkat lunak mereka dan yang tidak. Apakah mereka "di rumah" atau "yang dipesan lebih dahulu" atau "bungkus yang menyusut" cenderung tidak terlalu banyak (meskipun jika mereka adalah penyedia "bungkus yang menyusut", jika mereka tidak memiliki proses, mereka mungkin tidak akan berada dalam bisnis untuk panjang).

Anda harus mencari tempat yang memiliki standar pembangunan yang Anda cari - ketika mewawancarai Anda perlu menanyakan pertanyaan-pertanyaan ini untuk memastikan tempatnya sesuai dengan keinginan Anda dalam hal ini (dan juga lainnya).

Oded
sumber
Saya sedang menulis sesuatu yang mirip dengan ini ketika Anda memposting. Memberi +1 hanya untuk kalimat terakhir, meskipun itu semua adalah poin yang valid.
Thomas Owens
@ThomasOwens - Ya, melihat komentar Anda terhadap pertanyaan setelah memposting jawaban saya dan mengharapkan jawaban juga dari Anda;)
Oded
10

Anda dapat membaca artikel ini

http://www.joelonsoftware.com/items/2007/12/04.html

Joel Spolsky, yang persis berurusan dengan pertanyaan Anda.

Saya berada dalam posisi di mana saya harus bekerja pada kedua tahun terakhir - produk perangkat lunak berukuran sedang yang dijual, dan beberapa perangkat lunak internal. Dari pengalaman itu, saya bisa memberi tahu Anda ada perbedaan antara kedua platform itu, tetapi situasinya tidak seburuk yang dijelaskan Joel.

Misalnya, sebagian besar perangkat lunak internal kami hanya dapat berjalan di lingkungan yang sangat terbatas. Banyak alat yang hanya bekerja dengan spreadsheet atau versi database tertentu, dengan lingkungan jaringan tertentu, dengan jumlah pengguna terbatas, tidak diperlukan rutin instalasi dll. Itu membuat banyak hal lebih mudah dan lebih cepat untuk dikembangkan dibandingkan dengan fitur-fitur baru yang dimasukkan ke dalam produk pengiriman kami. Di sisi lain, itu tidak berarti kode saya untuk program "in-house" memiliki kualitas lebih rendah atau ditulis dengan cara yang lebih "santai".

Doc Brown
sumber
6

Beberapa waktu yang lalu, saya membaca sebuah buku tentang Agile Project Management (saya berharap saya bisa mengingat judulnya), di mana penulis membedakan sistem berdasarkan tingkat toleransi mereka terhadap cacat sistem. Toleransi untuk cacat dapat berkisar dari sangat tinggi - misalnya, utilitas yang digunakan oleh pengembang lain (di mana bug hanyalah ketidaknyamanan), hingga sangat rendah - misalnya, sistem yang menjalankan dukungan kehidupan untuk astronot (di mana bug dapat mengancam jiwa).

Maksud penulis adalah bahwa metodologi pengembangan (dan formalitas) perlu dicakup dengan toleransi kegagalan (atau kekritisan) sistem. Saya pikir perbedaan ini adalah yang paling penting, yang bertentangan dengan membedakan antara pengembangan in-house versus perangkat lunak untuk distribusi umum.

Bayangkan sebuah rumah sakit yang memiliki pengembang in-house membangun sistem rekam medis yang dapat memengaruhi kualitas perawatan medis. Dalam hal ini, toko internal mungkin akan lebih ketat daripada konsultasi situs web, yang sedang membangun produk web untuk digunakan oleh masyarakat umum.

Sam Goldberg
sumber
3

Saya pernah bekerja di perusahaan perangkat lunak, agen pemasaran, perusahaan telekomunikasi dan bank, satu hal yang akan saya katakan adalah budaya dan industri perusahaan yang menentukan tingkat proses yang diterapkan. Lingkungan yang paling ketat, lambat, terbatas dan teruji yang pernah saya alami adalah pengembangan in-house untuk sebuah bank. Yang paling santai adalah agen pemasaran.

Saya merekomendasikan belajar dari pengalaman ini dan menggunakannya untuk memutuskan arah masa depan Anda untuk pekerjaan Anda berikutnya. Industri pengembangan perangkat lunak bukanlah ilmu, seni / sains karena itu variasi dan perbedaan dari perusahaan ke perusahaan. Lebih penting Anda belajar melakukan hal yang benar terkait kode Anda. Meskipun membuat catatan mental tentang kegagalan atau kurangnya proses berguna, jadi ketika manajer Anda, Anda dapat menerapkan proses yang lebih baik.

Nickz
sumber