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?
sumber
Jawaban:
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).
sumber
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".
sumber
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.
sumber
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.
sumber