Meskipun bukan ide baru, tampaknya ada peningkatan besar dalam minat pengerjaan perangkat lunak selama beberapa tahun terakhir (terutama buku yang sering direkomendasikan judul lengkap Clean Code adalah Clean Code: A Handbook of Agile Software Craftsmanship ).
Secara pribadi saya melihat pengerjaan perangkat lunak sebagai rekayasa perangkat lunak yang baik dengan minat tambahan untuk memastikan bahwa hasil akhirnya adalah kesenangan untuk bekerja dengan (baik sebagai pengguna akhir dan sebagai seseorang yang memelihara perangkat lunak itu) - dan juga bahwa fokusnya lebih pada tingkat pengkodean hal daripada hal-hal tingkat proses yang lebih tinggi.
Sebagai analogi - ada banyak bangunan yang dibangun pada tahun 50-an dan 60-an dalam gaya yang sangat modern yang hanya memperhitungkan sedikit orang yang akan tinggal di dalamnya atau bagaimana bangunan itu akan menua seiring waktu. Banyak dari bangunan itu dengan cepat berkembang menjadi daerah kumuh atau telah dihancurkan jauh sebelum jangka hidup yang diharapkan. Saya yakin sebagian besar pengembang dengan beberapa tahun di bawah ikat pinggang mereka akan mengalami basis kode yang sama.
Apa hal spesifik yang mungkin dilakukan oleh pengrajin perangkat lunak yang mungkin tidak dilakukan oleh insinyur perangkat lunak (mungkin yang buruk)?
sumber
Jawaban:
Saya akan mengatakan satu-satunya perbedaan antara seorang profesional dan pengrajin adalah peduli dengan sedikit gairah bercampur . Tidak ada praktik khusus yang dapat diamati yang akan mengklasifikasikan seseorang sebagai pengrajin, melainkan kumpulan kualitas:
Sedikit gairah menutupi semua ini tanpa berkeringat.
sumber
Seperti yang pernah dikatakan oleh seorang profesor saya (diparafrasekan): "Sebagai seorang insinyur perangkat lunak, bukan hanya pekerjaan Anda untuk mengirimkan perangkat lunak. Tugas Anda adalah memberikan perangkat lunak yang membuat pelanggan Anda bahagia."
Tidak ada - seorang insinyur adalah pengrajin ... tetapi lebih. Teknik dibangun berdasarkan keahlian.
Sebagai pengrajin dan insinyur, Anda adalah individu yang terampil, melalui kombinasi antara pendidikan dan pengalaman. Anda mengikuti prosedur yang ditetapkan. Anda juga pragmatis dan menyadari apa yang rusak dan perlu menjadi lebih baik.
Namun, seorang insinyur menambahkan kekhawatiran ekonomi, teori, dan sains di atas itu. Anda prihatin dengan mendapatkan manfaat paling banyak dengan biaya paling murah. Anda ingin menerapkan teori-teori dari psikologi, sosiologi, manajemen, interaksi manusia-komputer, dan ilmu komputer untuk menyelesaikan masalah Anda (baik interpersonal dan teknis). Dan Anda pasti memiliki pendidikan untuk mendukung pengalaman Anda.
sumber
Gerakan pengerjaan perangkat lunak dimulai sebagai reaksi terhadap kegagalan dan hasil yang tidak memuaskan dari rekayasa perangkat lunak "tradisional" yang (bersama dengan kecerobohan beberapa pengembang) saat ini menyebabkan ketidakpercayaan dari para pemangku kepentingan dan pengguna terhadap profesi kami.
Tujuannya ada dua: mengembalikan kepercayaan pada programmer, dan untuk melakukannya, meningkatkan standar kualitas perangkat lunak dan keterampilan pengembang.
Keahlian Sw mempromosikan praktik-praktik teknis seperti:
Dan praktik tim / organisasi:
Jadi saya akan mengatakan perbedaan antara 2 jelas: pengerjaan perangkat lunak mencoba untuk mengatasi sebagian besar masalah rekayasa perangkat lunak telah ada di 40 + tahun keberadaannya yang hari ini membuat disiplin kita terlihat tidak dapat diandalkan dan dilumpuhkan dengan sejarah kegagalan.
sumber
Pergi oleh http://manifesto.softwarecraftsmanship.org/ Saya akan mendapatkan yang berikut ini.
Seorang pengrajin berbeda dari persepsi tradisional tentang seorang "insinyur" karena
sumber
Paman Bob entah bagaimana mengisyaratkan bahwa pemrograman adalah disiplin yang sangat muda yang belum memiliki badan hukum atau peraturan yang stabil yang diakui oleh pemerintah (atau apakah itu Frederick Brooks?). Saya tidak membuat kutipan verbatin di sini.
Anda tidak dapat mencabut izin siapa pun untuk memprogram karena malpraktek. Pemrograman tidak memiliki badan hukum dan peraturan yang secara hukum ditegakkan oleh undang-undang yang sesuai dengan "profesi". Seorang dokter membunuh seorang pasien karena ketidakmampuan dan ia mengambil risiko gelar dokter atau izin diambil darinya.
Seorang programmer membuat program buggy atau membuat proyek gagal karena ketidakmampuan dan dia bebas untuk melanjutkan pemrograman.
Saya pikir itulah yang membuat pemrograman menjadi kerajinan. Pembuat pot tanah liat tidak membuat dua pot yang sama. Anda juga belum pernah mendengar tentang pembuat pot tanah liat yang dipaksa untuk mengingat pot yang rusak. Pemrograman masih merupakan jenis pekerjaan yang sangat manual dan pribadi. Kadang-kadang Anda bahkan dapat mengetahui siapa yang menulis sepotong kode menilai dari gaya itu.
sumber
Refactoring Ke Pola.
Yaitu, membangun sesuatu yang memenuhi 90% dari persyaratan perangkat lunak, kemudian mengubah seluruh proyek menjadi beberapa desain yang bersih dan elegan.
Biasanya, rekayasa perangkat lunak akan mencegah Anda melakukan ini, karena memenuhi 90% dari persyaratan berarti bahwa perangkat lunak memiliki nilai bisnis yang cukup bagi pelanggan sehingga tidak boleh dimodifikasi dengan cara yang signifikan (kecuali perbaikan bug prioritas tinggi).
Rekayasa perangkat lunak sebaliknya akan menyarankan Anda untuk menstabilkan perangkat lunak pada saat ini.
Selain itu, jika sebuah proyek tidak dimulai dengan desain yang elegan sejak awal, itu akan dianggap sebagai proyek yang dilaksanakan dengan buruk (terlepas dari hasil proyek), menurut rekayasa perangkat lunak.
Solusi Spike.
Desain yang terinspirasi dari solusi spike biasanya tidak dapat diterima sesuai dengan metodologi rekayasa perangkat lunak yang berlaku.
Penghentian , karena alasan apa pun.
Dalam rekayasa perangkat lunak, segala jenis penghinaan diizinkan terjadi hanya pada akhir siklus hidup sistem perangkat lunak. Ini harus direncanakan sebagai bagian dari SDLC.
Dalam praktiknya, agak umum bahwa kekurangan bagian tertentu dari antarmuka perangkat lunak ditemukan beberapa tahun dalam produksi, dan bagian tertentu itu dapat ditinggalkan di tengah siklus kehidupan, tanpa membatalkan sisa perangkat lunak. Ini akan membutuhkan sertifikasi ulang seluruh sistem perangkat lunak setelah penghentian, menurut rekayasa perangkat lunak.
Pada akhirnya, pengerjaan perangkat lunak adalah upaya pribadi untuk penilaian yang baik dari individu, sedangkan rekayasa perangkat lunak adalah kumpulan pengetahuan yang konservatif. Mengizinkan penilaian yang baik dalam pengambilan keputusan proyek adalah apa yang membedakan pengerjaan perangkat lunak dari rekayasa perangkat lunak.
sumber
Saya akan mengatakan memiliki unit test yang mencakup 100% dari kode akan menjadi bagus. Karena itu memungkinkan kelebihan barang yang akan dilucuti.
Terkadang saya membandingkan pengembangan perangkat lunak dengan patung. Bukan apa yang Anda tambahkan, itu yang Anda ambil.
Jelas Anda bisa melangkah terlalu jauh. Tidak seorang pun akan mengatakan bahwa kerikil kecil yang mengkilap adalah patung yang bagus: S
sumber