Saya percaya itu. Mengapa?
Saya telah menemui banyak Insinyur Perangkat Lunak yang percaya bahwa mereka entah bagaimana lebih unggul daripada insinyur QA. Saya pikir ini dapat membantu menghilangkan kepercayaan ini jika mereka melakukan pekerjaan seorang insinyur QA untuk beberapa waktu, dan menyadari bahwa itu adalah keahlian yang unik dan berharga.
Semakin baik seorang Insinyur Perangkat Lunak menguji program mereka sendiri, semakin sedikit biaya dalam waktu yang dikeluarkan kode mereka saat menjalani siklus pengembangan perangkat lunak lainnya.
Semakin lama seorang Insinyur Perangkat Lunak menghabiskan waktu untuk memikirkan bagaimana suatu program dapat rusak, semakin sering mereka mempertimbangkan kasus-kasus ini saat mereka sedang mengembangkannya, sehingga mengurangi bug pada produk akhir.
Definisi "lengkap" dari Insinyur Perangkat Lunak selalu menarik ... jika mereka telah menghabiskan waktu sebagai insinyur QA, mungkin definisi ini akan lebih cocok dengan perancang perangkat lunak.
Catatan saya membuat saran di atas dengan kerangka waktu kecil dalam pikiran karena saya tahu seseorang bekerja di posisi yang bukan posisi mereka disewa jelas merupakan resep untuk kehilangan pengembang itu.
Apa yang kalian pikirkan?
sumber
Jawaban:
Rekayasa perangkat lunak yang baik memiliki latar belakang dalam kualitas, termasuk pengujian, metrik, dan statistik. Siapa pun yang melakukan pengembangan perangkat lunak apa pun harus sadar (jika tidak terbiasa) menjaga kode sumber yang berkualitas dan memproduksi / memelihara kotak uji yang efektif. Seiring waktu, saya akan curiga bahwa setiap pengembang perangkat lunak akan mendapatkan pemahaman tentang berbagai aspek kualitas - kualitas kode, portabilitas, rawatan, kemampuan uji, kegunaan, keandalan, efisiensi, dan keamanan.
Insinyur perangkat lunak mungkin fokus pada aspek tertentu dari siklus hidup - rekayasa persyaratan, arsitektur dan desain, konstruksi, pengujian, dan pemeliharaan. Namun, terlepas dari fokus Anda (baik sebagai pekerjaan atau pada fase proyek saat ini), penting untuk mengingat kualitas.
Itu mungkin benar. Tetapi beberapa masalah paling baik dilihat kemudian dalam pengembangan. Misalnya, masalah kinerja dan efisiensi mungkin tidak terlihat sampai integrasi. Memiliki kode yang baik, solid, dan unit test yang efektif hanyalah awal. Kualitas perlu dimulai dengan persyaratan, dan ikuti semua jalan melalui kegiatan pemeliharaan.
Itu pernyataan yang sepenuhnya benar. Tetapi sekali lagi, itu juga tergantung pada persyaratan insinyur untuk memverifikasi bahwa tidak ada konflik dalam persyaratan, arsitek untuk memastikan bahwa desain benar-benar memenuhi persyaratan, dan sebagainya. Setiap orang harus mencoba menyodok lubang dalam pekerjaan mereka dan kemudian bekerja dengan orang yang tepat untuk menutupnya dengan baik dan kencang.
"Lengkap" hanya dapat diukur terhadap persyaratan. Entah persyaratan dipenuhi dan proyek selesai, atau ada persyaratan tidak lengkap dan proyek tidak lengkap. Ukuran lengkap lainnya tidak berguna.
sumber
Membuat programmer bertanggung jawab atas kode mereka dan meminta mereka untuk memperbaiki bug mereka sendiri dapat mengatasi hal ini. Itu dan hilangnya bonus dan / atau pekerjaan.
Bukan berarti pengalaman ini tidak akan membantu, tetapi seberapa jauh Anda bisa melangkah dengan garis pemikiran ini? Dukungan Teknis, Penjualan, Pengguna Beta, gosok toilet (itu akan menjadi pengalaman yang merendahkan).
sumber
"... harus bekerja sebagai insinyur QA ..."? Anda membuatnya terdengar bermusuhan atau hukuman.
Saya seorang pengembang perangkat lunak. Saya menganggap itu bagian dari pekerjaan saya untuk menjadi insinyur QA juga, meskipun kami memiliki departemen QA. Adalah tugas saya untuk mengirimkan perangkat lunak yang menyelesaikan hal-hal tertentu, dan, untuk itu saya harus menulis unit test dan memastikan perangkat lunak melewatinya.
Saya bermitra dengan departemen QA kami. Tujuan saya adalah membuat pekerjaan mereka lebih mudah, sama seperti pekerjaan mereka adalah membantu saya memenuhi tujuan saya dalam memberikan perangkat lunak yang melakukan apa yang seharusnya, sehingga membuat hidup saya lebih mudah. Saya menganggap mereka sebagai mata kedua dan jaring pengaman, seperti halnya saya melakukan tes unit.
Saya memilih untuk mengembangkan perangkat lunak, dan ingin mengembangkan perangkat lunak. Jika beberapa manajer datang kepada saya dan mengatakan kepada saya bahwa saya tidak bisa melakukan itu dan harus melakukan QA, saya akan memberitahu mereka bahwa mereka perlu menemukan pengembang perangkat lunak baru DAN orang QA karena saya tidak akan bekerja di sana. Saya anal karena bisa dengan kode saya tetapi proses kreatif dan pemrograman teka-teki / tantangan sangat penting bagi saya. Saya lebih baik kembali ke mengendarai fork lift jika saya tidak bisa menulis kode karena berada di lingkungan perusahaan tanpa menjadi kreatif dan ditantang dengan cara saya akan benar-benar neraka bagi saya.
Secara umum opsi yang Anda berikan terdengar sangat bermusuhan dan membuat saya bertanya-tanya apakah Anda memiliki pengalaman yang sangat buruk dengan beberapa pengembang yang mengerikan. Dalam pikiran saya, seorang pengembang harus SELALU menyadari masalah kualitas dan pengujian dan harus cukup bangga dengan pekerjaan mereka sehingga mereka tidak menganggapnya selesai sampai melewati pengujian ketat dalam pengujian unit mereka seperti apa yang akan digunakan oleh departemen QA resmi. Jika saya memiliki rekan kerja, atau memimpin teknologi di sebuah tim dan memiliki pengembang yang menunjukkan "kebodohan" apa pun terhadap QA, dia akan mendapati saya menariknya untuk koreksi sikap. Jika kedua sisi koin pengiriman perangkat lunak tidak dapat bekerja sama dan bertindak sebagai tim, ada masalah budaya nyata. Saya tidak ingin bekerja di sana dan SDM, bersama dengan manajemen tingkat atas, perlu diberi tahu.
sumber
Membuat programmer bekerja sebagai insinyur QA adalah resep untuk kehilangan pengembang terbaik Anda. Pemrograman dan QA membutuhkan perangkat keterampilan dan proses pemikiran yang berbeda.
Namun, penting bagi programmer Anda terampil dalam seni pengujian dan memvalidasi pekerjaan mereka sendiri sebelum meneruskannya ke tim QA. Pengembang dan QA memiliki akses ke berbagai alat, pengetahuan, dan keterampilan. Para pengembang perlu terampil dalam melangkah melalui kode mereka mencari perilaku yang tidak terduga, pengujian unit untuk kondisi batas, menekankan kode berulir mencari kondisi ras dll. Yaitu Pengujian dari perspektif pengembang.
QA melakukan pengujian dari perspektif pengguna. Berpikir seperti jenis pengguna yang berbeda, menciptakan kasus tepi yang aneh, dan membuat masalah yang tidak jelas dapat direproduksi adalah keterampilan QA.
sumber
Tidak harus - programmer dan penguji diharuskan memiliki keterampilan yang berbeda. Hanya karena Anda seorang programmer yang baik tidak berarti Anda bisa menjadi tester yang baik (banyak orang tidak mengerti itu, tetapi menjadi seorang programmer tidak secara otomatis membuat Anda memenuhi syarat untuk menjadi seorang tester).
Penguji yang hebat perlu memiliki keterampilan yang benar-benar jahat, dapat melakukan hal-hal yang tidak dirancang perangkat lunak untuk dilakukan, tetapi dapat mengharapkan pengguna melakukannya di dunia nyata. Itu membutuhkan keterampilan, kesabaran, kemampuan untuk melihat apa yang salah di mana, pemahaman tentang mentalitas pengguna dan banyak faktor lainnya.
Perhatikan bahwa saya menggunakan kata programmer dan tester - tetapi jika Anda seorang insinyur perangkat lunak dan belum memutuskan apakah Anda ingin menjadi programmer atau tester, maka itu mencakup kedua hal ini dan karenanya ya, Anda harus memiliki pengalaman dalam keduanya setidaknya dalam beberapa tahun pertama hidup Anda sebelum mengambil keputusan.
Itu tidak berarti bahwa Anda mengambil programmer yang berpengalaman dan membuatnya menguji untuk sementara waktu hanya untuk membuatnya mengerti betapa sulitnya para insinyur QA bekerja.
sumber
Berikut adalah beberapa masalah potensial yang saya lihat dengan proposal Anda:
1) Jika Anda menyarankan agar Anda menempatkan insinyur perangkat lunak baru di lapangan ke departemen QA untuk tugas singkat, bukankah ini hanya memiliki efek sebaliknya? - mereka mungkin berasumsi bahwa QA adalah sesuatu yang Anda lakukan ketika Anda seorang pemula dan Anda tidak mengerti apa yang Anda lakukan - setelah semua, itulah cara kerjanya bagi mereka.
2) Menjadi penguji yang sangat buruk untuk sementara waktu tidak serta merta mengajari mereka sesuatu yang berharga. Tapi itu mungkin membuat mereka tidak bisa dijangkau nanti, karena mereka akan menganggap bahwa mereka tahu semua tentang pengujian sekarang, karena mereka menghabiskan 6 minggu di departemen pengujian sekali waktu.
3) Mengingat bahwa mereka jelas hanya akan berada di sana untuk waktu yang singkat, dan petugas QA akan mengetahui hal ini, kemungkinan besar mereka hanya akan diberikan tugas yang relatif ringan dan mudah yang membutuhkan sedikit pengawasan atau pemahaman, tetapi yang membuat mereka sibuk . Ini hanya akan memperkuat 1 dan 2.
4) Jika Anda ingin menghindari 1, 2, dan 3, bagaimana Anda akan meyakinkan departemen tes Anda bahwa ada baiknya menginvestasikan sejumlah besar energi untuk mengajar dan mengawasi seseorang yang bahkan tidak tertarik dalam pengujian? (Saya dapat memberi tahu Anda, dibutuhkan sejumlah waktu dan energi yang menakutkan untuk bekerja dengan seseorang yang, mari kita ingat, belum dipilih karena kemampuan pengujian mereka . Anda tidak menawarkan sumber daya tambahan tim uji selama beberapa minggu, Anda Sedang meminta mereka untuk kehilangan salah satu dari orang yang paling berpengalaman selama beberapa minggu, sementara mereka mengajar pemula Anda).
Setelah mengatakan semua itu, saya pikir tujuan keseluruhan Anda - untuk meningkatkan pemahaman pengujian perangkat lunak baru - benar-benar fantastis. Saya pikir saran Greg lebih mungkin untuk mencapainya - buat tim dev & QA Anda berkolaborasi secara erat bersama, dan bekerja untuk meruntuhkan penghalang di antara tim. (Saat ini saya bekerja di sebuah perusahaan di mana penguji dan pemrogram berada di tim yang sama - ini sangat bagus, dan saya tidak pernah ingin kembali bekerja di tim yang terpisah.)
Jika Anda masih ingin pemrogram melakukan tugas di QA - berikut ini sarannya: pimpin dengan memberi contoh. Pergi sendiri dulu. Mungkin membuatnya menjadi sesuatu yang anggota tim Anda bisa lakukan ketika mereka sudah bagus, dan ingin mendapatkan keunggulan tambahan, dengan menghabiskan sedikit waktu setiap minggu dengan tim lain yang berspesialisasi dalam bidang yang tumpang tindih - tes, DBA, dll. Jika Anda mempresentasikannya seperti itu, maka Anda akan memiliki lebih banyak peluang untuk sukses.
sumber
Saya telah memiliki semacam jalur karier yang merupakan kebalikan dari apa yang biasanya Anda lihat. Saya mulai sebagai dukungan perangkat lunak untuk fisika yang menantang secara ilmiah, kemudian akhirnya bekerja di persimpangan arsitektur, pemrograman, dan algoritma untuk perusahaan komputer. Setelah itu berlari saya melakukan optimasi kinerja kode teknik utama selama beberapa tahun, tetapi bahkan pekerjaan itu habis. Sekarang, bahwa saya mendekati usia pensiun saya melakukan QA pada kode yang sama. Ini adalah kombinasi dari tantangan, dan pekerjaan yang membosankan. Kami memiliki orang baru yang benar-benar tajam yang bekerja 100% untuk perbaikan bug, dan saya menghabiskan banyak bekerja dengannya. Ini adalah posisi yang menantang, dan Anda dapat belajar banyak dari melakukannya. Pada titik ini minat utama saya dalam pengembangan profesional adalah untuk anak laki-laki kembar saya, yang merupakan mahasiswa baru comp sci college. Jadi saya memiliki minat baru dalam belajar (atau belajar kembali) hal-hal yang akan relevan dengan karier mereka, terutama matematika terapan. Saya memiliki perspektif yang berbeda sekarang karena saya khawatir dengan QA / validasi, sedangkan untuk seperempat abad sebelumnya adalah kecepatan, kecepatan, kecepatan dengan biaya berapa pun.
sumber
Pengujian perangkat lunak adalah proses yang merusak daripada konstruktif. Tetapi programmer berpikir konstruktif untuk produk mereka untuk memastikan produk selesai tepat waktu dan sesuai anggaran. Jika pengembang perangkat lunak berpikir seperti merusak produk mereka sendiri maka siapa yang akan membangun produk selanjutnya. Jadi setiap bagian dari siklus pengembangan perangkat lunak harus dilakukan oleh orang-orang yang ditugaskan di setiap bagian siklus pengembangan. Jika Anda terlibat dalam dua atau lebih bidang maka itu yakin Anda tidak akan pernah sempurna pada salah satu dari mereka, jadi lakukan satu hal baik programmer atau QA atau opsi lain dan sempurna pada itu.
sumber